运算符规则

1.运算符
1.1算数运算符

在这里插入图片描述

class Demo4{
	public static void main(String[] args){
		//算数运算符
		System.out.println(4+5);//9
		System.out.println(4-5);//-1
		System.out.println(4*5);//20
		System.out.println(7/5);//1
		System.out.println(-7/5);//-1
		System.out.println(7/-5);//-1
		//余数的符号位与被除数一致
		System.out.println(4%5);//4
		System.out.println(-4%5);//-4
		System.out.println(4%-5);//4
		
		//++ 记住++
		//--
		/*
		
		*/
		int a = 3;
		int b = 4;
		int x = a++;//当++在后时,先赋值,再自身+1
		int y = ++b;//当++在前时,先自身+1,再赋值
		System.out.println("a:"+a);//4
		System.out.println("b:"+b);//5
		System.out.println("x:"+x);//3
		System.out.println("y:"+y);//5
		
		//练习 有一个三位数,求百位上 的数字   
		int x1 = 123;
		//先除以10
		x1 = x1 /10; //12
		//再除以10
		x1 = x1 / 10; //1
		
		//找个位的数字
		int m = 456;
		 m = m % 10;//6
		
	}
}
1.2赋值运算符

在这里插入图片描述

class Demo5{
	public static void main(String[] args){
		//赋值运算符
		//在使用+=运算符时,必须保证a是有值的.
		int a = 5;
		a += 5;//相当于 a = a + 5;
		}
	}
1.3关系运算符

在这里插入图片描述

class Demo5{
	public static void main(String[] args){
		//关系运算符
		//运算符的结果是boolean型.
		//注意区别:== 与 = 
		System.out.println(3>4);
		System.out.println(3>=4);
		System.out.println(3<4);
		System.out.println(3<=4);
		System.out.println(3==4);
	}
}
1.4逻辑运算符

在这里插入图片描述

class Demo5{
	public static void main(String[] args){
//逻辑运算符
		//特点:1.运算符的两边的元素一定是true/false  2.结果一定是true/false
      
		//逻辑与  &    逻辑或   |     逻辑异或    ^    逻辑非   !
		//&:一假则假,全真才真
		//|:一真则真,全假才假
		//!:真则假,假则真
		
		
		System.out.println(true & false);//false
		System.out.println(true | false);//true
		System.out.println(true ^ false);//true
		System.out.println(!false);//true
		
		int a11 = 2,b=1,c=3;
		boolean b1 = (3 > 5) && false  && a11++ > b && 4>7  && false  && false  && false;
		boolean b2 = (3 > 5) || false  ||  false || 4>7;
		System.out.println(b1+"   a11:"+a11);//false   10
         }
     }		
1.5位运算符

在这里插入图片描述

