Java SE基础知识(3)

Java SE基础知识(三)

### 运算符

package com.hyq;

public class demo {
    public static void main(String[] args) {
//赋值运算符,比较运算符,算数运算符
/*
A:
逻辑运算符有哪些
&(并且),|(或者),!(非),^异或,&&(短路与),||(短路或)
逻辑运算符的运算结果只能是布尔类型;
 */

        int a = 10;
        int b = 20;
//并且 运算两端只有左右两端同时为true,其最终结果猜是true,只要一段为false其最终结果都为false;
        boolean f = a == b & a > b;
        f = a > 1 & b < 100;
        f = true & true;
        f = false & true;
//| 或者 | 的运算两端,只要任意一算为true ,只有运算两端都为false其最红个结果都为false;
        boolean flag = a > b | a < b;
//变量.sout 快速输出这个变量;
        System.out.println(flag);
// !非  取反
//        System.out.println(!true);
//        异或 ^ 相同为false 不同为true;


    }
}

&(并且) &&(短路与) | (或者) ||(短路或)的区别

package com.hyq;

public class mydemo3 {
    public static void main(String[] args) {
        //ctrl + w 选中代码;
        //&(并且) &&(短路与)   | (或者) ||(短路或)的区别;
        //他们在运算结果上是没有区别的,只是在运算效率上有区别;
         int a=10;
         int b=20;
         boolean f=a>b&b>0;
         System.out.println("结果是"+f);
         //&左右两端的表达式都需要执行;
        //&&当左端为false,右端的表达式就不执行了;
        //&&当右端为true,右端的表达式还是需要执行的吗;
         boolean s=a>b&&b>0;
        System.out.println("结果是"+s);


        // | 左右两端的表达式都需要执行;
        // || 当左端为false,右端的表达式就不执行了;
        // || 当右端为true,右端的表达式还是需要执行的吗;
        int c=2;
        int d=3;

        boolean f3=c>d | d++>0;
        System.out.println("结果是"+f3);
        boolean f4=c<d | d++>0;
        System.out.println("结果是"+f4);

    }
}

数值交换

package com.hyq;

public class zhijiaohuan {
    public static void main(String[] args) {
        //值交换
        int a = 10;
        int b = 20;
        //方式一:通过中间变量进行值交换;
        int t=a;
         a=b;
         b=t;
        System.out.println("a:"+a);
        System.out.println("b:"+b);
        //方式二:利用  ^ 一个数被另一个数位异或两次,该数数值不变;

        a=a^b;
        b=a^b;//b=a^b^b=a
        a=a^b;//a^b^a=a
        System.out.println("a:"+a);
        System.out.println("b:"+b);

        //方式三:
        a=a+b;
        b=a-b;
        a=a-b;
        //方式四:
        b=a+b-(b=a);
         }
}

位运算符

package com.hyq;

public class weiyuansuanfu {
    public static void main(String[] args) {
        //位运算符 &(与) |(或) ^(异或) ~(按位取反) <<(左移) >>(右移) >>>(无符号右移)
        // & | ^ 如果两端是数值,就是位运算符;
        // & | ^ 如果两端是布尔类型,就是逻辑运算符;
        //注意事项:位运算是直接二级制补码进行运算,运算效率高一些;

        // &有0则0;|有1则1;^相同则0 不同则1;~ 1变0  0变1;

//        0 0000011
//        0 0000100
        System.out.println(3 & 4);
        //结果为0;
        System.out.println(3 | 4);
        //结果为1;
        System.out.println(3 ^ 4);
        //结果为;
        System.out.println(~3);

//  <<左移  <<右移
// 0 0000011  转化为 0 0001100  补码
        System.out.println(3<<2);//结果为12
        System.out.println(3>>2);//结果为0

// ^异或
// ^ 一个数被另一个数位异或两次,该数不变
        int a=10;
        int b=20;
        System.out.println(a^b^b);//结果为10
        System.out.println(a^b^a);//结果为20
        System.out.println(a^a);//结果为0

        // <<:把<<左边的数据乘以2的移动次幂 例如:10<<3   10*2^3=80;
        // >>:把>>右边的数据除以2的移动次幂 例如:10>>3   10/2^3=1(取整)
        System.out.println(10<<3);//结果为80
        System.out.println(10>>3);//结果为1


    }
}

三元运算符

package com.hyq;

public class sanyuanyunsuanfu {
    public static void main(String[] args) {
        //三元运算符
        //表达式?结果1:结果2
        //当表达式的结果为true时,返回结果1;为false时,返回结果2;
         int a=20;
         int b=200;
         int c=500;
         int max1=a>b?a:b;
         int max2=max1>c?max1:c;
        System.out.println("最大值为:"+max2);
        //ctrl+shift+回车 可以自动补分号;
        //嵌套使用三元表达式,但是不建议嵌套,因为阅读性不好;

    }
}

键入

package com.hyq;
//导入包
import java.util.Scanner;

public class exmp1keyboard {
    public static void main(String[] args) {
        //为了后面的案例,键盘录入数据;
        //scanner 类 让用户来数据数据;
        //1.先导入包;
        //2.创建对象;
        //3.提示用户输入数据;
        //4.录入用户输入数据;
        //5.处理数据;
        //求两个数的最大值

        //创建对象
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个整数:");
        //3.录入用户输入的整数
       int one = scanner.nextInt();
        System.out.println("请输入第二个数:");
        int two = scanner.nextInt();
        int max=one>two?one:two;
        System.out.println("最大值为:"+max);

    }
}

