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

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

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

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);

 } 

}

提问者:洗心革面做码农 2017-04-23 12:20

个回答

  • 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).

  • 慕圣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+”然后紧接着一组十六进制的数字来表示这一个字符,输出的数字就是该十六进制对应的十进制数字

  • 洗心革面做码农
    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就可以正常输出了。求大神指导下。