public class JavaSyntax { 
     public static void main(String[] args) { 
     //特点:直接操作的是位 
	//为什么要使用位运算符?因为位运算符的速度比普通的快
    /* &(按位与):全1则1,有0则0: 作用:定向清0 
    * |(按位或):全0则0,有1则1
    * ^(按位异或):相同则0,不同则1 作用:交换两个数的值 
    * ~(按位取反):1则0,0则1 
    */ 
    /*
    * 过程实现
    * byte a=4 b=5 
    a=4的补码是 00000100 简写 0100
    b=5的补码是 00000101 简写 0101 
    *
    * 0100 
    * 0101 & 
    * 0100 4 
    *
    * 0100 
    * 0101 | 
    * 0101 5 
    *
    *
    * 0100 
    * 0101 ^ 
    * 0001 1 
    *
    * 0100 ~ 
    * 1011 *
    */ 
    //实例一:使用&实现定向清零
    //网段:对于IPv4,两个IP地址,他们的前三个部分相同就说在同一个网段.
    //网关:是当前网段中的一个ip地址,我们可以简单的理解成守门员.
    //子网掩码:用来确认ip地址是否处于当前的网段 
    //IP地址:大家上网时在网上的唯一凭证(身份证),默认肯定要跟网关在同一网段. 
    /*
    * 网段: 192.168.1.0 
    * 网关: 192.168.1.1 
    * IP地址:192.168.1.34 
    * 子网掩码:255.255.255.0 
    *
    * 192.168.1.34 
    * 255.255.255.0 & 
    *
    * 192.168.1.0 用这个值与网段比较,相同则认为在当前网段. 
    *
    */ 
    /*
    * 实例二:使用^实现交换两个数的值 
    */ 
    int x = 4 ,y =5; 
    //第一种方法:借助三方变量
    int tmp = 0; 
    tmp = x; 
    x = y;
    y = tmp; 
    //第二种方式:使用^
    x = x ^ y;
    y ^= x;
    x ^= y;
    System.out.println("x:"+x+" y:"+y);
    /*
    * 0101 x 
    * 0100 y ^ 
    * 0001 X
    *
    * 0100 y 
    * 0001 X ^ 
    * 0101 y--------5 
    *
    * 0001 X 
    * 0101 y ^ 
    * 0100 x--------4 
    */ 
    //移位运算符:操作位的. >> << >>> 
    //特点:操作位的 
	System.out.println(5>>1);
    //解析:正数的补码和原码相同
    //补码: 00000101 
    //右移 00000010
    //左移 00001010 
    //注意:左移后再右移或者右移后再左移都不一定能得到原来的结果 
    //作用:用于乘除法,例子:二分查找 
    
    //扩展:负数的运算 
    int x = -8; 
    System.out.println(x >> 2); // 1111 1110 
    /*分析: 
    //对于>> 高位补符号位,分析时可以简写10001000 
    -8的原码: 10001000 
        反码: 11110111 注意:最高位符号位不变 
        补码: 11111000 
        运算后: 11111110 注意:高位补1 
        求原码,取反: 10000001 
        加一: 10000010 -2 
        */ 
    System.out.println("值:"+ (x >>> 2));
    // 00111111 11111111 11111111 11111110 
    /*分析: 
    -8原码: 10000000 00000000 00000000 00001000
    -8反码: 11111111 11111111 11111111 11110111 
    -8补码: 11111111 11111111 11111111 11111000 
    -8无符号右移后结果:00111111 11111111 11111111 11111110 
    注意:左 侧补零(高位补0) */ }
2.三目运算符

描述:三目运算符, 是一个带有些逻辑的运算符, 基础语法如下:

布尔结果表达式/布尔变量 ? 值1 : 值2

如果问号前面的布尔值为true, 整体的结果为值1。 否则整体的结果为值2。

public class Demo1 {
    public static void main(String[] args) {
        //三目运算符 ?:
        //求 a,b的最大值
        int a = 4;
        int b = 3;
        int c = a>b?a:b;
        System.out.println(c);

        //求a,b,c三个数的最大值
        int d = (a>b?a:b)>c?(a>b?a:b):c;

        //结果:4.0
        System.out.println(a>b?4:4.5);
    }
}
3.流程控制
3.1流程控制简介

​ ①顺序结构:从上到下,按照顺序执行。

​ ②分支结构:程序进行到某一处有多种可能性时,根据条件,选择执行。

​ ③循环结构:同一串代码需要重复执行。

3.2if语句

​ ①if(条件){…}

​ ②if(条件){…}else{…}

​ ③if(条件){…}else if(条件){…}else{…}

​ ④if(条件){ if(条件){…} } else {…}

1.分支-if
import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        //分支-if
        //if (/* 条件判断 true or false */) {
        //    // 条件结果为true执行大括号以内的语句
        //}
        ///*
        //执行流程:
        //	代码运行到if分支结构,首先判断if之后的条件是否为true,如果为true,执行大括号里面的语句,如果为false直接执行大括号之外的语句,
        //*/

        /*
        Scannner的使用
         */
        //创建Scannner的对象,并设置输入流------通过scanner可以让用户从控制台手动输入数据
        Scanner scanner = new Scanner(System.in);
        int value1 = scanner.nextInt();
//      float v2 =   scanner.nextFloat();
//      double d1 =   scanner.nextDouble();
//       String s1 = scanner.next();//字符串
//       long l1 = scanner.nextLong();

        //System.out.println(value1+"    "+v2+"      "+d1);

        //java成绩如果大于60,奖励一颗糖
        int score = value1;
        if(score > 60){
            System.out.println("奖励糖");
        }

        System.out.println("go on");


