第三章 操作符

来源:互联网 发布:大数据龙头公司 编辑:程序博客网 时间:2024/06/05 04:33

 3.1 打印语句

System.out.println(“aaa”+ b); +是连接字符串,有将b转换成String类型的过程。

3.4赋值

别名陷阱,在对象赋值是t1=t2;实际上,t1本身的引用被t2的覆盖掉(t1的引用被垃圾回收器回收),在修改t1时,t2也会跟着变化。用t1.a=t2.a,保证t1和t2的独立性。

操作符的操作是一个对象的引用

3.5算数操作符

Random类的使用方法,nextInt(max)函数,随机数为0-max中的最大数,为防止0变为除数,nexInt()+1;一般要加1操作。

Random rand = new Random(48);中48的作用,如果没有48,用默认值系统时间作为种子,在第一次执行时随机数为16,隔几秒执行随机数变化24或者其他。如果指定为48,无论你今天运行还是明天运行,输出结果随机数都是同一个。

3.7关系操作符

对于== 和equals()的不同情况应用

==在比较对象时,比较的是引用,即指向的地址。

要比较两个对象的内容(其中的字段值)是否相等,要用equals()。(不包括基本类型,基本类型用==和 !=)

但是equals()在类中默认,是比较的引用。equals(Integer a,b)之所以返回比较内容的结果,是Integer类中,重写了equals函数。对于自己定义的类,如Dog之类的,要重写equals()函数才可以。

3.8 逻辑操作符

java中,不能将非布尔值当做布尔值,如i=10,不能直接(!i)

逻辑操作符中短路现象,a&&b&&c,如果b为false,c的逻辑值不需要再计算,如果正确的设计abc的顺序,可以提高计算性能。

3.9 直接常量

long double float 后面要加L,D,F相应的符号,0X为16进制hexadecimal 0打头为8进制。

指数计数法,1.39e-43f 表示 1.39* ,e这里表示10的幂,不是2.718

3.10 按位操作符

& | ~ 异或(^,10或01输出结果为1) &= |=^=

3.11 移位操作符

<< 左移,箭头所指的方向,在低位补0;

>> 有符号右移,符号为正,高位插入0,符号为负,高位插入1;

>>> 无符号右移,无论正负,在高位插入0.

<<=、 >>=、>>>=(对short byte无符号右移会出错)

3.12 三元操作符 if-else

i<10? i*100:i*10 ; 如果i<10成立,执行i*100,否则执行后一个。代码紧凑,但是不好理解。

3.13+操作符重载

int x,y,z;

print(“abc”+x+y+z); 与 print(“abc”+(x+y+z)); 不一样,后者先计算xyz的和,然后输出一个值。

3.14 使用操作符常犯的错误

= 和 ==两者之间的区别

3.15 类型转换操作符

narrowing conversion:如将double转化为int,会伴随信息丢失。

widening conversion:不会造成信息丢失。 int转为float

在narrowing时,信息是截尾的。(int)0.7=0;可以用Math中的round方法四舍五入,round(0.7)=1;

在计算时,默认将类型变大,避免信息丢失。

3.16 java中没有sizeof

sizeof最大的原因是为了移植,java不需要。

Boolean布尔型值,可用的操作比较少,不可加减等。只能赋值true false

char byte short在进行运算(+ - * /)时,数据类型会提升到int,必须强制转换结果才能赋值。char a=(int)(a+b);

 

原创粉丝点击