为啥加双引号就是a1不加就是98,有没有人知道,加号如果是字符串连接符那两个结果不是应该一样吗?,有没有人知道是咋回事情?

img

img


差了一对双引号为啥一个是a1一个是98,加号如果是字符串连接符两个结果不是应该一样吗?为啥差了一对双引结果就不一样,原理是什么?怎么解释?

第一个全当字符串处理了
第二个a的ascii码是97,当数字想加了,输出的是整形
和这个相似,看下编译后的代码

img

很简单啊,你加了双引号,后面的加法就被视为字符串相加了,后面的字符a和数字1都会自动转换为字符串进行相加,所以是字符串a1
去掉双引号,那就是'a'+1,会被认为是两个整数相加,就是98

第一个就是相当于字符串的拼接 双引号是空字符串 + 'a' 就相当于字符串的拼接 a也会被当作字符串拼接进去
第二个是纯正的单引号 a 就相当于 a+1 在Java里面单引号的a是以ASCII码的形式存在的,也就是说a的ascii码是97,97+1之后就是98了

""+'a'+1等价于((""+'a')+1),其中""是字符串,因此后面+按字符串拼接处理,得到的结果就是字符串
'a'+1中'a'是字符,字符是整型,其值是97,后面的+因此按整型加法计算,故得98

数据类型排序:字符串>整型>字符,在运算时,向最大数据类型靠齐

第一个全当字符串处理了
第二个a的ascii码是97,当数字想加了,输出的是int

输出开始有字符串,后面的都会当成字符串来处理进行拼接。没有字符串也就是双引号,就按逻辑该加就加该减就减。

数据类型排序:字符串>整型字符

1.在java中,其他基本类型例如整形int,浮点数float,char字符等等加上双引号就会变成字符串类型直接显示啥就打印啥
所以char类型字符'a'和整数1加上双引号后就变成字符串直接打印出a1


2.char类型字符,如果直接打印,则会打印他的ascll码,'字符a'的ascll码是97,加上1之后,就会打印出97