        int java = 100;
        int html = 80;
        if ((java>98 && html>80) || (java==100 && html>70)){
            System.out.println("奖励");
        }
    }
}
2.双分支if…else…
public class Demo3 {
    public static void main(String[] args) {
        //双分支
        //如果是男生就永远18岁,否则永远16岁。
        String sex = "男";
        //如果是字符串进行比较,要使用equals方法,这个方法会将sex代表的数据域"男"进行对比,结果返回true/false
        if (sex.equals("男")){
            System.out.println("永远18岁");
        }else {
            System.out.println("永远16岁");
        }
    }
}
3.多分支
public class Demo4 {
    public static void main(String[] args) {
        //多分支结构
        //判断某一个月属于哪一个季节
        /*
        分析:因为有四个季节,所以是多分支
        冬季:12,1,2
        春季:3,4,5
        夏季:6,7,8
        秋季:9,10,11
         */
        int month = 3;
        if (month == 3){
            System.out.println("春");
        }else if (month == 4){
            System.out.println("春");
        }else if (month == 5){
            System.out.println("春");
        }else if (month == 6){
            System.out.println("夏");
        }else if (month == 7){
            System.out.println("夏");
        }else if (month == 8){
            System.out.println("夏");
        }else if (month == 9){
            System.out.println("秋");
        }else if (month == 10){
            System.out.println("秋");
        }else if (month == 11){
            System.out.println("秋");
        }else {
            System.out.println("冬");
        }

        //优化
        if (month == 3 || month == 4 || month == 5){
            System.out.println("春");
        }else if (month == 6 || month == 7 || month == 8){
            System.out.println("夏");
        }else if (month == 9 || month == 10 || month == 11){
            System.out.println("秋");
        }else {
            System.out.println("冬");
        }

        //再优化
        if (month >= 3 && month <= 5){
            System.out.println("春");
        }else if (month == 6 || month == 7 || month == 8){
            System.out.println("夏");
        }else if (month == 9 || month == 10 || month == 11){
            System.out.println("秋");
        }else {
            System.out.println("冬");
        }

        //再优化---提高用户体验
        if (month>=1 && month<=12){
            if (month >= 3 && month <= 5){
                System.out.println("春");
            }else if (month == 6 || month == 7 || month == 8){
                System.out.println("夏");
            }else if (month == 9 || month == 10 || month == 11){
                System.out.println("秋");
            }else {
                System.out.println("冬");
            }
        }else {
            System.out.println("亲,输错了,请重新输入1-12之间的数字");
        }
    }
}
3.3switch语句
1.语句逻辑

​ switch语句通过case进行分支,通过switch后的变量与case的变量进行比较,如果与某个case后的值相同,就执行case后相应的语句,如果与每一个case都不相同则执行defult后的语句。

2.siwtch的语法规则

​ 1.表达式expr的值必须是下述几种类型之:

byte、short、int、char、enum(枚举);java7之后可以是String。

​ 2.case子句中的值const 必须是常量值(或final的变量),case中的值不能是一

个范围

​ 3.所有case子句中的值应是不同的,否则会编译出错;

​ 4.default子句是可选的(不是必须的)

​ 5.break语句用来在执行完一个case分支后使程序跳出switch语句块;否则会继续执行下去

public class Demo5 {
    public static void main(String[] args) {
        //  switch(表达式expr){//int,byte,short,char,enum,String
        //   		case const1:
        //   			statement1;
        //   			break;
        //   		case const2:
        //   			statement2;
        //   			break;
        //   			… …
        //   		case constN:
        //  			statementN;
        //   			break;
        //   		default:
        //   			statement_dafault;
        //   			break;
        //   	}
        //
        //判断某一个月属于哪一个季节
        int month = 41;
        switch (month) {
            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;
            default:
                System.out.println("冬");
                break;
        }

        //优化
        
        switch (month) {
            default:
                System.out.println("冬");
                break;
            //注意:case后面只能跟一个值
            case 3:
            case 4:
            case 5:
                System.out.println("春");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋");
                break;
        }
    }
}

3.break的穿透性
         System.out.println("冬");
            break;
        //注意:case后面只能跟一个值
        case 3:
        case 4:
        case 5:
            System.out.println("春");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋");
            break;
    }
}

}




###### 3.break的穿透性

​	当switch的变量和某一个case值匹配上之后, 将会跳过后续的case或者default的匹配,直接向后穿透。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值