day05_java中常见的运算符

字面量或者变量进行操作的符号就是运算符用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。

java中常用的运算符有下面几种

算术运算符

代码示例

public class Demo01Operator {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;

        System.out.println(a + b);// 7
        System.out.println(a - b);// -1
        System.out.println(a * b);// 12

        //整数相除 不保留小数
        System.out.println(a / b);// 0

        //如果想要显示小数 使用浮点类型计算
        System.out.println((double) a / b);// 0.75

        //商*除数 + 余数 = 被除数
        System.out.println(a % b);// 3

    }
}

经典案例

public class Test {
    public static void main(String[] args) {
        //定义一个四位数 
        int number = 1234;

        //通过运算操作求出个位,十位,百位,千位
        System.out.println(number + " 这个四位数个位上的数字是:" + (number % 10));
        System.out.println(number + " 这个四位数十位上的数字是:" + (number / 10 % 10));
        System.out.println(number + " 这个四位数百位上的数字是:" + (number / 100 % 10));
        System.out.println(number + " 这个四位数千位上的数字是:" + (number / 1000 % 10));
    }
}

注意事项:

  • / 和 % 的区别:两个数据做除法,/ 取结果的商,%取结果的余数
  • 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
  • 求余运算,余数的符号只看被除数

“+”号的两种用法

  • 第一种:对于+两边都是数值的话,+就是加法的意思

System.out.println(1+2);//3
System.out.println(1+'a');//98
  • 第二种:对于+两边至少有一边是字符串得话,+就是拼接的意思,其结果依然是一个字符串

String str = "Java";
// String + int --> String
System.out.println(str + 520); // Java520

// String + int + int --> String  + int-->String
System.out.println(str + 5 + 20); // Java520

默认情况下是从左到右进行运算,我们可以使用小括号来调整运算顺序

//默认情况下,从左到右
System.out.println("1" + 2 + 3);//123
//小括号里的先算
System.out.println("1" + (2 + 3));//15

自加自减运算

  • ++ -- 既可以放在变量的后边,也可以放在变量的前边
  • ++ 、-- 只能操作变量,不能操作字面量的 

单独使用

单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的

  • 变量前++ :例如 ++a
  • 变量后++ :例如 a++
public class Demo03Operator {
    public static void main(String[] args) {
        // 定义一个int类型的变量a
        int a = 3;
        //变量前++和变量后++,变量的结果是一样的;
        ++a;
        System.out.println(a);//4
        a++;
        System.out.println(a);//5
    }
}

复合使用

  ++、--如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别

  • 放在变量的前面先对变量进行+1、-1,再拿变量的值进行运算
  • 放在变量的后面先拿变量的值进行运算,再对变量的值进行+1、-1
public class Demo04Operator {
    public static void main(String[] args) {
        // 其他变量放在一起使用
        int x = 3;
        int y = x++;

        System.out.println(x);//4
        System.out.println(y);//3
        System.out.println("==========");

        // 和输出语句一起
        int z = 5;
        System.out.println(z++);//5
        System.out.println(z);//6

    }
}

赋值运算符

基本赋值运算符:就是“ 

int a = 10; // 先看“=”右边,把数据10赋值给左边的变量a存储。

扩展赋值运算符

代码示例

public class Demo04Operator {
    public static void main(String[] args) {
        short s = 10;
        /*
          s = s + 10;  此行代码报出,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度
         */

        s += 10; // 此行代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);
        System.out.println(s);//20
    }
}

注意事项:

  • 所有的赋值运算符的 = 左边一定是一个变量  

关系运算符/比较运算符

对数据进行条件判断的符号,最终会返回的结果一定是 布尔结果(false,true)

示例

public class Demo05Operator {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;

        System.out.println(a == b);  //true
        System.out.println(a != b); // false
        System.out.println(a > b); //  false
        System.out.println(a >= b); // true
        System.out.println(a < b); // false
        System.out.println(a <= b); // true

        //相等判断必须是== 如果使用=是在进行赋值操作!
        System.out.println(a = b); // 10 
    }
}

逻辑运算符 

可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果

示例

public class Demo06Operator {
    public static void main(String[] args) {
        //定义变量
        int i = 10;
        int j = 20;
        int k = 30;

        //  & “与”,并且的关系,只要表达式中有一个值为false,结果即为false
        System.out.println((i > j) & (i > k)); //false
        System.out.println((i < j) & (i > k)); //false
        System.out.println((i > j) & (i < k)); //false
        System.out.println((i < j) & (i < k)); //true
        System.out.println("--------");

        //  | “或”,或者的关系,只要表达式中有一个值为true,结果即为true
        System.out.println((i > j) | (i > k)); //false
        System.out.println((i < j) | (i > k)); //true
        System.out.println((i > j) | (i < k)); //true
        System.out.println((i < j) | (i < k)); //true
        System.out.println("--------");

        // ^ “异或”,相同为false,不同为true
        System.out.println((i > j) ^ (i > k)); //false
        System.out.println((i < j) ^ (i > k)); //true
        System.out.println((i > j) ^ (i < k)); //rue
        System.out.println((i < j) ^ (i < k)); //false
        System.out.println("--------");

        // ! “非”,取反
        System.out.println((i > j)); //false
        System.out.println(!(i > j)); // true
    }
}
短路逻辑运算符
  • 在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。
  • 同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。

示例

public class Demo07Operator {
    public static void main(String[] args) {
        int x = 3;
        int y = 4;
        System.out.println((x++ > 4) & (y++ > 5)); //false
        System.out.println(x); // 4
        System.out.println(y); // 5

        //左边已经可以确定结果为,false 右边不参与运算
        System.out.println((x++ > 4) && (y++ > 5)); // false
        System.out.println(x); // 5
        System.out.println(y); // 5

        System.out.println((x++ > 4) | (y++ > 5)); //true
        System.out.println(x); // 6
        System.out.println(y); // 6

        //左边已经可以确定结果为 true,右边不参与运算
        System.out.println((x++ > 4) || (y++ > 5)); // true
        System.out.println(x); // 7
        System.out.println(y); // 6

    }
}

三元运算符

语法格式

执行流程

  1. 首先计算关系表达式的值
  2. 如果值为true,返回表达式1的值
  3. 如果为false,返回表达式2的值

示例

/*
需求:一座寺庙里住着三个和尚,已知他们的身高分别为135cm、110cm、165cm,请用程序实现获取这三个和尚的最高身高。
*/
public class Demo08Test {
    public static void main(String[] args) {
        //1:定义三个变量用于保存和尚的身高,单位为cm,这里仅仅体现数值即可。
        int height1 = 135;
        int height2 = 110;
        int height3 = 165;
        
        //2:用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。
        int tempHeight = height1 > height2 ? height1 : height2;
        
        //3:用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。
        int maxHeight = tempHeight > height3 ? tempHeight : height3;
        
        //4:输出结果
        System.out.println("maxHeight:" + maxHeight); //maxHeight:165
    }
}

运算符优先级

在表达式中,哪个运算符先执行后执行是要看优先级的,例如 “*、/” 的优先级高于”+、-” 。

示例

public class Demo09Test {
    public static void main(String[] args) {
        // 目标:看看Java是否存在优先级,大家以后需要注意优先级问题
        System.out.println(10 > 3 || 10 > 3 && 10 < 3); // true
        System.out.println( (10 > 3 || 10 > 3 ) && 10 < 3); // false
    }
}

写代码的注意事项

  • 表达式不要太复杂
  • 先算的使用( )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值