Java中常用的几个运算符,你是否已灵活掌握?

算术运算符

+ 功能:

  1. 连接符操作

    代码展示:

    public class OperationDemo03 {
        public static void main(String[] agrs){
            System.out.println("多看看我的" + "博文" + ",谢谢"); // 多看我的博文,谢谢
        }
    }
    

    运行截图:
    在这里插入图片描述

  2. 表示正数

    代码展示:

    public class OperationDemo04 {
    	public static void main(String[] agrs){
    		System.out.println( + 1024); // 1024 
    	}
    }
    

    运行截图:

    在这里插入图片描述

  3. 加法运算

    代码展示:

    public class OperationDemo05 {
        public static void main(String[] agrs){
            int sum = 3 + 4;
            System.out.println(sum); // 7
        }
    }
    

    运行截图:
    在这里插入图片描述


-功能:

  1. 减法运算

    代码展示:

    public class OperationDemo06 {
        public static void main(String[] agrs){
            int  diff = 10 - 6 ;
            System.out.println(diff);// 4
        }
    }
    

    运行截图:
    在这里插入图片描述

  2. 表示负数

    代码展示:

    public class OperationDemo07 {
        public static void main(String[] agrs) {
     		System.out.println(-4);// -4       
        }
    }
    

    运行截图:

    在这里插入图片描述


*功能 :实现乘法运算

代码展示:

public class OperationDemo08 {
    public static void main(String[] args){
        int multiply = 10 * 3;
        System.out.println(multiply); // 30
    }
}

运行截图:
在这里插入图片描述


/功能:实现除法功能

public class OperationDemo09 {
    public static void main(String[] agrs) {
        int devide = 3 / 4;
        System.out.println(devide); // 0
    }
}

运行截图:
在这里插入图片描述


%功能:实现取模|取余运算

代码展示:

public class OperationDemo010 {
    public static void main(String[] agrs){
        int residue = 10 % 3;
        System.out.println(residue);// 1
    }
}

运行截图:
在这里插入图片描述


注意:

  1. 除法/得到的商,取模%得到的余数

    代码展示:

    public class OperationDemo {
        public static void main(String[] agrs) {
            // 除法 / 得到的商
            int divide = 3 / 5;
            System.out.println(divide);// 是0 而不是0.5
            // 取模 % 得到的
            int delivery = 3 % 5;
            System.out.println(delivery);  // 是3 而不是 0  
        }
    }
    

    运行截图:
    在这里插入图片描述

  2. 两个整数相除得到的还是一个整数,若想得到小数必须有浮点数的参与

    代码展示:

    public class OperationDemo01 {
        public static void main(String[] agrs) {
            // 没有浮点数参与
            int num = 1 / 2;
            System.out.println(num); // 是 0 ,而不是 0.5
            // 有浮点数参与
            float num1 = 1.0f / 2;
            System.out.println(num1); // 是 0.5 ,而不是 0
        }
    }
    

    运行截图:
    在这里插入图片描述

  3. 0 % 任何数 的 结果 还是0

    代码展示:

    public class OperationDemo02 {
        public static void main(String[] args) {
            int i = 0 % 3;
            int x = 0 % 5;
            System.out.println(i);  // 0
            System.out.println(x);  // 0
        }
    }
    

    运行截图:
    在这里插入图片描述


字符的“+”操作

'a' = 97
'A' = 65
'0'= 48

字符在计算机内存中存储的都是具体的数值。

public class OperationDemo012 {
    public static void main(String[] args){
        // 若两个操作数中有一个为float类型,则另一个会隐式类型转换为float类型,返回结果的类型也是float类型
        float sum  = 'a' * 1.0f;
        System.out.println(sum); // 97.0
        // 若两个操作数中有一个为double类型,则另一个会隐式类型转换为double类型,返回结果的类型也是double类型
        double sum1 = 'a' * 1.0;
        System.out.println(sum1); // 97.0
        // 若两个操作数中有一个为long类型,则另一个会隐式类型转换为long类型,返回结果的类型也是long类型
        long sum2 = 'a'  + 10000000000L;
        System.out.println(sum2); // 10000000097
        // 若两个操作数中既没有float类型,也没有double类型和long类型,那返回的结果就是int类型
        int sum3 = 'a' + 10;
        System.out.println(sum3); // 107
    }
}

运行截图:
在这里插入图片描述

提升规则:

​ 前提 :两个不同类型的操作数,进行运算时就会触发隐式类型转换。

  1. 若两个操作数中有一个为float类型,则另一个会隐式类型转换为float类型,返回结果的类型也是float类型
  2. 若两个操作数中有一个为double类型,则另一个会隐式类型转换为double类型,返回结果的类型也是double类型
  3. 若两个操作数中有一个为long类型,则另一个会隐式类型转换为long类型,返回结果的类型也是long类型
  4. 若两个操作数中既没有float类型、也没有double类型和long类型,则最后返回的结果就是int类型

