• Home
  • About
    • Lihao photo

      Lihao

      这是一个风格简单的博客,主要是写一些学习、工作中的心得或者笔记。希望在叙述的过程中,让自己能理清思绪,有所收获。也可作为一个网络笔记本吧,便于日后查看。

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

java运算符与选择结构

13 Nov 2019

Reading time ~6 minutes

01_Java语言基础(逻辑运算符的基本用法)

  • A:逻辑运算符有哪些
    • & , , ^, !
    • &&,  
  • B:案例演示
  • 逻辑运算符的基本用法
             
          class Demo1_Operator {
          public static void main(String[] args) {
          //&,|,^,!
          //int x = 10;
          //5 < x < 15
          //x > 5 & x < 15
          //逻辑与 & 并且and 遇false则false
          int a = 10;
          int b = 20;
          int c = 30;
          /*System.out.println(a < b & b < c);			//true & true = true
          System.out.println(a < b & b > c);				//true & false = false
          System.out.println(a > b & b < c);				//false & true = false
          System.out.println(a > b & b > c);				//false & false = false*/
    
          //逻辑或 或or 遇true则true
          /*System.out.println(a < b | b < c);				//true | true = true
          System.out.println(a < b | b > c);				//true | false = true
          System.out.println(a > b | b < c);				//false | true = true
          System.out.println(a > b | b > c);				//false | flase = false*/
    
          //逻辑异或 ^ 两边相同为false,两边不同为true
          /*System.out.println(a < b ^ b < c);				//true | true = false
          System.out.println(a < b ^ b > c);				//true | false = true
          System.out.println(a > b ^ b < c);				//false | true = true
          System.out.println(a > b ^ b > c);				//false | flase = false*/
    
          //逻辑非!
          System.out.println(!true);
          System.out.println(!!true);
          }
          }
    
    
    
  • 注意事项:
    • a:逻辑运算符一般用于连接boolean类型的表达式或者值。
    • b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
      • 算术表达式:a + b
      • 比较表达式:a == b(条件表达式)
  • C:结论:
  • &逻辑与:有false则false。
  • 逻辑或:有true则true。
  • ^逻辑异或:相同为false,不同为true。
  • !逻辑非:非false则true,非true则false。
    • 特点:偶数个不改变本身。

02_Java语言基础(逻辑运算符&&和&的区别)

  • A:案例演示
        
      class Demo2_Operator {
	    public static void main(String[] args) {
		/*int a = 10;
		int b = 20;
		int c = 30;
		System.out.println(a < b && b < c);				//true && true = true
		System.out.println(a < b && b > c);				//true && false = false
		System.out.println(a > b && b < c);				//false && true = false
		System.out.println(a > b && b > c);				//false && false = false*/

		int x = 3;
		int y = 4;
		//System.out.println((++x == 3) & (++y == 4));	//false & false = false
		//System.out.println("x = " + x);					//x = 4
		//System.out.println("y = " + y);					//y = 5
		System.out.println("---------------------------");
		System.out.println((++x == 3) && (++y == 4));	//false & false = false
		System.out.println("x = " + x);					//x = 4
		System.out.println("y = " + y);					//y = 4
	  }
     }
  
* &&和&的区别?
	* a:最终结果一样。
	* b:&&具有短路效果。左边是false,右边不执行。
	* 	&是无论左边是false还是true,右边都会执行 * B:同理||和|的区别? * C:开发中常用谁?
* &&,||,!

