关闭

Java笔记整理:操作符

标签: java
59人阅读 评论(0) 收藏 举报
分类:

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,因为在所有机器上的数据类型大小都是没有区别的

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13903次
    • 积分:367
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    个人主页
    欢迎大家访问我的个人主页:
    http://mahong978.top

    个人主页和CSDN的博文保持同步
    文章分类
    最新评论