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

常量类型不一样,分别为String和char的话,输出结果不一样,为什么呢?

将常量类型设置为String的话:

public class HelloWorld {

public static void main(String[] args) {

final String GENDER = "男";

final String GENDER2 = "女";

        System.out.println(GENDER+GENDER2);

}

}

输出结果很正常,是:“男女”;

但是如果类型是char:

public class HelloWorld {

public static void main(String[] args) {

final char GENDER = '男';

final char GENDER2 = '女';

        System.out.println(GENDER+GENDER2);


}

}

输出结果是很魔性的:52906

这是为什么呢,感觉好神奇,难道是编码问题?


正在回答

3 回答

char相加是编码相加

你需要写成System.out.println(""+GENDER+GENDER2),进行一次强制转换就是你要的结果了

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

wunianheng 提问者

谢谢老师,请问System.out.println(""+GENDER+GENDER2)中间的""是怎么起强制转化的作用的呀?
2015-12-07 回复 有任何疑惑可以回复我~
#2

Caballarii 回复 wunianheng 提问者

""是一个String类型的空字符串,""+Gender代表String和char相加,java会把char强制转化成String变成String和String相加,所以""+GENDER结果就是"男",同理,"男"+'女'结果就是"男女"了,记得给最佳答案谢谢
2015-12-07 回复 有任何疑惑可以回复我~
#3

wunianheng 提问者 回复 Caballarii

明白了!谢谢老师~已设为最佳答案
2015-12-07 回复 有任何疑惑可以回复我~

char本来就是int 类型储存的,+号在java有两种含义,1是运算 2字符串拼接

男女是拼接 52906是运算

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

wunianheng 提问者

谢谢您!
2015-12-07 回复 有任何疑惑可以回复我~
#2

qq_TY习惯_0

那是不是说 男+女就等于52906
2015-12-08 回复 有任何疑惑可以回复我~
#3

Irays 回复 qq_TY习惯_0

'男'+'女'==52906
2015-12-09 回复 有任何疑惑可以回复我~

而且你们看,要是将char类型的两个常量分别输出就没有问题了,如下:

public static void main(String[] args) {

final char GENDER = '男';

final char GENDER2 = '女';

        System.out.println(GENDER);

        System.out.println(GENDER2);

}

输出结果是:“男\n女”(\n是回车的意思)

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

Caballarii

因为单独输出时会转换为String类型输出,你可以看成System.out.println只能输出String类型,不是String类型就要转换成String类型
2015-12-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

常量类型不一样,分别为String和char的话,输出结果不一样,为什么呢?

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