Core java 打印语句

Core java printing statement

为什么 java 编译器给出

100a

作为我曾尝试打印 System.out.println('2'+'2'+"a")

时的输出

a22

System.out.println("a"+'2'+'2')。请详细解释。谢谢)

'2' 是一个字符,所以 '2' + '2' 将该字符的 int 值添加到自身 (50+50),然后将 "a" 附加到它,给你 100a.

"a" + '2' + '2' 执行字符串连接,因为第一个操作数是字符串。因此你得到 a22.

请注意,表达式是从左到右计算的,因此前两个操作数的类型决定了 + 将执行 int 加法还是 String 连接。

尝试一下

sysoutln(""+'2'+'2'+"a");

然后就可以看到22a了。 当表达式中出现第一个字符串时,剩余的将追加字符串。这意味着 + 被视为串联操作。在表达式中出现字符串之前,它将评估为它自己的踢

这里你必须明白两件事。

+ 运算符与至少一个字符串一起使用时,结果将为字符串。如果两者都是数字,则结果将为 number(Polymorphic).

另一件事是,双引号表示字符串,而单引号表示字符(在内部表示 ASCII int 值)。 希望这有帮助

如果你这样做 System.out.println('2'+'2'+"a") 这将简单地附加 2 的 ascii 值,即 50,因为它在单引号中,将其视为一个字符,两次变为 100,最后附加 "a"最后变成了100a。这里要考虑的是参数以字符值开头。

如果你这样做 System.out.println("a"+'2'+'2') 它只会将 '2' 附加两次到 "a" 因为它以 String 开头,'+' 将在这里作为连接运算符工作,所以使终于 a22

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 :)

System.out.println('2'+'2'+"a");

此处 2 表示 char 值,因为它在单引号内...所以您传递的值 '2' 是 50 所以它只是添加两个值 (50+50=100) 所以它附加100 在 ('2'+'2') 的位置.. 然后这里的 a 是字符串,因为您使用双引号创建了它,所以它只是在 ('2'+'2') 的值之后附加 a。 ..还要注意,如果你给出的东西是在双引号内,它会按原样打印出来......所以输出是 100a

System.out.println("a"+'2'+'2');

这里它执行字符串连接,因为第一个操作数是字符串...所以你得到 a22..请注意,在任何字符串操作数之后,如果你给出任何整数或字符值,它只会将其作为字符串..

在第一个语句中,您的第一个操作数是 char,因此添加了两个 char 值,然后它执行字符串连接,但在第二个语句中,您的第一个操作数本身是字符串,因此这就是两者之间的差异。

希望你现在明白了

在“”中输入的文本标记为字符,“”中标记为字符串。

2 的 ASCII 值为 50 (http://ascii.cl/index.htm?content=mobile)

  • 操作员总是从左到右操作

此处 'a' 将被视为 int 并考虑其 ASCII 值。

  • 运算符还根据结合性充当连接,例如 3+4+"a" = 7a 和 "a"+3+4 = a34

因此 '2'+'2+'a' = 100a

注:
单引号:char,
双引号:字符串

如果您首先对数学运算符使用单引号,而不是在单引号之前使用字符串。然后,编译器使用它们的 ascii 值。

例如:

'2'+'2' = 100
"2"+'2' +"a"= 22a

'a'+'a' = 194
"a" +"a" = aa

'a' +'2' = 147
"a" + '2' = a2

编译器显式地将您的“2”转换为 int 值并将其与最后一个 String.Instead 连接使用此代码;

系统。 out.println ("2"+"2"+"a");

Java 使用 Unicode 来表示字符。

在System.out.println('2'+'2'+"a")中,第一个操作数是char'2',它的Unicode(ASCII)值是50。所以它加起来是100,然后与字符串文字 "a" 连接。所以输出是 100a

在System.out.println("a"+'2'+'2')中,由于第一个操作数是字符串字面量,因此被认为是字符串连接,因此输出为a22。