为什么以下代码输出的是197而不是'bc'呢?
System.out.println('b' + 'c');
有人可以解释一下如何在Java中进行正确的连接吗?
附言:我学过一些Python,现在正在转学Java。
System.out.println('b' + 'c');
有人可以解释一下如何在Java中进行正确的连接吗?
附言:我学过一些Python,现在正在转学Java。
'b'
和'c'
不是String
类型的,它们是char
类型的。你应该使用双引号"..."
代替单引号:'...'。'System.out.println("b" + "c");
您得到了一个int
因为您正在将那些字符的Unicode值相加:
System.out.println((int) 'b'); // 98
System.out.println((int) 'c'); // 99
System.out.println('b' + 'c'); // 98 + 99 = 197
char
定义为 UTF-16 编码 Unicode 代码点的代码单元,而不是 ASCII 值。 - Mike Samuel'b'
不是 Java
中的 String
,而是 char
。因此,'b'+'c'
输出 197
。但是,如果您使用 "b"+"c"
将输出 bc
,因为 ""
用于表示 String
。
System.out.println("b" + "c"); // prints bc
+
连接字符会将char的值更改为ascii,从而产生数字输出。如果您想要输出bc
,则需要将b
和c
作为字符串。目前,在Java中您的b
和c
是char类型。""
括起来,而字符则用''
括起来。在Java中,字符串文字使用双引号表示- ""
你所做的是将两个char
值相加。你想要的是:
System.out.println("b" + "c"); // bc
chars
的ASCII值相加,得到了197
。
'b'
的ASCII值为98
,'c'
的ASCII值为99
。System.out.println('b' + 'c'); // 98 + 99 = 197
chars
的ASCII值的注释:
来自文档。然而,对于一个字节(0-255),据我所知,
char
数据类型是一个单一的16位Unicode字符。
chars
也可以用它们的ASCII值表示,因为ASCII值直接对应于Unicode代码点值 - 在这里查看。System.out.println("b"+"c");
System.out.println("b".concat("c"));
是的,单引号代表字符,双引号代表字符串,因此:
System.out.println("b" + "c");
"" + char1 + char2 + char3;
或者:
new StringBuilder().append('b').append('c').toString();
197
是b
和c
的 Unicode 值之和。在 Python 中,'b'
和'c'
是字符串,而在 Java 中它们是字符字面量。字符串字面量必须用双引号"
"
包含。Python 和 Java 在这方面有所不同。 - Grijesh Chauhan