java运算符()

一 表达式

  • 表达式由运算符和操作数组成
  • 如:5 num1, num1+num2, sum=num1+num2

二 运算符

1. 算术运算符

  • 算术运算符主要用于进行基本的算术运算, 如加法,减法,乘法,和除法等
算术运算符 名称 举例
+ 加法 1+2=3
减法 2-1=1
* 乘法 1*2=2
/ 除法 2/1=2
% 求余数 13%3=1
++ 自增 int n=2;n++
自减 int n=2;–n
package com.imooc.operator;

public class MathDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int num1 = 10, num2 = 5;
        int result; // 用于存放结果
        // 加法
        result = num1 + num2;
        System.out.println(num1 + "+" + num2 + "=" + result);
        // 字符串连接
        System.out.println("" + num1 + num2); // 结果是105
        // 减法
        result = num1 - num2;
        System.out.println(num1 + "-" + num2 + "=" + result);
        // 乘法
        result = num1 * num2;
        System.out.println(num1 + "*" + num2 + "=" + result);
        // 除法
        result = num1 / num2;
        System.out.println(num1 + "/" + num2 + "=" + result);
        // 余数
        result = num1 % num2;
        System.out.println(num1 + "%" + num2 + "=" + result);
        System.out.println("13.55/5=" + 13.55 / 5); // 结果是2.71
    }

}
  • 自增自减运算符
package com.imooc.operator;

public class MathDemo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // x++ 先运算,再自增
        int x = 4;
        int y = (x++) + 5;
        System.out.println("x=" + x + ",y=" + y); // 5 9

        // ++x 先自增,再运算
        int x1 = 4;
        int y1 = (++x1) + 5;
        System.out.println("x1=" + x1 + ",y1=" + y1); // 5 10

        // x-- 先运算,再自减
        int x2 = 4;
        int y2 = (x2--) + 5;
        System.out.println("x2=" + x2 + ",y2=" + y2); // 3 9

        // --x 先自减, 再运算
        int x3 = 4;
        int y3 = (--x3) + 5;
        System.out.println("x3=" + x3 + ",y3=" + y3); // 3 8

    }

}

2.赋值运算符

  • 格式: 变量=表达式;
  • 例:int = 3; // 将3赋值给变量n
  • 注意: 赋值运算符是从右往左运算!
  • 复合赋值运算符
运算符 表达式 计算 结果(x=15)
+= x+=5 x=x+5 20
-= x-=5 x=x-5 10
*= x*=5 x=x*5 75
/= x/=5 x=x/5 4
%= x%=5 x=x%5 0

3.关系运算符

  • 比较运算符用于判断两个数据的大小, 如大于
  • 比较的结果是一个布尔值
运算符 名称 表达式 结果
> 大于 2>1 true
< 小于 2<1 false
>= 大于等于 2>=1 true
<= 小于等于 2<=1 false
== 等于 2==1 false
!= 不等于 2!=1 true
  • 例: ‘A’ > ‘B’ 结果是false, 比较的是两个字符的ascll值
  • 5!=6 结果是true, 比较两个数值是否相等
  • true==false 结果位false, 两个布尔值不相等
  • float f=5.0f; long l=5; f==l; 结果是true , 浮点数与整数进行比较, 只要值相等就返回true

4.条件结构

  • 简单if语句的格式:
// 简单的if条件结构
if(条件){
    <语句块>
}
// 简单的例子
package com.imooc.operator;

public class ConditionDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 例:商场打折,如果两件商品的价格大于100则减20,并把原价和折后价格分别输出。
        // 定义两个变量,分别存放两件商品的价格
        double price1, price2;
        price1 = 80;
        price2 = 50;
        // 计算两件商品的总价
        double result = price1 + price2;
        // 进行判断,输出原件
        System.out.println("原件为: " + result);
        if (result > 100) {
            result -= 20;
        }
        System.out.println("打折后的价格: " + result);
    }

}
  • if-else语句的形式
if(条件){
    <语句块>
}else{
    <语句块>
}
// 判断一个整数是奇数还是偶数
package com.imooc.operator;

import java.util.Scanner;

public class ConditionDemo2 {

