1.操作符:+、-、*、/、%、+=、-= 、>、<、......
2.优先级:一般是先乘除后加减,()的优先级最大
3.String类型后面如果跟了一个+,且+后面是非String类型,这编译器会将+后面的非String类型转换为String类型,在拼接起来
4.赋值:赋值是通过“=”操作符。
- 基本类型存储的就是实际的值,并非指向一个对象的引用,给基本数据类型赋值就是将一个地方的内容赋值到另外一个地方
- 对象:将一个对象赋值给另一个对象,实际上是将一个对象的引用赋值给另一个对象的引用(称为别名现象),如a=b,这时两个对象的引用指向同一个对象(都指向b的对象,a的引用被b覆盖了,剩下的那个a对象则会被垃圾回收器回收),当改变其中一个对象的属性,另外一个对象的属性也会改变。若不想这样,可以a.id = b.id这种形式,但这种形式是直接操作对象的域,容易导致混乱,同时也违背了面试对象程序设计原则。
5.递增,递减
- ++a和--a表示想先计算在赋值
- a++和a--表示先赋值在计算
6.==和!=和equals()
- ==和!= 比较的是对象的引用
- equals()比较的是字符串内容是否相等
7.短路现象:一旦明确无误的计算某个表达式的值时,就不再计算该表达式的其它部分。
例:a=3;b=4;c=5
if(a<4&&b>5&&c<5)
{ ...}表达式计算到b>5后就不执行后面的c<5了,因为b>5是false,&&表示都为真时,才为 真,有一个为false就为假