《Java编程思想》学习笔记03,控制程序流

1,大部分操作符只能操作基本类型(原语),只有===和!=可以操作对象,另外弦支持+和+=

2,在=两边,右值(右值)可以是常数,变量或表达式,左值(左值)必须是一个变量,即必须有物理空间来存储右值

3,对基本类型赋值,是将一个地方的内存复制到了另一个地方

[@more@]

1,大部分操作符只能操作基本类型(原语),只有===和!=可以操作对象,另外弦支持+和+=

2,在=两边,右值(右值)可以是常数,变量或表达式,左值(左值)必须是一个变量,即必须有物理空间来存储右值

3,对基本类型赋值,是将一个地方的内存复制到了另一个地方

4,为对象赋值时,只是将引用从一个地方复制到另一个地方,如对象a和b,使a=b,则a和b两个引用操作同一个对象,使用我改变对象中我的值后,打印我,可以看到也被改变了

5,向方法中传递一个对象做参数,实际传递的是对象的引用,所以方法中对对象所做的修改,在方法外仍然持续有效。

6,整数除法会直接去掉结果的小数位,不会进行四舍五入进位

7,用==和!=来比较引用时,指向同一对象的引用相等,否则不等

8,若要比较两个引用指向的两个对象内容是否相等,使用.equal()方法,自定义类型需要自行重载.equal()函数,否则.equal()函数默认比较引用,只有jdk自带类型的.equal()可以直接使用

9日逻辑与,逻辑或,逻辑非(& &,| |,!)操作只可以应用于布尔值,不可用于比较非布尔值

10,布尔可以自动转成字符串

11、短路(短路)现象:一旦能够明确无误的确定整个表达式的值,程序就不再计算表达式余下的部分了,因此,一个逻辑表达式靠后的部分可能不会被运算。所以要注意是否在逻辑表达式中对变量值进行了修改操作,如果这一部分表达式没有运算,值也就没有被修改

12位操作符(按位运算符):按位与(&),按位或(|),按位非(~),异或(^),位运算表达式不会短路

13日移位操作符(移位操作符):左移位操作符(<),低位补0;右移位操作符(>),若符号为正,则高位补0,若符号为负,则高位补1,即始终维持符号不变,无符号右移位操作符(>>),无论正负,高位都补0

14日boolean-exp吗?value0: value1,三元操作符,如果布尔表达式为真,则以value0为结果,否则以value1为结果

15类型转换操作符(铸造操作符):就是强制转换,一般用于进行窄化转换(缩小转换). Java允许由低精度类型向高精度类型自动转换,如把int值赋给长,但反之则必须手工强制转换

16日布尔类型不能和除字符串外的任何类型相互转换。

17日表达式中出现的最大(所占位数最多,如比int多两倍,不是指数值最大)的数据类型决定了表达式最终结果的数据类型

18, Java中所有的数据类型在所有平台上的大小都是相同的,它被固定在语言中了

19日int(其它数值型也可以)数过大时可能产生溢出,但Java无论是编译还是运行时,都不会报这个错误或异常,结果显然是错误的

20、控制程序流程时所用的判断必须是布尔,不允许使用普通数字,必须先转换成布尔,如如果(一个!=0)

21日迭代(迭代),也可以理解为循环

22日打破强行退出循环,跳过循环语句,执行后面的代码,继续停止当次循环,开始下一次循环

23日无穷循环有两种形式:为(,)或(真正的),它们是等价的,使用时要小心,循环体内一定要有打破或返回之类的语句,且执行它们条件必须是可以满足的

24日可以为循环标上标签,之后使用继续标签或打破标签来控制程序流程,语法为在循环定义行前加上“label1:”

25日开关语句的条件和其中各个案例都必须是int或char(直接用数字或单引号加字符,如“一”),每个案例后别忘了休息,否则无法退出来(当然某些特殊情况下你可能并不想退出来,而是想要一次执行多个情况下,违约后就不需要打破了,执行过默认自然会退出,不过放一个假期会使风格看起来更整齐)

26日math . random()用于产生一个01之间的随机数的两倍,严格的说,它的结果包括0,但不包括1

《Java编程思想》学习笔记03,控制程序流