class example{
public static void main(String door[]){
int var1=10;
int var2=20;
System.out.println(var1+var2+++""+var2);}
}
结果是3021
但我理解应该是1020 21因为println不是把里面的整数转换为自负串了吗?var1+var2又没括号
头大了~~~~~~~~~请指点一下~~
public static void main(String door[]){
int var1=10;
int var2=20;
System.out.println(var1+var2+++""+var2);}
}
结果是3021
但我理解应该是1020 21因为println不是把里面的整数转换为自负串了吗?var1+var2又没括号
头大了~~~~~~~~~请指点一下~~
System.out.println(var1+var2+++""+var2);
两个int写在前面,当然是先加了.而++是后置运算符,所以前面加后是30,然后var2++是21,而后面30+""变成字符串,再加var2后还是字符串.
first -->var1+var2 -->30
second -->var2++ -->21
third -->30+"" --> "30"
final --> "30"+"21" --> "3021"
-------------------------------------
System.out.println(var2++);
System.out.println(var2);
调用这两句看看你就知道了从语言使用上来说,先使用var2的值,然后var2自身加1
从编译器的角度上来说,先把var2的值压栈,然后var2自加1,然后原来的值退栈继续进行相关的操作
很简单的例子
int i = 0;
i = i++;
你说这个结果是什么?
(10+((20)++))+""+21
=3021
当++ 在前就是先自加运算后取值. 例如 a=1,b=2, a+++b结果是4,a是1,b是3
当++ 在后就是先取值后自加运算. 例如 a=1,b=2, a+b++结果是3,a是1,b是3
因为++ 的运算优先级 比 + 高.其二:运算符(+) 比 字符连接符(+) 优先级高我想现在应该很清楚为什么这样子了.我们要对基本的知识有一个清楚的了解!
当“+”的时候碰到字符串后,就会把int的后面当字符串处理
哈哈,这不是位运算!我上了楼住的当了!开个玩笑!