    public static void main(String[] args) {
        // 例: 判断一个整数是奇数还是偶数, 并将结果输出
        // 定义一个变量存放数据
        // 从键盘接收数据
        System.out.println("请输入一个整数: ");
        Scanner sc = new Scanner(System.in); // 键盘输入
        int num = sc.nextInt(); // 定义变量接收
        if (num % 2 == 0) {
            System.out.println(num + "这个是一个偶数");
        } else {
            System.out.println(num + "这是一个奇数");
        }
    }

}

5.逻辑运算符

名称 运算符 表达式
&&或& expression1&&expression2
||或| expression1||expression2
! !expression
// 小例子
package com.imooc.operator;

import java.util.Scanner;

public class TestDemo {

    public static void main(String[] args) {
        // 问题: 升学考试,java,python,c语言三门总成绩大于等于230,
        // 并且java成绩大于等于60, 才能升学
        // 三门总成绩大于等于230, 表示为sum>=230
        // java成绩大于等于60, 表示为ja>=60
        System.out.println("请输入java成绩: ");
        System.out.println("请输入python成绩: ");
        System.out.println("请输入c语言成绩: ");
        Scanner sc = new Scanner(System.in);
        double ja = sc.nextDouble();
        double py = sc.nextDouble();
        double c = sc.nextDouble(); // 接收键盘输入
        double sum = ja + py + c; // 成绩总和
        if ((sum >= 230) & (ja >= 60)) {
            System.out.println("升学!!!");
        } else {
            System.out.println("留级!!!");
        }
    }

}
  • & 逻辑’与’运算符(两边必须都为true, 结果才是true)
