欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA第三天学习

程序员文章站 2022-04-15 23:09:45
JAVA第三天学习1.JAVA基础—逻辑运算符&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)注意事项:逻辑运算符的结果一般为布尔类型&&,&,|,||的区别:①&&与&,|与||二者最终的运算结果一样②&&表达式左边为真继续执行右边的表达式,&左右的表达式都要执行(相比较下,&&更适用写程序),|与||同理;实例代码:publi...

JAVA第三天学习

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第三天学习

  • 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第三天学习

区别

//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第三天学习

代码:

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第三天学习

本文地址:https://blog.csdn.net/Dhxy1030/article/details/107349368