03_Java语言基础(位运算符的基本用法1)

  • A:位运算符有哪些
    • &, ,^,~ ,»,»>,«
  • B:案例演示 ```

     	class Demo1_Operator {
      public static void main(String[] args) {
       /*
       * &,|,^,~ 的用法
       * &:有0则0
       * |:有1则1
       * ^:相同则0,不同则1
       * ~:按位取反
       */
    
      System.out.println(6 & 3);				//2
      System.out.println(6 | 3);				//7
      System.out.println(6 ^ 3);				//5	
      System.out.println(~6);					//-7?					
     }
    }
    

    /*

      110   &	011
      010
    
      110   |	011
      	111
    
      110   ^	011   -----------
      	101
    
      00000000 00000000 00000000 00000110		6的原码反码补码都是本身
      11111111 11111111 11111111 11111001		对6取反   -	00000000 00000000 00000000 00000001   ---------------------------------------
      11111111 11111111 11111111 11111000		反码
      10000000 00000000 00000000 00000111		原码(-7)   */
    

	* 位运算符的基本用法1
	
	* &,|,^,~ 的用法
	* &:有0则0
	* |:有1则1
	* ^:相同则0,不同则1
	* ~:按位取反

### 04_Java语言基础(位异或运算符的特点及题)
* A:案例演示

 class Demo2_Operator {
	public static void main(String[] args) {
	/*
	* 位异或运算符的特点

	* ^的特点:一个数据对另一个数据位异或两次,该数本身不变。
	*/

	//System.out.println(5 ^ 10 ^ 10);
	//System.out.println(5 ^ 10 ^ 5);

	
	

	int x = 10;
	int y = 5;

	//需要第三方变量,开发推荐用这种
	/*int temp;
	temp = x;
	x = y;
	y = temp;*/

	//不需要定义第三方变量,有弊端,有可能会超出int的取值范围
	/*x = x + y;				//10 + 5 = 15
	y = x - y;				//15 - 5 = 10
	x = x - y;				//15 - 10 = 5*/

	//不需要第三方变量,通过^来做
	x = x ^ y;				// 10 ^ 5 
	y = x ^ y;				// 10 ^ 5 ^ 5	y = 10
	x = x ^ y;				// 10 ^ 5 ^ 10  x = 5

	System.out.println("x = " + x + ",y = " + y);
 }
}

	* 位异或运算符的特点

	* ^的特点:一个数据对另一个数据位异或两次,该数本身不变。

	

### 05_Java语言基础(位运算符的基本用法2及题)
* A:案例演示 >>,>>>,<<的用法:

  class Demo3_Operator {
    public static void main(String[] args) {
	/*
	*  <<:左移	左边最高位丢弃,右边补齐0
	*  >>:右移	最高位是0,左边补齐0;最高为是1,左边补齐1
	*  >>>:无符号右移 无论最高位是0还是1,左边补齐0
	*  最有效率的算出2 * 8的结果
	*/

	//左移,向左移动几位就是乘以2的几次幂
	//System.out.println(12 << 1);		//24
	//System.out.println(12 << 2);		//48

	/*
	00000000 00000000 00000000 00001100		12的补码
 (0)0000000 00000000 00000000 000011000		24的补码
(00)000000 00000000 00000000 0000110000		48的补码
	*/

	//右移,向右移动几位就是除以2的几次幂
	//System.out.println(12 >> 1);
	//System.out.println(12 >> 2);

	/*
	00000000 00000000 00000000 00001100		12的补码
	000000000 00000000 00000000 0000110(0)	6
	0000000000 00000000 00000000 000011(00) 3
	*/

	//最有效率的算出2 * 8的结果
	System.out.println(2 << 3);
   }
 }

	*  <<:左移	左边最高位丢弃,右边补齐0
	*  >>:右移	最高位是0,左边补齐0;最高为是1,左边补齐1
	*  >>>:无符号右移 无论最高位是0还是1,左边补齐0
	*  最有效率的算出2 * 8的结果

### 06_Java语言基础(三元运算符的基本用法)
* A:三元运算符的格式
* 		(关系表达式) ? 表达式1 : 表达式2;
* B:三元运算符的执行流程 
* 
* C:案例演示
	* 获取两个数中的最大值


  class Demo1_Operator {
	public static void main(String[] args) {
	//(关系表达式) ? 表达式1 : 表达式2;
	int x = 10;
	int y = 5;
	int z;
	z = (x > y) ? x : y;

	System.out.println("z = " + z);
  }
 }


### 07_Java语言基础(三元运算符的练习)
* A:案例演示
	* 比较两个整数是否相同
* B:案例演示
	* 获取三个整数中的最大值

 class Test1_Operator {
   public static void main(String[] args) {
	/*
	* A:案例演示
		* 比较两个整数是否相同
	* B:案例演示
		* 获取三个整数中的最大值
	*/

	//比较两个整数是否相同

	/*int x = 10;
	int y = 10;

	//boolean b = (x == y) ? true : false;
	boolean b = (x == y);
	System.out.println("b = " +  b);*/

	//获取三个整数中的最大值
	int a = 10;
	int b = 20;
	int c = 30;

	//先比较任意两个数的值,找出这两个数中的最大值
	int temp = (a > b) ? a : b;
	//用前两个数的最大值与第三个数比较,获取最大值
	int max = (temp > c) ? temp : c;
	System.out.println("max =" + max);
   }
  }


### 08_Java语言基础(键盘录入的基本格式讲解)
* A:为什么要使用键盘录入数据
	* a:为了让程序的数据更符合开发的数据
	* b:让程序更灵活一下
* B:如何实现键盘录入呢?
	* 先照格式来。
	* a:导包
		* 格式:
			* import java.util.Scanner; 
		* 位置:
			* 在class上面。
	* b:创建键盘录入对象
		* 格式:
			* Scanner sc = new Scanner(System.in);
	* c:通过对象获取数据	
		* 格式:
			* int x = sc.nextInt();




### 09_Java语言基础(顺序结构语句)
* A:什么是流程控制语句
	* 流程控制语句:可以控制程序的执行流程。
* B:流程控制语句的分类
	* 顺序结构
	* 选择结构
	* 循环结构
* C:执行流程:
	* 从上往下,依次执行。


### 10_Java语言基础(选择结构if语句格式1及其使用)
* A:选择结构的分类
	* if语句
	* switch语句
* B:if语句有几种格式
	* 格式1
	* 格式2
	* 格式3
* C:if语句的格式1
* 
		if(比较表达式) {
			语句体;
		}
* D:执行流程:
	* 先计算比较表达式的值,看其返回值是true还是false。
	* 如果是true,就执行语句体;
	* 如果是false,就不执行语句体;

### 11_Java语言基础(选择结构if语句注意事项)
* A:案例演示
	* a:比较表达式无论简单还是复杂,结果必须是boolean类型
	* b:if语句控制的语句体如果是一条语句,大括号可以省略;
	  * 如果是多条语句,就不能省略。建议永远不要省略。
	

### 12_Java语言基础(选择结构if语句格式2及其使用)
* A:if语句的格式2
* 
		if(比较表达式) {
			语句体1;
		}else {
			语句体2;
		}
* B:执行流程:
	* 首先计算比较表达式的值,看其返回值是true还是false。
	* 如果是true,就执行语句体1;
	* 如果是false,就执行语句体2;
* C:案例演示
	* a:获取两个数据中较大的值
	* b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数

	* 注意事项:else后面是没有比较表达式的,只有if后面有。

    //a:获取两个数据中较大的值
	/*int x = 10;
	int y = 20;
	int z;

	if (x > y) {
		z = x;
	}else {
		z = y;
	}

	System.out.println(z);*/
	
	//b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数
	int num = 11;
	if (num % 2 == 0) {
		System.out.println(num + "是一个偶数");
	}else {
		System.out.println(num + "是一个奇数");
	}

```