int n = 3;
boolean b = (3>7)&((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=false, n=4 n这里是先运算,再自增
  • && 运算符(短路运算符)
int n = 3;
boolean b = (3>7)&&((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=false, n=3 
// && 运算符又叫短路运算符, 如果第一个表达式的值就能决定表达式最后的结果,
// 运算符右边的表达式就不在计算了
  • & 和 && 的区别

    在 Java 中,& 和 && 都是逻辑运算符,但是它们之间有一些区别。
    & 是按位与运算符,它对两个操作数的每一位执行逻辑 AND 操作。例如,假设 a = 6 (二进制表示为 0110) 和 b = 3 (二进制表示为 0011),那么 a & b 的结果为 2 (二进制表示为 0010)。此外,如果使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值。
    && 是逻辑与运算符,它只在第一个操作数为真时才对第二个操作数进行求值。例如,如果 a > 5 && b < 10,只有在 a 大于 5 时才会对 b 进行求值。这个特性被称为“短路求值”,可以提高程序的效率和性能。 因此,可以总结出以下区别: & 是按位与运算符,&& 是逻辑与运算符。 & 对两个操作数的每一位执行逻辑 AND 操作,而 && 只在第一个操作数为真时才对第二个操作数进行求值。 使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值,而使用 && 运算符可以避免不必要的求值,提高程序的效率和性能。

& 和 && 的区别

  • 在 Java 中,& 和 && 都是逻辑运算符,但是它们之间有一些区别。
    & 是按位与运算符,它对两个操作数的每一位执行逻辑 AND 操作。例如,假设 a = 6 (二进制表示为 0110) 和 b = 3 (二进制表示为 0011),那么 a & b 的结果为 2 (二进制表示为 0010)。此外,如果使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值。
    && 是逻辑与运算符,它只在第一个操作数为真时才对第二个操作数进行求值。例如,如果 a > 5 && b < 10,只有在 a 大于 5 时才会对 b 进行求值。这个特性被称为“短路求值”,可以提高程序的效率和性能。 因此,可以总结出以下区别: & 是按位与运算符,&& 是逻辑与运算符。 & 对两个操作数的每一位执行逻辑 AND 操作,而 && 只在第一个操作数为真时才对第二个操作数进行求值。 使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值,而使用 && 运算符可以避免不必要的求值,提高程序的效率和性能。
  • & 是按位与运算符,&& 是逻辑与运算符。
  • & 对两个操作数的每一位执行逻辑 AND 操作,而 && 只在第一个操作数为真时才对第二个操作数进行求值。
  • 使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值,而使用 && 运算符可以避免不必要的求值,提高程序的效率和性能。
  • | 逻辑‘或’ 运算符(有一个结果为真就, 结果就是true)
int n = 3;
boolean b = (3<7)|((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=true, n=4 n这里是先运算,再自增
  • || 逻辑运算符(短路运算符)
int n = 3;
boolean b = (3<7)||((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=true, n=4 n这里是先运算,再自增

// || 运算符又叫短路运算符, 如果第一个表达式的值为真,
// 运算符右边的表达式就不在计算了, 直接是true
  • | 和 || 的区别

    在Java中,|和||都是逻辑运算符,但是它们有不同的行为。
    |是按位或运算符,用于对两个操作数的每个位执行逻辑或运算。即使左侧操作数的结果为true,右侧操作数也会被计算。
    例如,如果a = 5(二进制表示为0101)和b = 3(二进制表示为0011),则a | b将得到7(二进制表示为0111)。
    ||是逻辑或运算符,用于将两个布尔表达式进行逻辑或运算。如果左侧操作数的结果为true,右侧操作数将不会被计算。这是一种短路逻辑运算符。
    例如,如果a = 5和b = 3,则(a < b) || (a == 5)将返回true,因为第二个操作数的结果为true,不需要计算第一个操作数。 因此,|和||在行为上有所不同。如果你想对两个数进行按位或运算,应该使用|; 如果你想对两个布尔表达式进行逻辑或运算,并且只有在左侧操作数的结果为false时才需要计算右侧操作数,应该使用||。

  • 在Java中,|和||都是逻辑运算符,但是它们有不同的行为。
    |是按位或运算符,用于对两个操作数的每个位执行逻辑或运算。即使左侧操作数的结果为true,右侧操作数也会被计算。
    例如,如果a = 5(二进制表示为0101)和b = 3(二进制表示为0011),则a | b将得到7(二进制表示为0111)。
    ||是逻辑或运算符,用于将两个布尔表达式进行逻辑或运算。如果左侧操作数的结果为true,右侧操作数将不会被计算。这是一种短路逻辑运算符。
    例如,如果a = 5和b = 3,则(a < b) || (a == 5)将返回true,因为第二个操作数的结果为true,不需要计算第一个操作数。 因此,|和||在行为上有所不同。如果你想对两个数进行按位或运算,应该使用|; 如果你想对两个布尔表达式进行逻辑或运算,并且只有在左侧操作数的结果为false时才需要计算右侧操作数,应该使用||。
  • 逻辑 ‘非’ 运算符
  • ! 就是取反
package com.imooc.operator;

import java.util.Scanner;

public class LogicDemo {

    public static void main(String[] args) {
        // 键盘输入
        System.out.println("请输入一个整数: ");
        Scanner scr = new Scanner(System.in);
        int num = scr.nextInt();
        if (!(num % 3 == 0)) {
            System.out.println(num + "不能被3整除");
        } else {
            System.out.println(num + "能被3整除");
        }
    }

}

三 三目运算符

  • 语法:
  • 布尔表达式? 表达式1:表达式2
  • 当布尔表达式的值为true, 则返回表达式1的值, 否则返回表达式2的值
max=a>b?a:b; // 
System.out.println("最大值是: "+max); // 返回a的值
boolean b1=a>b?(3<6|3<1):(true==false);
System.out.println("b1="+b1); // 结果:b1=true

四 运算符的优先级

  • 优先级由上到下
运算符 描述
() 括号
!,++,– 逻辑非, 自增,自减
*,/,% 乘法,除法,取余数
+,- 加法,减法
<,<=,>,>= 小于,小于等于,大于,大于等于
==,!= 等于,不等于
&& 逻辑与
|| 逻辑或
=,+=,*=,/=,%=,-= 赋值运算符,复合赋值运算符
  • 总和案例
package com.imooc.operator;

import java.util.Scanner;

public class LeapYearDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 闰年的判断规则: 能被4整除但不能被100整除, 或者能被400整除

        System.out.println("请输入年份: ");
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt(); // 接收键盘输入
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            System.out.println(year + "年是闰年");
            // 能被4整除但不能被100整除, 或者能被400整除 就是闰年
        } else {
            System.out.println(year + "年不是闰年");
        }
    }

}
————————

一 表达式

  • 表达式由运算符和操作数组成
  • 如:5 num1, num1+num2, sum=num1+num2

二 运算符

1. 算术运算符

  • 算术运算符主要用于进行基本的算术运算, 如加法,减法,乘法,和除法等
算术运算符 名称 举例
+ 加法 1+2=3
减法 2-1=1
* 乘法 1*2=2
/ 除法 2/1=2
% 求余数 13%3=1
++ 自增 int n=2;n++
自减 int n=2;–n
package com.imooc.operator;

public class MathDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int num1 = 10, num2 = 5;
        int result; // 用于存放结果
        // 加法
        result = num1 + num2;
        System.out.println(num1 + "+" + num2 + "=" + result);
        // 字符串连接
        System.out.println("" + num1 + num2); // 结果是105
        // 减法
        result = num1 - num2;
        System.out.println(num1 + "-" + num2 + "=" + result);
        // 乘法
        result = num1 * num2;
        System.out.println(num1 + "*" + num2 + "=" + result);
        // 除法
        result = num1 / num2;
        System.out.println(num1 + "/" + num2 + "=" + result);
        // 余数
        result = num1 % num2;
        System.out.println(num1 + "%" + num2 + "=" + result);
        System.out.println("13.55/5=" + 13.55 / 5); // 结果是2.71
    }

}
  • 自增自减运算符
package com.imooc.operator;

public class MathDemo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // x++ 先运算,再自增
        int x = 4;
        int y = (x++) + 5;
        System.out.println("x=" + x + ",y=" + y); // 5 9

        // ++x 先自增,再运算
        int x1 = 4;
        int y1 = (++x1) + 5;
        System.out.println("x1=" + x1 + ",y1=" + y1); // 5 10

        // x-- 先运算,再自减
        int x2 = 4;
        int y2 = (x2--) + 5;
        System.out.println("x2=" + x2 + ",y2=" + y2); // 3 9

        // --x 先自减, 再运算
        int x3 = 4;
        int y3 = (--x3) + 5;
        System.out.println("x3=" + x3 + ",y3=" + y3); // 3 8

    }

}

2.赋值运算符

  • 格式: 变量=表达式;
  • 例:int = 3; // 将3赋值给变量n
  • 注意: 赋值运算符是从右往左运算!
  • 复合赋值运算符
运算符 表达式 计算 结果(x=15)
+= x+=5 x=x+5 20
-= x-=5 x=x-5 10
*= x*=5 x=x*5 75
/= x/=5 x=x/5 4
%= x%=5 x=x%5 0

3.关系运算符

  • 比较运算符用于判断两个数据的大小, 如大于
  • 比较的结果是一个布尔值
运算符 名称 表达式 结果
> 大于 2>1 true
< 小于 2<1 false
>= 大于等于 2>=1 true
<= 小于等于 2<=1 false
== 等于 2==1 false
!= 不等于 2!=1 true
  • 例: ‘A’ > ‘B’ 结果是false, 比较的是两个字符的ascll值
  • 5!=6 结果是true, 比较两个数值是否相等
  • true==false 结果位false, 两个布尔值不相等
  • float f=5.0f; long l=5; f==l; 结果是true , 浮点数与整数进行比较, 只要值相等就返回true

4.条件结构

  • 简单if语句的格式:
// 简单的if条件结构
if(条件){
    <语句块>
}
// 简单的例子
package com.imooc.operator;

public class ConditionDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 例:商场打折,如果两件商品的价格大于100则减20,并把原价和折后价格分别输出。
        // 定义两个变量,分别存放两件商品的价格
        double price1, price2;
        price1 = 80;
        price2 = 50;
        // 计算两件商品的总价
        double result = price1 + price2;
        // 进行判断,输出原件
        System.out.println("原件为: " + result);
        if (result > 100) {
            result -= 20;
        }
        System.out.println("打折后的价格: " + result);
    }

}
  • if-else语句的形式
