如何阻止Java自动将char值转换为int?
java编译器会自动将char值强制转换为int,这样的代码不会引发错误:如何阻止Java自动将char值转换为int?,java,casting,Java,Casting,java编译器会自动将char值强制转换为int,这样的代码不会引发错误: public void foo(int i){ // do something } char c = 'a'; foo(c); 是否有某种方法可以阻止编译器始终将字符强制转换为int或抛出错误?默认情况下,编译器会对所述的基元类型进行扩展转换 因此,它会自动将char转换为int 您可以通过在foo中使用Integer来避免它void foo(整数i)您可以使用int类型的包装器类作为方法参数,如下所示 pub
public void foo(int i){
// do something
}
char c = 'a';
foo(c);
是否有某种方法可以阻止编译器始终将字符强制转换为int或抛出错误?默认情况下,编译器会对所述的基元类型进行扩展转换 因此,它会自动将char转换为int
您可以通过在foo中使用Integer来避免它
void foo(整数i)
您可以使用int
类型的包装器类
作为方法参数,如下所示
public void foo(Integer i){
// do something
}
char c = 'a';
foo(c);
这将显示编译错误。Java正在使用传递给函数的字符的ASCII代码 因此,代码如下:
char c = 'a';
foo(c);
public void foo( int i){
System.out.println(i);
}
将有一个输出:97
,这是int中的“a”字符等效值
此外,如果表达式[右侧]是byte、short、char或int类型的常量表达式:
- 如果变量的类型为byte、short或char,并且常量的值为 表达式可以用变量的类型表示
int
在java中是一种基本类型,但我们可以使用包装类,如Integer,Character,
因此,您可以使用:
public void foo( Integer i){
System.out.println(i);
}
它将抛出一个异常:
java: incompatible types: char cannot be converted to java.lang.Integer
void foo(整数i)
不接受字符值。你为什么要这么做?