为什么字符类型的常量不可以在输出的时候使用System.out.println(SEX1+'\n'+SEX2);

来源:2-11 Java常量的应用

洗心革面做码农

2017-04-23 12:20

为什么字符类型的常量不可以在输出的时候使用

System.out.println(SEX1+'\n'+SEX2);

这种来输出。这样写会输出一串数字 

代码如下: 

public class HelloWorld{    

public static void main(String[] args)

 { final char SEX1='男';

 final char SEX2='女'; 

 System.out.println(SEX1+'\n'+SEX2);

 } 

}

写回答 关注

4回答

  • qq_嗷嗚_0
    2017-04-23 15:37:30
    已采纳

    char类型的字符会自动转变为int型,System.out.println(SEX1+'\n'+SEX2)中'\n'为char型,不是换行符,所以SEX1+'\n'+SEX2是进行编码相加了,应该变为System.out.println(SEX1+“\n”+SEX2).

    洗心革面做码...

    非常感谢!突然就明白了。

    2017-04-24 11:37:55

    共 1 条回复 >

  • 慕圣0830664
    2017-04-23 15:50:18

    你可以这样输出:System.out.println(SEX1+"\n"+SEX2);  "\n"表示的是输出换行,'\n'表示一个字符。

    在这里 System.out.println(SEX1+'\n'+SEX2); ()里面的SEX1, '\n',SEX2都是字符类型,由于是同一类型,自然都可以相加,相加的是它们在Unicode编码中与之对应的数字。输出的是 ('男'的Unicode编码)+('\n'的Unicode编码)+('女'的Unicode编码) 之和。

    System.out.println(SEX1); 这里输出的是,SEX1所对应的内容,即前面定义的 SEX2 = '男';

    System.out.println(SEX2); 这里输出的是,SEX2所对应的内容,即前面定义的 SEX2 = '女';

  • rznl
    2017-04-23 12:45:58

    java中汉字编码是Unicode,在表示一个Unicode的字符时,通常会用“U+”然后紧接着一组十六进制的数字来表示这一个字符,输出的数字就是该十六进制对应的十进制数字

    洗心革面做码...

    但是我单个输出字符类型的常量是正常的啊。没有也是一个数字的问题。求指教。 代码如下: public class HelloWorld{ public static void main(String[] args) { final char SEX1='男'; final char SEX2='女'; System.out.println(SEX1); System.out.println(SEX2); } }

    2017-04-23 13:08:34

    共 1 条回复 >

  • 洗心革面做码农
    2017-04-23 12:28:28

    public class HelloWorld{    

    public static void main(String[] args)

         { final char SEX1='男'; 

           final char SEX2='女'; 

           System.out.println(SEX1+'\n'+SEX2);

         } 

    }

    但是把常量类型更换为String就可以正常输出了。求大神指导下。

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165574 学习 · 17587 问题

查看课程

相似问题