if(条件){
    <语句块>
}else{
    <语句块>
}
// 判断一个整数是奇数还是偶数
package com.imooc.operator;

import java.util.Scanner;

public class ConditionDemo2 {

    public static void main(String[] args) {
        // 例: 判断一个整数是奇数还是偶数, 并将结果输出
        // 定义一个变量存放数据
        // 从键盘接收数据
        System.out.println("请输入一个整数: ");
        Scanner sc = new Scanner(System.in); // 键盘输入
        int num = sc.nextInt(); // 定义变量接收
        if (num % 2 == 0) {
            System.out.println(num + "这个是一个偶数");
        } else {
            System.out.println(num + "这是一个奇数");
        }
    }

}

5.逻辑运算符

名称 运算符 表达式
&&或& expression1&&expression2
||或| expression1||expression2
! !expression
// 小例子
package com.imooc.operator;

import java.util.Scanner;

public class TestDemo {

    public static void main(String[] args) {
        // 问题: 升学考试,java,python,c语言三门总成绩大于等于230,
        // 并且java成绩大于等于60, 才能升学
        // 三门总成绩大于等于230, 表示为sum>=230
        // java成绩大于等于60, 表示为ja>=60
        System.out.println("请输入java成绩: ");
        System.out.println("请输入python成绩: ");
        System.out.println("请输入c语言成绩: ");
        Scanner sc = new Scanner(System.in);
        double ja = sc.nextDouble();
        double py = sc.nextDouble();
        double c = sc.nextDouble(); // 接收键盘输入
        double sum = ja + py + c; // 成绩总和
        if ((sum >= 230) & (ja >= 60)) {
            System.out.println("升学!!!");
        } else {
            System.out.println("留级!!!");
        }
    }

}
  • & 逻辑’与’运算符(两边必须都为true, 结果才是true)
