码迷,mamicode.com
首页 > 编程语言 > 详细

Java学习笔记4

时间:2015-08-13 18:21:03      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

1、java中的“+”运算符不仅可以运算加减,而且可以实现字符串的拼接,例如 someString + someOtherString = aThirdString。严格来说,加法运算符和字符串拼接运算符是不同的,只是他们使用同一个符号:+。JVM能在运行上下文得知加号究竟是指加法运算符还是字符串拼接运算符。如果JVM判断出上下文是数字,它就执行加法运算;如果JVM判断出上下文是文本,它就执行字符串拼接运算。

int a = 1;
int b = 2;
int c = 3;
System.out.println(a + b + c);
System.out.println("a + b + c = "+ a + b + c);
System.out.println("a + b + c = "+ (a + b + c));


//运行结果
6
a + b + c = 123
a + b + c = 6


第一行的上下文是数字,因为println方法处理的第一个值是数字。第二行的上下文是文本,因为println方法处理的第一个值是字符串字面常量。第三行输出能得到正确的结果,是因为括号强制先执行加法运算,即使上下文是文本类型。

2、复合赋值运算的问题

int myInt = 2;
myInt *= (myInt = 4);
System.out.println(myInt);



打印语句之前的那个括号里的赋值语句是myInt = 4;你可能认为答案一定是4.若我们把myInt设置为4,然后再执行自乘运算,你可能认为答案是16.其实都是不对的,代码片段最终输出的是8,这个答案一看可能有点奇怪,但是一旦弄清楚了JVM处理复合赋值运算的机制,你就会明白了。JVM遇到复合赋值运算符时,知道myInt等于2.直到整个赋值运算符都解答了,myInt的值才会发生变化。顺便提一下,这是目前知道的唯一一个小括号没有最先处理的例子,因此第二行的代码里的赋值被忽略了,但是赋值的结果会被使用。最后的结果是2乘4,得到8.



Java学习笔记4

标签:

原文地址:http://my.oschina.net/dataRunner/blog/491959

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!