为了账号安全,请及时绑定邮箱和手机立即绑定

为什么字符类型的常量不可以在输出的时候使用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);

 } 

}

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~
#1

洗心革面做码农 提问者

非常感谢!突然就明白了。
2017-04-24 回复 有任何疑惑可以回复我~

你可以这样输出: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 = '女';

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

洗心革面做码农 提问者

但是我单个输出字符类型的常量是正常的啊。没有也是一个数字的问题。求指教。 代码如下: 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 回复 有任何疑惑可以回复我~

public class HelloWorld{    

public static void main(String[] args)

     { final char SEX1='男'; 

       final char SEX2='女'; 

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

     } 

}

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信