13_Java语言基础(if语句的格式2和三元的相互转换问题)

* if语句和三元运算符完成同一个效果

* if语句和三元运算符的区别

* 三元运算符实现的,都可以采用if语句实现。反之不成立。

* 什么时候if语句实现不能用三元改进呢?
	* 当if语句控制的操作是一个输出语句的时候就不能。
	* 为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。

14 Java语言基础(选择结构if语句格式3及其使用)

  • A:if语句的格式3:
  • if(比较表达式1) {
        语句体1;
    }else if(比较表达式2) {
        语句体2;
    }else if(比较表达式3) {
        语句体3;
    }
    ...
    else {
        语句体n+1;
    }
    
  • B:执行流程:
    • 首先计算比较表达式1看其返回值是true还是false,
    • 如果是true,就执行语句体1,if语句结束。
    • 如果是false,接着计算比较表达式2看其返回值是true还是false,

    • 如果是true,就执行语句体2,if语句结束。
    • 如果是false,接着计算比较表达式3看其返回值是true还是false,

    • 如果都是false,就执行语句体n+1。
  • C:注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示

15_Java语言基础(选择结构if语句格式3练习)

  • A:练习1
  • 需求:键盘录入一个成绩,判断并输出成绩的等级。
    90-100 优
    80-89  良
    70-79  中
    60-69  及
    0-59   差
    
  • B:练习2

      * 键盘录入x的值,计算出y的并输出。
    	
      * x>=3	y = 2 * x + 1;
      * -1<x<3	y = 2 * x;
      * x<=-1	y = 2 * x - 1;
    

16_Java语言基础(选择结构if语句的嵌套使用)

  • A:案例演示
    • 需求:获取三个数据中的最大值
    • if语句的嵌套使用。

17_Java语言基础(选择结构switch语句的格式及其解释)

  • A:switch语句的格式
  • switch(表达式) {
          case 值1:
            语句体1;
            break;
            case 值2:
            语句体2;
            break;
            …
            default:	
            语句体n+1;
            break;
    }
    
  • B:switch语句的格式解释
  • C:题
    • byte可以作为switch的表达式吗?
    • long可以作为switch的表达式吗?
    • String可以作为switch的表达式吗?

结论:switch表达式可以支持的数据类型有int byte short char 枚举 String(jdk1.7及以上)

  • C:执行流程
    • 先计算表达式的值
    • 然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句

18_Java语言基础(选择结构switch语句的练习)

  • A:整数(给定一个值,输出对应星期几)

19_Java语言基础(选择结构switch语句的注意事项)

  • A:案例演示
    • a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
    • b:default可以省略吗?
      • 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
      • 特殊情况:
        • case就可以把值固定。
        • A,B,C,D
    • c:break可以省略吗?
      • 最后一个可以省略,其他最好不要省略
      • 会出现一个现象:case穿透。
      • 最终我们建议不要省略
    • d:default一定要在最后吗?
      • 不是,可以在任意位置。但是建议在最后。
    • e:switch语句的结束条件
      • a:遇到break就结束了
      • b:执行到switch的右大括号就结束了

20_Java语言基础(选择结构switch语句练习)

  • A:看程序写结果:
  • int x = 2;
    int y = 3;
    switch(x){
        default:
            y++;
            break;
        case 3:
            y++;
        case 4:
            y++;
    }
    System.out.println("y="+y);
    
  • B:看程序写结果:
  • int x = 2;
    int y = 3;
    switch(x){
        default:
            y++;
        case 3:
            y++;
        case 4:
            y++;
    }
    System.out.println("y="+y);
    

21_Java语言基础(选择结构if语句和switch语句的区别)

  • A:总结switch语句和if语句的各自使用场景
  • switch建议判断固定值的时候用
  • if建议判断区间或范围的时候用


java基础知识复习 Share Tweet +1

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少
支付宝
微信

打开手机扫一扫,即可进行打赏哦