运算符和短路

本文详细介绍了Java中的各种双目运算符,包括算术运算符(如加、减、乘、除和取模)、关系运算符、赋值运算符、逻辑运算符、位运算符以及特殊运算如三元运算符和字符串拼接。还解释了短路运算的概念,如逻辑运算中的短路行为。
摘要由CSDN通过智能技术生成

双目运算符是指需要两个操作数(位于运算符两侧)进行运算的运算符。在Java中,常见的双目运算符有以下几种:

1.算术运算符

用于执行基本的算术操作,例如加法、减法、乘法和除法等。

  • +:加法运算
  • -:减法运算
  • *:乘法运算
  • /:除法运算
  • %:取模运算(求余)
@Test
public void test2() {
    //双目运算符 左右加空格
    int num1 = 3;
    int num2 = 3;
    //如果只需要一个变量用来表示结果可以不用设置新的变量只需要打印运算表达式
    int result = num1 + num2;
    System.out.println(result);
    System.out.println(num1 + num2);//加法运算
    System.out.println(num1 - num2);//减法运算
    System.out.println(num1 * num2);//乘法运算
    System.out.println(num1 / num2);//除法运算

    System.out.println(8 / 2);//4
    System.out.println(8 % 2);//取余 = 0
    System.out.println(8 / 5);//1
    System.out.println(8 % 5);//取余 = 3
}

除法运算:两个操作数是整型的,结果也会是整型的,舍弃掉小数部分;如果有一个数是浮点数,结果将自动转型为浮点型。

取余运算:两个操作数是整型的,结果也会是整型的,如果有一个数是浮点数,结果将自动转型为浮点型。

 2.关系运算符

用于比较两个操作数之间的关系,结果返回布尔值(true或false)。

  • ==:等于
  • !=:不等于
  • <:小于
  • >:大于
  • <=:小于等于
  • >=:大于等于

比较之后的结果只有两种情况:true、false,比较运算的结果是boolean类型 

//比较运算符
@Test
public void test4() {
    System.out.println(5 > 3);//true
    System.out.println(5 < 3);//false
    System.out.println(5 <= 3);//false
    System.out.println(5 == 3);//false
    System.out.println(5 <= 10);//true
    int num1 = 3;
    int num2 = 5;
    System.out.println(num1 != num2);//true

    boolean bool1 = num1 != num2;
    System.out.println(bool1);//true
    boolean bool2 = 3 >= 4;
    System.out.println(bool2);//false
}

 3.赋值运算符

用于将右侧的值赋给左侧的变量。

  • =:简单赋值
  • +=:加后赋值
  • -=:减后赋值
  • *=:乘后赋值
  • /=:除后赋值
  • %=:取模后赋值

 4.逻辑运算符

用于对布尔值进行逻辑运算,结果返回布尔值。

  • &&:逻辑与(短路与)
  • ||:逻辑或(短路或)
  • !:逻辑非

&& 、|| 、!运算结果是boolean类型

&&:两边的结果都是true,结果才是true

||:两边只要有一个是true,结果就是true

@Test
public void test5() {
    int num1 = 7;
    int num2 = 10;
    //比较运算符的优先级高于逻辑运算符
    //加了括号之后就不依赖默认优先级:()>比较运算符>逻辑运算符
    boolean result1 = (num1 >= 5) && (num2 >= 7);
    System.out.println(result1);//true
    boolean result2 = (num1 >= 8) && (num2 >= 7);
    System.out.println(result2);//false
    boolean result3 = (num1 >= 8) || (num2 >= 7);
    System.out.println(result3);//true
    boolean result4 = (num1 >= 8) || (num2 >= 11);
    System.out.println(result4);//false

 5.位运算符

用于对整数类型的数据执行位级操作。

  • &:按位与
  • |:按位或
  • ^:按位异或
  • <<:带符号左移
  • >>:带符号右移
  • >>>:无符号右移

 6.其他运算符

包括三元条件运算符和实例of运算符等。

三目运算符也叫三元运算符,或条件运算符。

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

如果表达式1为true,则返回表达式2的值,如果表达式1为false,则返回表达式3的值。

@Test
public void test4(){
    int num1 = 12;
    int num2 = 6;
   
    //三目运算符
    int max1 = num1 >= num2 ? num1 : num2;
    System.out.println(max1);
}

 7.单目运算符

  • ++(自增1) --(自减1)
  • int i = 0;
  • i++; // i = i + 1;
  • i--; // i = i - 1;
  • ++i; // i = i + 1
  • --i; // i = i - 1
  • 单独使用的时候,++、--在前后是没有差别的
  • 被使用的时候,在前后是有差别的,++i先加后用,i++先用后加
  • 自增自减运算, i++ 是先运用在计算,++i 先计算在运用

//单目运算符
//num1 ++
@Test
public void test3() {
    int num = 1;
    num = num + 1;
    System.out.println(num);
    //++(自增1)  --(自减1)
    int i = 1;
    i++;//i = i + 1
    //单独使用的时候,++、--在前后是没有差别的
    System.out.println(i);//2
    //先输出再加1
    System.out.println(i++);//2
    //输出完加1
    System.out.println(i);//3
    //先加1再输出
    System.out.println(++i);//4
}

8.短路

  • 逻辑与短路(&&):当使用逻辑与运算符(&&)时,如果第一个操作数为假(false),则不会继续计算第二个操作数,因为整个表达式已经确定为假。这种情况下,第二个操作数将被短路。
  • 逻辑或短路(||):当使用逻辑或运算符(||)时,如果第一个操作数为真(true),则不会继续计算第二个操作数,因为整个表达式已经确定为真。这种情况下,第二个操作数将被短路。
  • 按位与(&):将两个操作数的对应位都设为1时,结果的对应位为1;否则为0。
  • 按位或(|):将两个操作数的对应位有一个为1时,结果的对应位为1;否则为0。
  • 按位异或(^):将两个操作数的对应位不相同时,结果的对应位为1;相同则为0。
  • 按位取反(~):将操作数的每一位取反,即0变为1,1变为0。

​​​​​​

//短路
    int sou1 = 3;
    int sou2 = 5;
    //&&短路,sou1>0前一部分错误后面sou1++不运行
    System.out.println(sou1 < 0 && sou1++ < sou2);//false
    System.out.println(sou1);//3
    System.out.println(sou2);//5
    //sou1++与sou2比较是先比较再加1
    System.out.println(sou1 > 0 && sou1++ < sou2);//true
    System.out.println(sou1);
    System.out.println(sou1 > 0 && ++sou1 <= sou2);//true
    System.out.println(sou1);
    System.out.println(sou1 > 0 && (sou1 + 1) <= sou2);//false
    System.out.println(sou1);

    //||短路
    int sou3 = 3;
    int sou4 = 5;
    System.out.println(sou3 > 0 || sou3++ < sou4);//true
    System.out.println(sou3);//3
    System.out.println(sou4);//5

    //位运算
    System.out.println(3 & 5);
}

9.+号运算符 

两边都是数字,则做的就是加法运算;若一边为字符串,则做的是字符串的拼接。

@Test
public void test5(){
    int age = 3;
    System.out.println("年龄是" + age +"岁");
    System.out.println("年龄是age岁");//年龄是age岁
    System.out.println("年龄是23岁");//年龄是23岁

    String str = "年龄是23岁";//字符串
    String str1 = "";//空字符串

    //遇到字符串之后就是拼接不是运算
    System.out.println(10 + 20 + "" + 30);//3030
    System.out.println("" + 10 + 20 + 30);//102030
}

结果:

  • 36
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值