Java笔记整理:操作符

Java笔记整理:操作符

JAVA操作符

除“=”,“==”和“!=”外,所有操作符只能操作基本数据类型
String类支持“+”和“+=”

优先级

在连加的表达式中,String类型的元素后面的所有元素,都会自动转换成String类型

赋值

常量不能作为左值
基本数据变量存储的是实际的数值,赋值时会复制实际的内容
对象赋值时实际上是复制引用,而不是对象本身

算术操作符

整数除法会直接去掉小数位,而不是四舍五入
一元加操作符,像“+4”,会将较小类型的操作数提升为int

递增递减操作符

递增递减操作符是唯一具有“副作用”的操作符,即改变操作数

关系操作符

关系操作符会生成一个boolean结果
boolean类型不支持除“==”和“!=”外的比较符

对象间进行比较时,实际上比较的是两个引用
JAVA内置的一些类的equals方法其实是重载了Object类的equals方法,equals方法默认比较引用

逻辑操作符

逻辑操作符会生成一个boolean结果
逻辑操作符的操作数只能是boolean类型,JAVA不允许将非布尔值当作布尔值使用
JAVA存在短路特性

直接常量

前缀

  1. 十六进制:0x 或 0X
  2. 八进制:0
  3. 没有二进制(可以使用Integer.toBinaryString()方法获得)

后缀

  1. long:l 或 L
  2. double:d 或 D
  3. float:f 或 F

试图将变量初始化成超出自身范围的值,会得到一条错误信息
如果没有后缀,会默认转换成int值

指数计数法

编译器会将指数作为double类型处理

位操作符

~是一元操作符,因此没有~=
boolean类型可以应用于位操作符,但不能使用 ~ 操作符
位操作符表达式不会中途短路

移位操作符

左移低位补零
右移高位正数补零,负数补一(>>>则全部补零)

char,byte和short在移位前会先转换成int,移位后截断转换为原来的类型
int和long移位后的位数不会超过自身的最大位数

字符串操作符

JAVA不能重载操作符
如果表达式以一个字符串开头,后续所有操作数都会被转换成字符串类型

JAVA可以通过编译时检查防止while(x=y)这种错误的发生,因为int类型不能转换为boolean类型,除非像true=false,则不会得到错误。同样的,也可以防止逻辑操作符和位操作符的混淆

类型转换

窄化转换可能会导致信息丢失
扩展转换不必显示进行,会自动发生

将float和double转换成int类型时,会进行截尾而不是舍入
对char,byte或short的数据进行算术运算或位运算时,运算之前会自动转换成int

表达式中出现的最大数据类型决定了最终结果的数据类型


JAVA没有sizeof,因为在所有机器上的数据类型大小都是没有区别的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值