l java用运算符来控制数据,用执行控制语句来决定
l 绝大部分运算符作用于基本类型(primitive type),但是“=”、“==”、“!=”可以作用于任何对象,此外,String类也支持“+”和“+=”
l 赋值使用“=”,如果是基本类型,比如A=B,是把B中的内容复制一份放到A中,而如果是物体对象,比如C=D,那么只是复制reference,把C和D都指向D,简单地说,如果是基本类型,那么A=B之后,A和B是各自的储存空间,改变任意一个都不会影响另一个,而如果是物体对象,C=D之后,改变C也会改变D,改变D也会改变C内容
l 物体对象C=D现象通常被称为“aliasing(别名)”,这是java对于物体的基本处理模式,如果不希望这样,那么应该直接让其内部数据成员复制,比如C.i=D.i自动递增和自动递减
l 递增和递减不但修改变量的值,还会把这个值返回给此变量
l 前置(prefix):操作过程是先运算再返回
l 后置(postfix):操作过程是先返回再运算
l 关系运算符(6种):<、>、<=、>=、==、!=,最后两个可以作用于所有内建类别
l 对于物体对象,==和!=是比较的Object reference,要比较两个对象的实际内容,必须使用每个类都有的,专门的equals()方法
l 与C/C++不同,AND、OR、NOT只能用于Boolean值,不能用于非Boolean值,比如!I
l 如果把boolean值当作String来使用,会被自动转换成相应的文本,可以把int换成除boolean之外的任何基本数据
l short circuiting短接 无须对后面的语句就能做出判断其逻辑值
if((i>0)&&(j>0)&&(k>0)) 如果第一个i>0不成立,那么整个就为false了
l 位运算:&与运算 |或运算 ^异或运算 ~非运算
l Boolean值不能进行非运算,不能移位
l char、byte、short进行移位时,会自动提升为int,但如果是byte或short移位后可能会不准确
l <<左移,底位用零填充;>>右移,如果这个数为正,高位用0填充,如果为负,高位用1填充;java有不带正负号的右移>>>,无论正负号,高位均填充0
l 三目运算,比如 3<4?I=7:I=8
l java允许你将任意一种基本类型转换成另一种基本类型,但是boolean型不能接受强制转换,class对象也不能接受的
l float f1=1F; float f2=1e-45f 表示1*10的-45次方,还会转换成double型
l java的每一中基本类型都有相同的容量大小,所以不用使用sizeof()函数,也没有
l boolean类型只能是赋给true和false,或者检验是否为真和假,不能进行加减,不能进行别的运算
l 强制转换只能由小到大,不能由大到小的转换流程控制
l java不允许使用数字做为判断条件,必须使用boolean类型,比如if(2)是不允许的
l do-while和while的区别在于,前者至少执行一次,后者则要根据判断语句来执行
l java中没有goto语句,但是和循环使用的break和continue结合使用了
label1: continue label1; break label1;
l java中使用label的唯一理由是:想要循环体中的continue或break越过一层以上的循环体
l switch …case其switch表达式一定是能识别出整数值的表达式,非整数类别不行
l 从float或double转换成int型,是完全舍弃小数部分,而不是四舍五入