用三元表达式实现三位数的最大值

package com.hyq;

import java.util.Scanner;

public class sangeshuzuidazhi {
    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入第一个数:");

        int one = scanner.nextInt();
        System.out.println("请输入第二个数:");
        int two = scanner.nextInt();

        System.out.println("请输入第三个数:");
        int three = scanner.nextInt();

        int max1=one>two?one:two;
        int max2=max1>three?max1:three;
        System.out.println("最大值为:"+max2);


    }
}

快捷键

alt+enter 万能纠错键,可以纠错,自动补全;
ctrl+alt+v 自动补全

选择语句

public class xuanzeyuju {
    public static void main(String[] args) {
        //选择语句: if
        //if(条件结果是布尔类型的表达式或者值){ 语句体  }
        //当圆括号内的结果为true时,才会执行大括号内的语句体;
        //条件为假,则执行else语句体;
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int a=scanner.nextInt();
        System.out.println("请输入第二个数:");
        int b=scanner.nextInt();
        int max=0;
        if(a>b){
            //System.out.println(a);
            max=a;
        }else{
           // System.out.println(b);
            max=b;
        }
        System.out.println("最大值为:"+max);
    }
}

用if语句实现找三位数的最大值

package com.hyq;

import java.util.Scanner;

public class threemaxif {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入第一个数字:");
        int  a=scanner.nextInt();
        System.out.println("请输入第二个数字:");
        int  b=scanner.nextInt();
        System.out.println("请输入第三个数字:");
        int  c=scanner.nextInt();
//方法一:
//        int max1=0;
//        int max2=0;
//
//        if(a>b){
//            max1=a;
//        }else {
//            max1=b;
//        }
//
//        if(max1>c){
//            max2=max1;
//        }else{
//            max2=c;
//        }
//        System.out.println("最大值为:"+max2);
        //方法二
        int max=0;
        if(a>b&&a>c){
            max=a;
        }
        if(b>a&&b>c){
            max=b;
        }
        if(c>b&&c>a){
            max=c;
        }
        System.out.println("最大值为:"+max);

    }
}

三元运算符与If语句的区别

//三元表达是能写出来的语句,if语句就能写出来;
//if语句能写出来的语句,三元表达式不一定能写出来;

用if语句实现一个分段函数

package com.hyq;

import com.sun.xml.internal.ws.message.stream.PayloadStreamReaderMessage;

import java.util.Scanner;
//三元表达是能写出来的语句,if语句就能写出来;
//if语句能写出来的语句,三元表达式不一定能写出来;
public class keyboard3 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入x的数值:");
        int x=scanner.nextInt();
        int y=0;
        if(x>=3){
            y=2*x+1;
            System.out.println("y的值为:"+y);
        }
        if(x>=-1&&x<3){
            y=2*x;
            System.out.println("y的值为:"+y);
        }
        if(x<-1){
            y=2*x+1;
            System.out.println("y的值为:"+y);
        }

    }

}

Switch语句

1.switch 语句支持的数据类型 byte short int string  char 枚举
2.case项后一定带匹配的常量,不能是变量;
3.多个case的值全部为同一种类型;
4.多个case项的值不能相同重复;
5.break 结束switch语句,这个关键字可以不写,但是有可能会发生一种case穿透的现象;可以利用这种现象;
6.defaut项可以省略不写,不写就没有默认的处理方式,建议写;
package com.hyq;

public class switch1 {
    public static void main(String[] args) {
        int num=0;
        switch(num) {
            case 10:
                break;
            case 20:
                break;
            case 30:
                break;
                default://默认项
                    System.out.println("当所有的case项都没有匹配上,则执行默认项");
                    break;
        }
    }
}

用switch语句实现查询季节

package com.hyq;
import java.util.Scanner;

public class switchexp1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您想查询的月份1~12:");
        int season = sc.nextInt();
        switch (season) {
            case 1:
                //System.out.println("这是春天!");//可以利用case穿透语句
                //break;
            case 2:
                //System.out.println("这是春天!");
               // break;
            case 3:
                System.out.println("这是春天!");
                break;
            case 4:
                //System.out.println("这是夏天!");
                //break;
            case 5:
                //System.out.println("这是夏天!");
               // break;
            case 6:
                System.out.println("这是夏天!");
                break;
            case 7:
               // System.out.println("这是秋天!");
               // break;
            case 8:
               // System.out.println("这是秋天!");
               // break;
            case 9:
                System.out.println("这是秋天!");
                break;
            case 10:
                //System.out.println("这是冬天!");
                //break;
            case 11:
               // System.out.println("这是冬天!");
               // break;
            case 12:
                System.out.println("这是冬天!");
                break;
            default://默认项
                System.out.println("当所有的case项都没有匹配上,则执行默认项");
                break;
        }

    }
}

用if 语句实现查询季节

package com.hyq;
import java.util.Scanner;


public class switchexp2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请出入您想查询的月份1~12:");
        int season=sc.nextInt();

        if(season>0&&season<4){
            System.out.println("这是春天!");
        }
        if(season>3&&season<7){
            System.out.println("这是夏天!");
        }
        if(season>6&&season<10){
            System.out.println("这是秋天!");
        }
        if(season>9&&season<13){
            System.out.println("这是冬天!");
        }
    }
}

switch语句和if 语句的区别

switch语句仅仅针对有限个常量进行选择的;
而 if 语句不仅仅能对常量选择,也可以对范围进行选择;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值