第三章控制程序流程(Controlling Program Flow)

来源:互联网 发布:unity3d用的什么语言 编辑:程序博客网 时间:2024/05/01 04:27
java运算符(operator

l       java用运算符来控制数据,用执行控制语句来决定

l       绝大部分运算符作用于基本类型(primitive type),但是“=”、“==”、“!=”可以作用于任何对象,此外,String类也支持“+”和“+=

l       赋值使用“=”,如果是基本类型,比如A=B,是把B中的内容复制一份放到A中,而如果是物体对象,比如C=D,那么只是复制reference,把CD都指向D,简单地说,如果是基本类型,那么A=B之后,AB是各自的储存空间,改变任意一个都不会影响另一个,而如果是物体对象,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++不同,ANDORNOT只能用于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       charbyteshort进行移位时,会自动提升为int,但如果是byteshort移位后可能会不准确

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类型只能是赋给truefalse,或者检验是否为真和假,不能进行加减,不能进行别的运算

l       强制转换只能由小到大,不能由大到小的转换

流程控制

l       java不允许使用数字做为判断条件,必须使用boolean类型,比如if2)是不允许的

l       do-whilewhile的区别在于,前者至少执行一次,后者则要根据判断语句来执行

l       java中没有goto语句,但是和循环使用的breakcontinue结合使用了

label1:       continue label1;         break label1;

l       java中使用label的唯一理由是:想要循环体中的continuebreak越过一层以上的循环体

l       switch …caseswitch表达式一定是能识别出整数值的表达式,非整数类别不行

l       floatdouble转换成int型,是完全舍弃小数部分,而不是四舍五入