第三章 操作符

本文深入讲解Java中的各类操作符,包括算术、逻辑、位运算等,并探讨了操作符的优先级、类型转换等问题,帮助读者更好地理解Java编程的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在最底层,Java中的数据是通过使用操作符来操作的。
3.1 更简单的打印语句
3.2 使用Java操作符
1、操作符作用于操作数,生成一个新值。有些操作符可能会改变操作数自身的值,这被称为“副作用”。那些能改变其操作数的操作符,最普遍的用途就是用来产生副作用。
3.3 优先级
1、当编译器观察到一个String后面紧跟一个“+”,而这个“+”的后面又紧跟一个非String类型的元素时,就会尝试着将这个非String类型的元素转换为String。
3.4 赋值
1、基本数据类型的赋值。基本类型存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到了另一个地方。修改前后没有影响。
2、对象的赋值。对一个对象进行操作时,实际操作的是对对象的引用。所以“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方。修改前后有影响。
3.4.1 方法调用中的别名问题
3.5 算术操作符
1、Random类的对象,如果在创建过程中没有传递任何参数,那么Java就会将当期时间作为随机数生成器的种子,并由此在程序每一次运行时都产生不同的输出。通过在创建Random对象时提供种子(用于随机数生成器的初始化值,随机数生成器对于特定的种子值总是产生相同的随机数序列)
3.5.1 一元加、减操作符
1、一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是它唯一的作用仅仅是将较小类型的操作数提升为int。
3.6 自动递增和递减
1、前缀递增和前缀递减,会先执行运算,再生成值。
2、后缀递增和后缀递减,会先生成值,再执行运算。
3.7 关系操作符
3.7.1 测试对象的等价性
1、大多数Java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用。
3.8 逻辑操作符
1、如果在应该使用String值的地方使用了布尔值,布尔值会自动转换成适当的文本形式。
3.8.1 短路
1、一旦能够明确无误地确定整个表达式的值,就不再计算表达式余下的部分。通过这种操作,如果所有的逻辑表达式都有一部分不必计算,那就获得潜在的性能提升。
3.9 直接常量
1、直接常量后面的后缀字标志了它的类型。若为大写(或小写)的L,代表long。大写(或小写)字母F,代表float,大写(或小写)字母D,则代表double
2、十六进制数适用于所有整数数据类型,以前缀0X,后面跟随0-9或小写(或大写)的a-f来表示。
3、如果试图将一个变量初始化成超出自身表示范围的值,编译器会报告一条错误的信息。对于char、byte以及short所能表示的最大的十六进制(或者八进制)。如果超出范围,编译器会将值自动转换成int型。
4、toBinaryString() 二进制表现。如果将比较小的类型传递给Integer,toBinaryString()方法,则该类型将自动被转换为int。
3.9.1 指数记数法
1、编译器会将指数作为双精度数处理(double)
3.10 按位操作符
1、与 异或 非
3.11 移位操作符
1、左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。
2、“有符号”右移位操作符(>>)则按照操作符右侧指定的位数将操作符左边的操作数向右移动。
3、“有符号”右移位操作符使用“符号扩展”:若符号为正,则在高位插入0;若符号为负,则在高位插入1.
4、Java中增加了一种“无符号”右移位操作符(>>>),它使用“零扩展”:无论正负,都在高位插入0。
5、如果对char,byte或者short类型的数值进行移位处理,那么在移位进行之前,它们会被转换成int类型,并且得到的结果也是int类型的值。只有数值右端的低5位才有用。这样可防止移位超过int型值所具有的位数。若对long类型的数值进行处理,最后得到的记过也是long,此时只会用到数值右端的低6位,以防止移位超过long型数值具有的位数。
3.12 三元操作符if-else
1、boolean-exp ? value0 :value1;
3.13 字符串操作符+和=
1、如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型(编译器会把双引号内的字符序列自动转成字符串)
3.14 使用操作符时常犯的错误
1、按位“与”和按位“或”使用单字符(&或|)。逻辑“与”和逻辑“或”使用双字符(&&或||)
3.15 类型转换操作符
1、类型转换运算允许我们显示地进行这种类型的转换,或者在不能自动进行转换的时候强制进行类型转换。
2、Java允许把任何基本数据类型转换成别的基本数据类型,但布尔型除外,后者不允许进行任何类型的转换处理。
3.15.1 截尾和舍入
1、在将float或者double转型为整型值时,总是对该数字执行截尾。如果想要得到舍入的结果,就需要使用java.lang.Math中的round()方法、
3.15.2 提升
1、表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。
3.16 Java没有sizeof
1、所有数据类型在所有机器中的大小都是相同的
3.17 操作符小结
3.18 总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值