洗心革面做码农
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);
}
}
char类型的字符会自动转变为int型,System.out.println(SEX1+'\n'+SEX2)中'\n'为char型,不是换行符,所以SEX1+'\n'+SEX2是进行编码相加了,应该变为System.out.println(SEX1+“\n”+SEX2).
你可以这样输出: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 = '女';
java中汉字编码是Unicode,在表示一个Unicode的字符时,通常会用“U+”然后紧接着一组十六进制的数字来表示这一个字符,输出的数字就是该十六进制对应的十进制数字
public class HelloWorld{
public static void main(String[] args)
{ final char SEX1='男';
final char SEX2='女';
System.out.println(SEX1+'\n'+SEX2);
}
}
但是把常量类型更换为String就可以正常输出了。求大神指导下。
Java入门第一季(IDEA工具)升级版
1165574 学习 · 17587 问题
相似问题