为什么以下打印197,而不是'bc'?
System.out.println('b' + 'c');
有人可以解释如何在Java上进行适当的连接吗?
P.S。我学习了一些Python,现在转而学习Java。
答案 0 :(得分:6)
'b'
和'c'
不是String
,而是char
。您应该使用双引号"..."
代替:
System.out.println("b" + "c");
您收到int
,因为您要添加unicode values这些字符:
System.out.println((int) 'b'); // 98
System.out.println((int) 'c'); // 99
System.out.println('b' + 'c'); // 98 + 99 = 197
答案 1 :(得分:1)
'b'
不是String
Java
char
。然后'b'+'c'
打印197
。
但如果您使用"b"+"c"
,则会打印bc
,因为""
用于表示String
。
System.out.println("b" + "c"); // prints bc
答案 2 :(得分:1)
使用+
连接字符会将char的值更改为ascii,从而提供数字输出。如果您希望bc
作为输出,则需要将b
和c
作为字符串。目前,您的b
和c
是Java中的char。
在Java中,字符串文字应该被""
包围,字符被''
包围
答案 3 :(得分:1)
是单引号是Char,而双引号代表字符串,所以:
System.out.println("b" + "c");
一些替代方案可以是:
"" + char1 + char2 + char3;
或:
new StringBuilder().append('b').append('c').toString();
答案 4 :(得分:1)
在Java中,字符串文字用双引号表示 - ""
您所做的是将两个char
值相加。你想要的是:
System.out.println("b" + "c"); // bc
您的代码发生的情况是,它添加了chars
的{{3}}值来提出197
。
'b'
的ASCII值为98
,'c'
的ASCII值为99
。
所以它是这样的:
System.out.println('b' + 'c'); // 98 + 99 = 197
作为注释,我参考了chars
:
char数据类型是一个16位Unicode字符。
来自ASCII。但是,对于一个字节(0-255),据我所知,chars
可以也用它们的ASCII值表示,因为ASCII值直接对应于Unicode代码点价值观 - Docs。
我在上面的答案中引用ASCII值的原因是因为256个ASCII值涵盖了所有字母(大写和小写)和标点符号 - 因此它涵盖了所有主要内容。
从技术上讲,我所说的是正确的 - 它确实添加了ASCII值(因为它们与Unicode值相同)。但是,从技术上讲,它会添加Unicode代码点十进制值。
答案 5 :(得分:1)
'b'和'c'不是字符串,而是字符。 197是b和c的unicode值之和
对于Concatinating String,您可以使用以下两种方式:
System.out.println("b"+"c");
System.out.println("b".concat("c"));