• Java 运算符


    目录

    运算符

    1.算术运算符

    2. 关系运算符

    3. 逻辑运算符

    4. 位运算符

    5. 移位运算符

    6. 条件运算符


    这里简单记录一些比较不同的,新颖的,或者值得注意的,以前没注意到的知识点。

    运算符

    1.算术运算符

    ①加,减,乘,除,取余  + - * / %

    加减乘没什么意思,这一部分其实是和上一篇博客的类型转换,以及类型提升有关联。

    1. 除:

    除数不能为0

    int/int结果为int,int/float结果为float,int/double结果为double,这就是类型提升的原理。

    2. 取模

    Java中的%与C/C++中的不同,C/C++中只能对整数取模,而Java中可以对小数取模。

    其中的f不可省略,因为若无f,则1.7 0.6则为double型字面值常量。结果是不能用float接收的。

    ②增量运算符 

    += -= *=  /= %=  <<= >>= >>>=  .....

    没什么好说的,很方便,并且有一个特殊点:

     可以看到,+= -= 运算符会自动进行强制类型转换。比如 f1 float变量直接减一个double字面值常量然后赋值给一个float变量是非法的,而-=就可以,说明编译器自动进行了一些处理,可见 += -= *= /=等运算符的方便之处。

    ③自增自减运算符++--

    略了,没什么变化,没什么值得注意的。

    2. 关系运算符

    !=  ==  < > <= >= 返回值是boolean类型,if,for,等条件判断部分,只能是boolean类型。

    3. 逻辑运算符

    逻辑运算符的操作数和返回值都是boolean类型

    &&逻辑与     ||逻辑或    !逻辑非

    最重要的就是逻辑与 和 逻辑或的短路求值了,这个在避免C++的非法访问时经常使用。

    1. string s;
    2. if(cin >> s && s[0] == 'q')
    3. return;
    1. String s;
    2. if(!cin>>s || s == "quit")
    3. return;

    Java如何实现类似代码目前还不会......

    当 & 和 | 的左右操作数的结果是boolean类型时,也支持&& || 的功能,但是不支持短路求值。

    4. 位运算符

    Java 中对数据的操作的最小单位不是字节, 而是二进制位.

    位运算符主要有四个: & | ~ ^

    位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的 每一位依次进行计算

    & 按位与:两个操作数,对应二进制位都为1则结果为1,否则为0

    |  按位或:两个操作数,对应二进制位都为0则结果为0,否则为1

    ~ 按位取反:一个操作数,二进制位的1变为0,0变为1

    ^ 按位异或:两个操作数,异,对应二进制位相同为0,相异为1

    当 & | 左右操作数结果为boolean类型时,才表示逻辑运算,操作数为整型时,表示位运算。

    5. 移位运算符

    移位运算符有三个,操作的都是二进制位。

    <<  左移运算符:移掉最左侧的二进制位,右侧补0

    >>  右移运算符:移掉最右侧的二进制位,左侧补符号位(正数补0,负数补1)

    >>> 无符号右移运算符:移掉最右侧的二进制位,左侧补0(无论正负)

    1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.

    2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.

    3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.

    4. 移动负数位或者移位位数过大都是未定义的行为。

     可以看到,-15无符号右移,则符号位补0。那么就会变成一个很大的正数。

    6. 条件运算符

    表达式1 ?表达式2 :表达式3

    Java唯一一个三目运算符。表达式1的结果必须是boolean类型。同样存在短路求值,表达式1结果为true,执行表达式2,并以此作为整个表达式的结果。表达式1结果为false时,执行表达式3,并以此作为整个表达式的结果。

    7.运算符的优先级

  • 相关阅读:
    基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
    【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现
    【C++】从认识using namespace std开始进入C++的学习
    vue中的路由router
    Postman全局配置变量token
    Oracle数据泵导入和导出命令
    IO 与 NIO
    cudnn-windows-x86_64-8.6.0.163_cuda11-archive 下载
    优化查询(工作中)
    4G RTU水文数据采集终端应用在水文监测终端系统
  • 原文地址:https://blog.csdn.net/i777777777777777/article/details/125479108