如何阻止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

java编译器会自动将char值强制转换为int,这样的代码不会引发错误:

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)
不接受字符值。你为什么要这么做?