注意:

  1. 注意区分 字符 ‘0’ 和 数字 0
    代码展示:
    public class OperatorDemo {
    	public static void main(String[] args) {
    		System.out.println(0 + 'a'); // 97
    	}
    }
    

字符串的"+"操作(常见

说明:当字符串 与 其他数据类型做“+”操作时,实质上做的是连接符操作

代码展示:

public class OperationDemo011 {
    public static void main(String[] args) {
        System.out.println("CSDN" + 666);
        System.out.println(1 + 99 + "年CSDN");
        System.out.println("CSDN" + (65 + 1));
    }
}

运行截图:
在这里插入图片描述


赋值运算符(=

将等号右边的表达式的结果赋值给等号左边的变量|final修饰的自定义常量

代码展示:

public class OperationDemo013 {
    public static void main(String[] args) {
        final int num  =  12;
        int num1 = 45;
        System.out.println(num1); // 45
        num1 = 46;
        final int num2 = 3 + 4;
        int num3 = 6 + 7;
        System.out.println(num); // 12
        System.out.println(num1); // 46
        System.out.println(num2); // 7
        System.out.println(num3); // 13
    }
} 

运行截图:
在这里插入图片描述


扩展赋值运算符

+= 、 -= 、*=、/=、%=

代码展示:

public class OperationDemo014 {
    public static void main(String[] args) {
      	// +=
        short num  = 12 + 13; // 25
        // 扩展运算符 +=
        num += 10 + 1.0; // 等价于 num =(short) (num + 10);
        System.out.println(num); // 36
        // *= 
        int num1 = 10;
        num1 *= 10 * '0';
        System.out.println(num1); // 4800
        // /=
        int num2 = 20;
        num2 /= 5  - 1; 
        System.out.println(num2); // 5
        // -=
        int num3 = 30;
        num3 -= 10;
        System.out.println(num3); // 20
        // %= 
        int num4 = 89;
        num4 %= 8;
        System.out.println(num4); // 1 
    }
}

运行截图:
在这里插入图片描述

注意:

  1. 扩展赋值运算符隐含了强制类型转换

问:以下代码会出现编译错误嘛? 并给出正确的代码

错误的代码:

public class OperationDemo015 {
    public static void main(String[] agrs) {
        short i = 20;
        i = i + 10;
        System.out.println(i);
    }
}

编译错误截图:
在这里插入图片描述

错误原因:“10” 是整数固定值常量,整数固定值常量的默认值为int类型,i为short类型, i + 10返回结果的类型是int类型而不是short类型,若两个操作数中既没有double类型、也没有float类型和long类型,那返回的结果就是int类型。故产生编译错误。

正确的代码展示:

public class OperationDemo015 {
    public static void main(String[] agrs) {
        /* 方式一:
        int i = 20;
        i = i + 20;
        System.out.println(i);
        */
        /*方式二
        short i = 20;
        i += 20;
        System.out.println(i);
        */
        // 方式三
        short  i = 20;
        i = (short)(i + 20);
        System.out.println(i); // 40
    }
}

运行截图:
在这里插入图片描述


自增自减运算符(++、--)

++numnum++num----num单独使用时没有任何区别

public class OperationDemo016 {
    public static void main(String[] args) {
        int num = 0;
        num ++;
        System.out.println(num); // 1
        ++ num;
        System.out.println(num); // 2
        int num1 = 9;
        num1 --;
        System.out.println(num1); // 8
        -- num1;
        System.out.println(num1); // 7
    }
}

运行截图:
在这里插入图片描述

num++、++num 、--num、num--自增自减运算符和别的操作数一起参与运算时才有区别

num ++特点:先运算后自增

++ num特点:先自增后运算

-- num 特点: 先自减后运算

num --特点:先运算后自减

代码展示:

public class OperationDemo017 {
    public static void main(String[] args) {
        int num = 12;
        num = num ++ + 12;
        System.out.println(num); // 24
        
        int num1 = 14;
        num1 =  ++ num1 + 10; 
        System.out.println(num1);// 25
        
        int num2 = 15;
        num2 = -- num2 * 12;
        System.out.println(num2); // 168
        
        int num3 = 46;
        num3 = num3 -- + 12; // 58
        System.out.println(num3);
 		
        int num4  = 0;
        System.out.println(-- num4); // -1
        System.out.println(num4 --); // -1
        System.out.println(num4 ++);// -2
        System.out.println(++ num4);// 0
        
    }
}

运行截图:
在这里插入图片描述

注意:

  1. 固定值常量& final修饰的自定义常量不能做自增自减运算,只有整型变量才可以,因为常量只能被赋值一次。
  2. 自增自减运算符单独使用的场合是最多的

关系(条件)运算符

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

public class OperationDemo018 {
   public static void main(String[] agrs) {
       int a = 10, b = 20;
       boolean flag = a == b;
       System.out.println(flag); // false
       System.out.println(a >= b); // fasle
       boolean flag1 = a != b;
       System.out.println(flag1); // true
       System.out.println(a <= b); // true
       boolean flag2 = a > b;
       System.out.println(flag2); // false
       System.out.println(a < b); // true
   }
}

运行截图:
在这里插入图片描述

注意:

  1. 关系运算符返回结果类型必须是boolean类型
  2. 一个”=“表示的是赋值运算符,”==“表示的关系运算符
  3. >=:大于或者等于 ,<= :小于或者等于,不是并且关系 ,而是或者关系,满足一个即可

逻辑运算符

最常用的逻辑运算符 : || 、 && 、!

符号含义结论
|逻辑或有true则true
逻辑非取反 true即false,false即true
^逻辑异或相同为false,不同为true
||短路或有true则true
&&短路与有false则false
&逻辑与有false则false

代码展示:

public class OperationDemo20 {
    public static void main(String[] agrs) {
         // ! 逻辑取反 true即false false即true
        boolean flag = !true;
        System.out.println(flag); // false
        System.out.println(!!true); // true
        
        // ^ 逻辑异或 相同为false,不同为true
        boolean flag1 = true ^ false;
        System.out.println(flag1); // true
        boolean flag2 = true ^ true; 
        System.out.println(flag2);// false
        boolean flag3 = false ^ false ;
        System.out.println(flag3); // false
        boolean flag4 = false ^ true;
        System.out.println(flag4); // true
        
        // | 逻辑或 有true则true
        System.out.println( 3 > 5 | 5 < 3); // false | false  false
        System.out.println(7 < 8 | 4 > 5); // true | fasle true
        System.out.println(8 == 9 | 7 != 8);// false | true  true
        System.out.println(3 == 3 | 4 == 4);// true | true true
        
        // || 短路或 有true则true
        System.out.println(3.0f == 3.1 || 4.0 == 5.0f); // false || fasle false
        System.out.println(30 >= 40 || 75 <= 'a'); // false || true  true
        System.out.println(30 >= 20 || 45 <= 'A'); // true  || true  true
        System.out.println(30 != 78 || 30 != 30);// true ||  false  true
        
        // & 逻辑与 有false则false
        int a = 12;
        int b = 13;
        boolean flag5 = true;
        System.out.println((a ++) > 10 & (b ++) > 20); // true & false false
        System.out.println("a = " + a + "\t b = " + b); // a = 13    b = 14
        System.out.println((++a) ==  a &  (++ b) == b); // true & true true
        System.out.println("a = " + a + "\t b = " + b); // a = 14  b = 15
        System.out.println((a --) > 100 & flag5);// false & true    false 
        System.out.println("a = " + a + "\t b = " + b); // a = 13 b = 15 
        System.out.println((-- a) > 100 & (b --) > 100); // false & false false
        System.out.println("a = " + a + "\t b = " + b);  // a = 12 b = 14
        
        // 短路与 && 有false 则false
        System.out.println((3+4) == 7 && (7 % 10) == 20); // true && false false
        System.out.println((3 * 10) == 30 && (12 + 12) == 24); //  true && true true
        System.out.println( 3 == 4 && 5 != 6); // false && true  false
        System.out.println("admin".equals("admin1")  || "123456".equals("1234567")); // false && false false
    }
}

运行截图:
在这里插入图片描述


&&、& 和 || 、| 的相同点和不同点:

相同点:&& 和 & 的结论都相同,||和 | 的结论都相同

不同点:&& 和 || 有短路效果,并且效率高。

左表达式 && 右表达式 :

  1. 当左表达式 为true时,则右表达式一定会执行,并返回右表达式的结果

  2. 当左表达式为false时,则右表达式不会执行,并直接返回左表达式的结果

左表达式 & 右表达式 :

  1. 当左表达式 为true时,则右表达式一定会执行,并返回右表达式的结果
  2. 当左表达式为false时,则右表达式依旧会执行,并直接返回左表达式的结果

左表达式 | 右表达式 :

  1. 当左表达式 为true时,则右表达式依旧会执行,并直接返回左表达式的结果
  2. 当左表达式为false时,则右表达式一定会执行,并返回右表达式的结果

左表达式 | | 右表达式 :

  1. 当左表达式 为true时,则右表达式不会执行,并直接返回左表达式的结果
  2. 当左表达式为false时,则右表达式一定会执行,并返回右表达式的结果

三目运算符(三元运算符)

格式:boolean类型的表达式 ? 表达式1 :表达式2;

代码展示:

public class OperationDemo019 {
    public static void main(String[] args) {
        int temp  = 3 > 5 ? 3 : 5;
        boolean temp1  =  true == false ? true : false;
        float temp2 = 3.0f >  5.0f ? 3.0f : 5.0f;
        char temp3  = 'a' > 'b' ? 'a' : 'b';
        System.out.println(temp);// 5
        System.out.println(temp1);// false
        System.out.println(temp2);// 5.0
        System.out.println(temp3); // b
        System.out.println(127 > -128 ? 127 : - 128); //127 
        System.out.println(5.0 > 98.0 ? 5.0 : 98.0); // 98.0
    }
}

运行截图:
在这里插入图片描述

注意:

  1. 三目运算符,一定会返回一个值,要么用一个变量来接收,要么打印出来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔走中的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值