问答详情
源自:2-11 Java常量的应用

结果很奇怪

public class HelloWorld{
    public static void main(String[] args) {
  final char a='f';
     final char b='m';
  System.out.println(a+b);
 }
}

这个运行结果为什么是211??

 

提问者:qq_XL_14 2015-11-09 18:31

个回答

  • Perona
    2015-11-09 18:37:22
    已采纳

    输出char型如果中间直接是+,char型数据会被转换成int型数据。建议中间加个换行,或者分成2行输出。

    如:

    public class HelloWorld{
        public static void main(String[] args) {
          final char a='f';
          final char b='m';
          System.out.println(a+"\n"+b);
      }
    }

    或者

    public class HelloWorld{
        public static void main(String[] args) {
          final char a='f';
          final char b='m';
          System.out.println(a);
          System.out.println(b);
     }
    }


  • Perona
    2015-11-09 19:55:54

    它语言设计本来就是这样,字符是不能相加的,而字符和整形是可以转换的,字符的取值范围是0-65535,如果你把两个字符相加,那它会先转换为整形,再相加。

    至于怎么来转换,每个字符都对应一个ASCII值,也就是0-65535范围内的数。