java - 为什么 int 参数允许传递 char 值,但 char 参数不接受传递 int 值?

标签 java methods parameters char int

当我声明 Java 方法时,为什么 Java int 参数接受传递的 char 值,但 char 参数不接受传递的 int 值?

例如:

// method which : int parameter
public static void printInt(int input) { 
    System.out.println(input);
}
// method which : char parameter
public static void printChar(char input) {
    System.out.println(input);
}

// main 
System.out.println("----------------------------------------");
printInt('a');      // print 97 [number of ASCII char 'a']
                    // int parameter accept char value
printChar(97);      // compilation error
                    // char parameter NOT accept int value
System.out.println("----------------------------------------"); 

最佳答案

隐式转换

由于 int 足够大,可以容纳 char 的所有可能值,因此将执行自动转换 - 这称为隐式转换,并且因此,在使用 char 调用该方法时不需要执行任何操作。

您可以使用显式强制转换:

printChar((char)97);

但是要小心这种危险,除非您确定自己想要实现什么目标。

关于java - 为什么 int 参数允许传递 char 值,但 char 参数不接受传递 int 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355395/

相关文章:

java - 错误 SqlExceptionHelper - 整数值不正确

Java:通过调用方法打印三角形和空格

java - 使用也处理撇号的正则表达式匹配单词

java - 如何提高 Android 上的 Lottie 动画性能

ios - 在不调用 ViewDidLoad 的情况下从另一个类访问方法或属性?

java - 如何编写一个方法来计算数组中所有项目的总成本?

c - 如何修改已传递给 C 函数的指针?

java - 从 ExecutionContext 获取参数

c++ - 使用 boost::thread 将 const 指针参数传递给函数

Java Plugin升级到3.4版本后SonarQube分析中的java.lang.ClassCastException