• Java运算符详解


    目录

    一、算数运算符

    (一)、基本四则运算符:

    1、加法、减法、乘法运算符

    2、除法运算符 

    3、取模运算符 

    (二)、算数运算符 

    (三)、自增、自减运算符 

    二、关系运算符 

    三、逻辑运算符 

    (一)、逻辑与

    (二)、逻辑或 

    (三)、逻辑非 

    四、位运算符 

     (一)、按位与

    (二)、按位或 

    (三)、按位取反 

    (四)、按位异或 

    五、移位运算符

     (一)、左移运算符

    (二)、右移运算符 

    (三)、无符号右移 

    六、条件运算符 

    一、算数运算符

    (一)、基本四则运算符:

    1、加法、减法、乘法运算符

    加法运算符:+ 

    减法运算符:-

    乘法运算符:*

    注意:

    • 当两个类型不一致的数字进行运算时,范围小的会自动提升为范围大的进行运算,例如:1+1.1=2.1,1首先会提升为double型数据再参与运算。 
    • 这三类都是二元运算符,正常使用即可。

    2、除法运算符 

    除法运算符:/

    注意:

    • 若/运算符的两端都是整数,则运算结果为整数,例如:1/2=0。
    • 若/运算符只要有一端为浮点数运算符,则运算结果为浮点数,例如:1.0/2=0.5,1/2.0=0.5,1.0/2.0=0.5。
    • 运算符的右端不能为0,即不能对0做/运算。 

    3、取模运算符 

    取模运算符:%

    注意:

    • %运算结果的正负只与%左端的数有关,例如:10%3=1,-10%3=-1,10%-3=1。 
    • %运算可以有浮点数参与,例如:12.8%5=2.8。
    • %运算符的右端不能为0,即不能对0进行取模运算。

    (二)、算数运算符 

    算术运算符有:+=,-=,*=,/=,%= 

    例如:a*=12+9  ->a=a*(12+9) 

    注意:

    • 这一类运算符的左端必须是变量,然后将运算结果赋值给左边的变量。 
    • 当运算符的右端不仅仅只有一个常量时,尽量给右端整体加上括号,以免出错。

    (三)、自增、自减运算符 

    自增运算符:++a(前置自增),a++(后置自增)

    自减运算符:--a(前置自减),a--(后置自减) 

    这类运算符的结果都是先将变量进行加1或者减1,然后再将运算结果赋值给该变量。

    那么前置自增和后置自增到底有什么区别?

    1. public static void main(String[] args) {
    2. int a=1;
    3. int b=a++;
    4. System.out.println(a);
    5. System.out.println(b);
    6. }

    运行结果:

    1. public static void main(String[] args) {
    2. int a=1;
    3. int b=++a;
    4. System.out.println(a);
    5. System.out.println(b);
    6. }

    运行结果:

    这两个的区别主要是参与表达式运算时,前置自增是先进行加一运算,在进行相关表达式的计算,但是后置自增,是先进行相关表达式计算,再进行加一运算,前置和后置对于自增运算变量本身并没有较大区别,但是对于其所参与的表达式的值有影响。

    所以,对于上述例子,第一段代码是先对b进行赋值运算,再自增,故a=1,b=2;但是在第二段代码中,是先对a进行自增运算,此时a的值为2,再进行赋值,故b的值为2。 

    二、关系运算符 

    关系运算符包含有:

    ==、!=、>、>=、<、<=

    注意:

    • ==和=的区别:==是判断左右两端是否相等,=是将右端赋值给左边变量。
    • 不能在一个表达式中连着使用关系运算符,例如:a>2>b,这是不允许的。 

    通俗来说,关系运算符主要功能时进行判断。 

    三、逻辑运算符 

    (一)、逻辑与

    逻辑与:&&

    注意: 

    • &&要求两端的布尔表达式的值都为true时,结果才为true,否则为false。
    • &&遵守短路求值规则,即当左边的布尔表达式的值为false时,便不会再对右边的布尔表达式进行计算,其结果直接为false。 
    1. public static void main(String[] args) {
    2. int a=0;
    3. int b=1;
    4. System.out.println((a==b)&&(a==(a++)));
    5. System.out.println(a);
    6. }

    运行结果:

    分析:由于a==b的值为false,&&便不会执行后面的代码,所以a=1。

    1. public static void main(String[] args) {
    2. int a=1;
    3. int b=1;
    4. System.out.println((a==b)&&(a==(a++)));
    5. System.out.println(a);
    6. }

    运行结果:

    分析:由于a==b的值为true,&&便会执行后面的代码,所以a=2。 

    (二)、逻辑或 

    逻辑或:|| 

    注意

    • ||要求只要两端只要有一端的布尔表达式结果为true,其结果便为true。
    • ||同样遵守短路逻辑运算,只要||的左端布尔表达式为true,代码便不会执行右边,||的运算结果为true。

    由于||与&&类似,便不再进行赘述。 

    (三)、逻辑非 

    逻辑非:! 

    注意:

    • !是对布尔表达式的结果取非,例如:!(true)的结果为false。 
    • !的右端必须是布尔表达式,如下操作是不允许的:

    四、位运算符 

    由于在计算机中利用二进制存储数据信息,八位二进制为一个字节,在进行位运算时,首先需要将要运算的数字转换为二进制数,再进行运算。

     (一)、按位与

    按位与:& 

    1. public static void main(String[] args) {
    2. int a=3;
    3. int b=5;
    4. System.out.println(a&b);
    5. }

    运行结果:

    解析:

      

    &的两端可以是布尔表达式,但是它并不遵守短路运算,&两端的布尔表达式都会执行 ,同样要求只有&两端布尔表达式都为true时,结果才是true。

    (二)、按位或 

    按位或:| 

    1. public static void main(String[] args) {
    2. int a=3;
    3. int b=5;
    4. System.out.println(a|b);
    5. }

    运行结果:

    解析:

    |的两端可以是布尔表达式,但是它并不遵守短路运算,|  两端的布尔表达式都会执行 ,同样要求只有|只要有一端布尔表达式为true时,结果是true。 

    (三)、按位取反 

    按位取反:~ 

    1. public static void main(String[] args) {
    2. int a=3;
    3. System.out.println(~a);
    4. }

    运行结果:

    解析:

      

    (四)、按位异或 

     按位异或:^

    ^运算的规则是相同为0,不同为1。 

    1. public static void main(String[] args) {
    2. int a=3;
    3. int b=5;
    4. System.out.println(a^b);
    5. }

    运算结果:

    解析:

    五、移位运算符

     (一)、左移运算符

     左移运算符:<<

    运算规则:向左移位,右侧补0。 

    1. public static void main(String[] args) {
    2. int a=3;
    3. System.out.println(a<<1);
    4. }

    运行结果:

    解析:

    (二)、右移运算符 

     右移运算符:>>

    运算规则:向右移位,左侧补符号位 

    1. public static void main(String[] args) {
    2. int a=3;
    3. System.out.println(a>>1);
    4. }

    运行结果:

    解析:

    (三)、无符号右移 

    无符号右移:>>> 

    运算规则:向右移位,左侧补0 

    注意:没有无符号左移 

    六、条件运算符 

    条件运算符:

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

    运算规则:

    • 若表达式1的值为true,则执行表达式2;
    • 若表达式1的值为false,则执行表达式3; 

    要求:表达式2和表达式3必须为同类型表达式,除非能发生隐式转换,还有条件运算符要有计算结果。 

    例题解析:

    1. public static void main(String[] args) {
    2. int a=10;
    3. int b=21;
    4. int c=a<b?a>9?11:b:a;
    5. System.out.println(c);
    6. }

    运行结果: 11

     

    这个题目首先判断a9的判断,满足则c=11。 

  • 相关阅读:
    leetcode:45. 跳跃游戏II
    【CSDN创作活动】 - 我参加过的那些竞赛
    SpringCloudGateway网关中各个过滤器的作用与介绍
    阿里二面:谈谈ThreadLocal的内存泄漏问题?问麻了。。。。
    【解决】使用Element-Plus icon图标不显示
    推荐《咒术回战》
    1.4 w字,25 张图让你彻底掌握分布式事务原理
    远程办公、企业内网服务器的Code-Server上如何配置使用CodeGeeX插件
    “蔚来杯“2022牛客暑期多校训练营10 F.Shannon Switching Game?
    卷积神经网络手写数字分类
  • 原文地址:https://blog.csdn.net/m0_62404808/article/details/127576040