int n = 3;
boolean b = (3>7)&((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=false, n=4 n这里是先运算,再自增
  • && 运算符(短路运算符)
int n = 3;
boolean b = (3>7)&&((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=false, n=3 
// && 运算符又叫短路运算符, 如果第一个表达式的值就能决定表达式最后的结果,
// 运算符右边的表达式就不在计算了
  • & 和 && 的区别

    在 Java 中,& 和 && 都是逻辑运算符,但是它们之间有一些区别。
    & 是按位与运算符,它对两个操作数的每一位执行逻辑 AND 操作。例如,假设 a = 6 (二进制表示为 0110) 和 b = 3 (二进制表示为 0011),那么 a & b 的结果为 2 (二进制表示为 0010)。此外,如果使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值。
    && 是逻辑与运算符,它只在第一个操作数为真时才对第二个操作数进行求值。例如,如果 a > 5 && b < 10,只有在 a 大于 5 时才会对 b 进行求值。这个特性被称为“短路求值”,可以提高程序的效率和性能。 因此,可以总结出以下区别: & 是按位与运算符,&& 是逻辑与运算符。 & 对两个操作数的每一位执行逻辑 AND 操作,而 && 只在第一个操作数为真时才对第二个操作数进行求值。 使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值,而使用 && 运算符可以避免不必要的求值,提高程序的效率和性能。

& 和 && 的区别

  • 在 Java 中,& 和 && 都是逻辑运算符,但是它们之间有一些区别。
    & 是按位与运算符,它对两个操作数的每一位执行逻辑 AND 操作。例如,假设 a = 6 (二进制表示为 0110) 和 b = 3 (二进制表示为 0011),那么 a & b 的结果为 2 (二进制表示为 0010)。此外,如果使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值。
    && 是逻辑与运算符,它只在第一个操作数为真时才对第二个操作数进行求值。例如,如果 a > 5 && b < 10,只有在 a 大于 5 时才会对 b 进行求值。这个特性被称为“短路求值”,可以提高程序的效率和性能。 因此,可以总结出以下区别: & 是按位与运算符,&& 是逻辑与运算符。 & 对两个操作数的每一位执行逻辑 AND 操作,而 && 只在第一个操作数为真时才对第二个操作数进行求值。 使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值,而使用 && 运算符可以避免不必要的求值,提高程序的效率和性能。
  • & 是按位与运算符,&& 是逻辑与运算符。
  • & 对两个操作数的每一位执行逻辑 AND 操作,而 && 只在第一个操作数为真时才对第二个操作数进行求值。
  • 使用 & 运算符,无论第一个操作数的值是什么,都会对第二个操作数进行求值,而使用 && 运算符可以避免不必要的求值,提高程序的效率和性能。
  • | 逻辑‘或’ 运算符(有一个结果为真就, 结果就是true)
int n = 3;
boolean b = (3<7)|((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=true, n=4 n这里是先运算,再自增
  • || 逻辑运算符(短路运算符)
int n = 3;
boolean b = (3<7)||((n++)<2); // 问 b=?, n=?
System.out.println("b="+b+",n="+n);
// b=true, n=4 n这里是先运算,再自增

// || 运算符又叫短路运算符, 如果第一个表达式的值为真,
// 运算符右边的表达式就不在计算了, 直接是true
  • | 和 || 的区别

    在Java中,|和||都是逻辑运算符,但是它们有不同的行为。
    |是按位或运算符,用于对两个操作数的每个位执行逻辑或运算。即使左侧操作数的结果为true,右侧操作数也会被计算。
    例如,如果a = 5(二进制表示为0101)和b = 3(二进制表示为0011),则a | b将得到7(二进制表示为0111)。
    ||是逻辑或运算符,用于将两个布尔表达式进行逻辑或运算。如果左侧操作数的结果为true,右侧操作数将不会被计算。这是一种短路逻辑运算符。
    例如,如果a = 5和b = 3,则(a < b) || (a == 5)将返回true,因为第二个操作数的结果为true,不需要计算第一个操作数。 因此,|和||在行为上有所不同。如果你想对两个数进行按位或运算,应该使用|; 如果你想对两个布尔表达式进行逻辑或运算,并且只有在左侧操作数的结果为false时才需要计算右侧操作数,应该使用||。

  • 在Java中,|和||都是逻辑运算符,但是它们有不同的行为。
    |是按位或运算符,用于对两个操作数的每个位执行逻辑或运算。即使左侧操作数的结果为true,右侧操作数也会被计算。
    例如,如果a = 5(二进制表示为0101)和b = 3(二进制表示为0011),则a | b将得到7(二进制表示为0111)。
    ||是逻辑或运算符,用于将两个布尔表达式进行逻辑或运算。如果左侧操作数的结果为true,右侧操作数将不会被计算。这是一种短路逻辑运算符。
    例如,如果a = 5和b = 3,则(a < b) || (a == 5)将返回true,因为第二个操作数的结果为true,不需要计算第一个操作数。 因此,|和||在行为上有所不同。如果你想对两个数进行按位或运算,应该使用|; 如果你想对两个布尔表达式进行逻辑或运算,并且只有在左侧操作数的结果为false时才需要计算右侧操作数,应该使用||。
  • 逻辑 ‘非’ 运算符
  • ! 就是取反
package com.imooc.operator;

import java.util.Scanner;

public class LogicDemo {

    public static void main(String[] args) {
        // 键盘输入
        System.out.println("请输入一个整数: ");
        Scanner scr = new Scanner(System.in);
        int num = scr.nextInt();
        if (!(num % 3 == 0)) {
            System.out.println(num + "不能被3整除");
        } else {
            System.out.println(num + "能被3整除");
        }
    }

}

三 三目运算符

  • 语法:
  • 布尔表达式? 表达式1:表达式2
  • 当布尔表达式的值为true, 则返回表达式1的值, 否则返回表达式2的值
max=a>b?a:b; // 
System.out.println("最大值是: "+max); // 返回a的值
boolean b1=a>b?(3<6|3<1):(true==false);
System.out.println("b1="+b1); // 结果:b1=true

四 运算符的优先级

  • 优先级由上到下
运算符 描述
() 括号
!,++,– 逻辑非, 自增,自减
*,/,% 乘法,除法,取余数
+,- 加法,减法
<,<=,>,>= 小于,小于等于,大于,大于等于
==,!= 等于,不等于
&& 逻辑与
|| 逻辑或
=,+=,*=,/=,%=,-= 赋值运算符,复合赋值运算符
  • 总和案例
package com.imooc.operator;

import java.util.Scanner;

public class LeapYearDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 闰年的判断规则: 能被4整除但不能被100整除, 或者能被400整除

        System.out.println("请输入年份: ");
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt(); // 接收键盘输入
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            System.out.println(year + "年是闰年");
            // 能被4整除但不能被100整除, 或者能被400整除 就是闰年
        } else {
            System.out.println(year + "年不是闰年");
        }
    }

}