java编译器会自动将char值转换为int,这样的代码不会引发错误:
public void foo(int i){
// do something
}
char c = 'a';
foo(c);
是否有某种方法可以阻止编译器始终将char强制转换为int或引发错误?
答案 0 :(得分:2)
默认情况下,编译器会对提到的https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.2的原始类型进行扩展转换。
因此,它会自动将char转换为int。
您可以通过在foo中使用Integer来避免这种情况。 void foo(Integer i)
答案 1 :(得分:0)
您可以将Get-EventLog -LogName security -InstanceId 4624 -ComputerName $_Computer -Newest 5 | Export-Csv C:\Users\username\Documents\filename
类型的包装器class
用作如下所示的方法参数,
int
这将显示编译错误。
答案 2 :(得分:0)
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