为什么java编译器会给出
当我尝试打印100A
System.out.println('2'+'2'+"a")
和时输出
A22
代表System.out.println("a"+'2'+'2')
。请详细解释。谢谢你)
答案 0 :(得分:14)
'2'是一个字符,所以'2'+'2'将该字符的int值添加到自身(50 + 50)然后将“a”添加到它,给你100a。
“a”+'2'+'2'执行字符串连接,因为第一个操作数是字符串。因此你得到了a22。
请注意,表达式是从左到右计算的,因此前两个操作数的类型决定了+是执行int添加还是字符串连接。
答案 1 :(得分:2)
你必须在这里理解两件事。
+ 运算符与至少一个字符串一起使用时,结果将为字符串。如果两者都是数字,结果将是数字(多态)。
另一方面,双引号表示字符串,其中单引号表示字符(内部表示ASCII int值)。 希望这有帮助
答案 2 :(得分:1)
尝试一下
sysoutln(""+'2'+'2'+"a");
然后你可以看到22a
。
当表达式中出现第一个字符串时,剩余将附加字符串。这意味着+
被视为连接操作。在表达式中出现字符串之前,那将作为自己的反应评估
答案 3 :(得分:1)
如果你这样做System.out.println('2'+'2'+"a")
,这只会附加ascii值2,即50,因为它在单引号中,将其视为char,两次变为100,最后附加&#34 ;一个"最终变得 100a 。这里要考虑的是参数以char值开头。
如果你这样做System.out.println("a"+'2'+'2')
,它只会附加' 2'两次到" a"因为它以字符串和' +'开头。将作为连接运算符在此处工作,最后使其成为 a22
答案 4 :(得分:1)
在''标记为char和“标记为字符串。
中输入的文本2的ASCII值为50(http://ascii.cl/index.htm?content=mobile)
这里'a'将被视为int并考虑其ASCII值。
因此'2'+'2 +'a'= 100a
答案 5 :(得分:1)
注意:
单引号:char,
双引号:字符串
如果您使用单引号首先使用数学运算符而不使用单引号之前的字符串。然后,编译器使用它们的ascii值。
例如:
'2'+'2'= 100
“2”+“2”+“a”= 22a
'a'+'a'= 194
“a”+“a”= aa
'a'+'2'= 147
“a”+'2'= a2
答案 6 :(得分:1)
编译器显式地将您'2'转换为int值并将其与最后一个String连接。请使用此代码;
系统。 out.println(“2”+“2”+“a”);
答案 7 :(得分:0)
https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html
在这里您将获得ASCII值。 在' 2' +' 2' + a中,由于单引号,因此从左到右读取字符2的ASCII值为50,因此结果变为100a。 在第二个场景System.out.println(" a" +' 2' +' 2')中,a是一个字符串(双引号),所以它是包含字符串和结果变为a22。
System.out.println的结果(' a' +' 2' +' 2');是197:)
答案 8 :(得分:0)
System.out.println('2'+'2'+"a");
这里2表示char值,因为它在单引号内...所以你传递的值为' 2'是50,所以它只是添加两个值(50 + 50 = 100),所以它在(' 2' +' 2')的位置附加100 ..然后在这里a是字符串,因为你是通过使用双引号创建的,所以它只是在(' 2' +' 2')的值之后附加a ...并且还注意如果你在内部双引号正在给它打印的东西......因此输出是100a
System.out.println("a"+'2'+'2');
这里它执行字符串连接,因为第一个操作数是字符串...所以你得到a22..note,在任何字符串操作数之后,如果你给出任何整数或字符值,它只是把它作为字符串..
在第一个语句中,你的第一个操作数是char,所以两个char值都被添加,然后它执行字符串连接,但在第二个语句中你的第一个操作数本身就是字符串,这样就是这两个操作数之间的差异。
我希望你现在明白
答案 9 :(得分:0)
Java使用Unicode来表示字符。
在System.out.println('2'+'2'+“a”)中,第一个操作数为char'2',其Unicode(ASCII)值为50.因此它最多加100,然后连接用字符串文字“a”。所以输出是100a
在System.out.println(“a”+'2'+'2')中,由于第一个操作数是字符串文字,因此它被认为是字符串连接,因此输出为a22。