《Thinking in Java》第四篇笔记 Java中的操作符

在最底层,Java中的数据是通过使用操作符来操作的。

一、基本数据类型

(1)整数类型:
①byte:1个字节,8位
②short:2个字节,16位
③int:4个字节,32位
④long:8个字节,64位

(2)字符类型:
①char:2个字节
②char类型用单引号括起来,而字符串使用双引号;

(3)浮点型:
①float:单精度。4个字节,32位,第1位符号位,接下8位表示指数,再接下来23位表示尾数;
②double:双精度。8个字节,64位,第1位符号位,接下来11位表示指数,再接下来52位表示尾数。

(4)布尔型
boolean:1位。true/false。

二、赋值
(1)基本数据类型使用“A=B”,那么B处的内容就复制到A。若修改A,那么B根本不会受修改的影响。
(2)对象“赋值”的时候情况发生了变化。对一个对象进行操作时,我们真正操作的是它的句柄。所以倘若“从一个对象到另一个对象”赋值,实际就是将句柄从一个地方复制到另一个地方。这意味着假若为对象使用“C=D”,那么C和D最终都会指向最初只有D才指向的那个对象。

short s1 = 1; s1 = s1 + 1; //(s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;//(可以正确编译) +=运算符无类型转换问题

三、算术运算符
(1)Java的算术运算符:加号(+)、减号(-)、除号(/)、乘号(*)以及模数(%,从整数除法中获得余数)。
(2)整数除法会直接砍掉小数,而不是进位。

四、自动递增、递减
(1)对于前递增和前递减(如++A或–A),会先执行运算,再生成值。
(2)对于后递增和后递减(如A++或A–),会先生成值,再执行运算。

五、关系运算符
(1)关系运算符包括<、>、<=、>=、= =、!=。
等于和不等于适用于所有内建的数据类型,但其他比较不适用于boolean类型。
(2)想对比两个对象的实际内容是否相同,必须使用所有对象都适用的特殊方法equals()。equals()方法不适用于“基本类型”,那些类型直接使用= =和!=即可。equals()的默认是比较句柄。所以除非在自己的新类中改变了equals(),否则不可能表现出我们希望的行为大多数Java类库都实现了equals(),所以它实际比较的是对象的内容,而非它们的句柄= =和! =比较的是对象句柄,而不是对象的实际内容。

六、逻辑运算符
(1)&&:与(若第一个操作数返回false,将不再对第二个操作数进行求值)
(2)&:不短路与(两个操作数都进行求值)
(3)||:或(若第一个操作数返回true,将不再对第二个操作数进行求值)
(4)|:不短路或(两个操作数都进行求值)
(5)!:非
(6)^:异或,当两个操作数不同时才返回true。

七、按位运算符
(1)&:按位与
(2)|:按位或
(3)~:按位非
(4)^:按位异或(相同为0,不同为1)

八、移位运算符
(1)左移位运算符(<<)能将运算对象向左移动运算符右侧指定的位数(在低位补0)。
(2)有符号右移位运算符(>>)将运算对象向右移动运算符右侧指定的位数。有符号右移位运算符使用了符号扩展:若值为正,则在高位插入0;若值为负,则在高位插入1
(3)无符号右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0

九、三元if-else运算符
布尔表达式 ? 值0:值1
布尔表达式”的结果为true,就计算“值0”,否则计算“值1”

十、字符串运算符+和+=

int x = 0, y = 1, z = 2;
System.out.println(“out:” + x + y + z);

在这里,Java编译程序会将x,y和z转换成它们的字串形式,而不是先把它们加到一起。
运用“String +”时,若表达式以一个String起头,那么后续所有运算对象都会转换到字串。
想通过“加号”连接字串(使用Java的早期版本),请务必保证第一个元素是字串。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值