核心java打印语句

核心java打印语句,java,core,println,Java,Core,Println,为什么java编译器会给出 100a 当我尝试打印System.out.println('2'+'2'+'a')和 a22 对于System.out.println(“a”+'2'+'2')。请详细解释。谢谢)'2'是一个字符,因此'2'+'2'将该字符的int值添加到其自身(50+50),然后在其后面附加“a”,得到100a “+”2“+”2“执行字符串串联,因为第一个操作数是字符串。因此,得到a22 请注意,表达式是从左到右求值的,因此前两个操作数的类型决定+是执行整数相加还是字符串串联。试

为什么java编译器会给出

100a

当我尝试打印
System.out.println('2'+'2'+'a')

a22


对于
System.out.println(“a”+'2'+'2')
。请详细解释。谢谢)

'2'是一个字符,因此'2'+'2'将该字符的int值添加到其自身(50+50),然后在其后面附加“a”,得到100a

“+”2“+”2“执行字符串串联,因为第一个操作数是字符串。因此,得到a22

请注意,表达式是从左到右求值的,因此前两个操作数的类型决定+是执行整数相加还是字符串串联。

试试看

sysoutln(""+'2'+'2'+"a");
然后您可以看到
22a

当表达式中出现第一个字符串时,剩余的字符串将附加字符串。这意味着<代码> +<代码>被认为是级联操作。在表达式中出现字符串之前,该字符串将作为其自身的kick进行计算

这里您必须了解两件事

+运算符与至少一个字符串一起使用时,结果将为字符串。如果两者都是数字,结果将是数字(多态性

另一件事是,双引号表示字符串,其中单引号表示字符(内部表示ASCII int值)。
如果你正在做这个
System.out.println('2'+'2'+“a”)
这将简单地附加ascii值2,即50,就像它在单引号中一样,将其视为一个字符,两次变成100,最后加上“a”,变成100a。这里要考虑的是,参数以char值开始。


如果您这样做
System.out.println(“a”+'2'+'2')
,它只需将“2”附加到“a”上两次,因为它以字符串开头,“+”将在这里作为串联运算符工作,因此最终使其成为a22

这里您将获得ASCII值。 在'2'+'2'+a中,当它从左向右读取时,由于单引号,字符2的ASCII值为50,因此结果为100a。 在第二个场景System.out.println(“a”+'2'+'2')中,a是一个字符串(双引号),因此它包含该字符串,结果变为a22

以及System.out.println('a'+'2'+'2')的结果;是197:)

这里2代表char值,因为它在单引号内…所以您传递的“2”的值是50,所以它只需添加两个值(50+50=100),所以它在('2'+'2')的位置追加100…然后这里a是字符串,因为您使用双引号创建,所以它只在('2'+'2')的值后追加a…还请注意,如果您提供的内容是按原样打印的,则在双引号内,因此输出为100a

System.out.println("a"+'2'+'2');
这里它执行字符串连接,因为第一个操作数是string…所以得到的是a22..注意,在任何字符串操作数之后,如果您给出任何整数或字符值,它只将其作为字符串

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

我希望您现在能理解

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

2的ASCII值为50()

  • 操作员始终从左到右操作
此处“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值,并将其与最后一个字符串连接起来


系统。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');

在System.out.println(“a”+'2'+'2')中,由于第一个操作数是字符串文字,因此它被认为是字符串串联,因此输出为a22。

'2'
50
作为
int
值。当添加
char
s时,它们被扩展到
int
而不是java中的“sysout”@你当然可以原谅他的速记。他清楚地知道这一点,因为他的文本实际上是在打印…@GyroGearless,我为choas感到抱歉。谢谢杰西·谢拉巴格。我只是用java速记print语句。@jagaDsh速记对编译器不起作用,在这里也不起作用。太好了。这就是我所期望的。。ThanksSystem.out.println('2'+'2'+“a”)给出100a,根据您的解释应该是“22a”。因此+运算符检查L2R中的第一个操作数,并确定要执行的操作。@zyteinit请注意,在表达式“2'+'2'中,两者都不是字符串。事实上,它是一个简单的整数加法,其中“2”代表ASCII值50。