1.JAVA基础—逻辑运算符

  • &(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)

注意事项:逻辑运算符的结果一般为布尔类型

  • &&,&,|,||的区别:①&&与&,|与||二者最终的运算结果一样②&&表达式左边为真继续执行右边的表达式,&左右的表达式都要执行(相比较下,&&更适用写程序),|与||同理;

实例代码:

public class yunsuanfy {
    public static void main(String[] args) {
        int a=4;
        int b=3;
        System.out.println(a<b&&b++>0);
        System.out.println(a);
        System.out.println(b);
    }
}

运行结果:false

4

3

public class yunsuanfy {
    public static void main(String[] args) {
        int a=4;
        int b=3;
        System.out.println(a<b&b++>0);
        System.out.println(a);
        System.out.println(b);
    }
}

运行结果:false

4

4

2.位运算符

  • &(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)

注意事项:①位运算符都是直接对二进制补码进行运算(正数原码反码补码一样)

②^位异或:一个数被另外一个数位异或两次,该数不变 例:8 ^ 9 ^ 9=8

示例

对+10,-10进行按位取反运算

+10

原码:0 0001010

反码:0 0001010

补码:0 0001010

按位取反:1 1110101

推回原码:1 0001011

最终结果是:-11

-10

原码:1 0001010

反码:1 1110101

补码:1 1110110

按位取反:0 0001001

推回原码:0 0001001

最终结果是:9

<<与>>的用法与结论
  • 左移运算符: 空位补0,被移除的高位丢弃。 例:4<<2 : 00000100 左移两位为00010000,结果是16
  • 右移运算符: 被移位的二进制右移后,最高位是0,空缺位补0;最高位是1,,空位补1。例:-4>>2:10000100 右移两位为10000001,结果是-1
  • 无符号移位:被移位二进制最高位无论是0或者是1,空缺位都用0补。

结论:<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
>> : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5

三元运算符:关系表达式?表达式1:表达式2

示例:获取三个数中的最大值

代码:

public class demo4 {
    public static void main(String[] args) {
    int a=20;
    int b=50;
    int c=30;
    int max1= a>b? a:b;
    int max=max1>c? max1:c;
        System.out.println(max);
    }
}

运行结果:50

if,switch用法示例及区别

  • if:获取三个数中的最大值

代码:

public class ifdemo {
    public static void main(String[] args) {
       //三元表达式能写出来的,if一定能写出来,反之不可以:三元运算符是必须要有返回值,而if-else语句并不一定有返回值,其执行结果可能是赋值语句或者打印输出语句,当if else 运算后,有一个具体的的结果时,可以简化写成三元运算符。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数");
        int a = sc.nextInt();
        System.out.println("请输入第二个数");
        int b = sc.nextInt();
        System.out.println("请输入第三个数");
        int c = sc.nextInt();
        int max = 0;
        if (a > b) {
            max = a;
        } else {
            max = b;
        }
        if (max > c) {
            System.out.println("三个数最大值是" + max);
        } else {
            max = c;
            System.out.println("三个数最大值是" + max);
        }

    }
}

运算结果是:

JAVA上面或者 java中的或者是怎么表示_JAVA上面或者

  • switch:输入月份,判断季节

代码:

public class manydemo {
    public static void main(String[] args) {
        //多重条件选择
        //switch 语句支持数据类型 byte short int char string 枚举
        //case 后的匹配值一定是常量,所有case 后的匹配值使用一种类型,case 后的匹配值不能相同
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入月份");
        int score = sc.nextInt();
        switch (season) {
            case 2:
            case 3:
            case 4:
                System.out.println("春天");
                break;
            case 5:
            case 6:
            case 7:
                System.out.println("夏天");
                break;
            case 8:
            case 9:
            case 10:
                System.out.println("秋天");
                break;
            case 11:
            case 12:
            case 1:
                System.out.println("冬天");
                break;
            default:
                System.out.println("月份出现错误");
                break;
        }
    }
}

运行结果:

JAVA上面或者 java中的或者是怎么表示_java_02

区别

//switch 针对有限个常量进行选择不能对范围进行选择
//if 对范围和常量都可以选择

switch语句注意事项break可以省略吗?可以省略,但是结果可能不是我们想要的。会出现一个现象:case穿透(继续运算下一个case的表达式,直到遇到break)

示例:

代码

import java.util.Scanner;
public class manydemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数(2~3)");
        int a=sc.nextInt();
        switch(a){
            case 2: a++;break;
            case 3: a--;break;
            default:
                System.out.println("输入错误");break;
        }
        System.out.println("a="+a);
    }
}

运行结果:

JAVA上面或者 java中的或者是怎么表示_java_03

代码:

import java.util.Scanner;

public class manydemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数(2~3)");
        int a=sc.nextInt();
        switch(a){
            case 2: a++;
            case 3: a--;break;
            default:
                System.out.println("输入错误");break;
        }
        System.out.println("a="+a);
    }
}

运行结果:

JAVA上面或者 java中的或者是怎么表示_JAVA上面或者_04