Java零基础学习(逻辑运算符 键盘录入 选择结构)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Java零基础学习(逻辑运算符 键盘录入 选择结构)

Java语言基础
  • 运算符
    • 逻辑运算符
    1.逻辑运算符有哪些
       &(并且)当逻辑两端运算结果同时为true时结果才为true  
       |(或者) 当运算两端结果有一个结果为true时,结果为true 
       !(非) 取反
       ^(异或)相同为false不同为true 
       &&(短路与)
       ||(短路或)
    2.逻辑运算符一般用于连接boolean类型的表达式或者值。
    3.&&(短路与)与&运算结果没有区别知识在运算效率上有区别,&运算符的两端表达	式都会运行,&&,当左端的表达式左端为false时,右端就不会执行,因为可以直接判定	结果为false。
     ||(短路或),区别与& &&同理,当||左端的表达式取值为true时,右的表达式   就不会执行,因为可以直接判定结果为true。
        例:  int i=1;				  int i=1;
    	  boolean c=(i<0&i++>1);	   	  boolean c=(i<0&&i++>1);
    	  System.out.println(i);                  System.out.println(i);          
    	  输出结果是2,因为i++运行了;        输出结果是1,因为&&左边的结果是false,所以&&右边的表达式不执行,i还是1。
    	  int i=1;                                int i=1;
    	  boolean c=(i>0|i++>1);                  boolean c=(i>0||i++>1);
    	  System.out.println(i);                  System.out.println(i);
    	  输出结果是2;                      输出结果是1,因为||左边的结果是true,所以||右边的表达式不执行,i还是1;
    
    • 位运算符
    1.位运算符有哪些(位运算符是直接对补码进行运算,运算效率高一些。)
    	&(与)  有0则0   
          例 	  int a=1&2;              	 	 int a=(-2)&(-3)
    		  System.out.println(a);		System.out.println(a);
    		  1的二进制补码是00000001;     		 -2的二进制补码是11111110;
    		  2的二进制补码是00000010;     		 -3的二进制补码是11111101;
    		  则求出的a的补码是00000000;    	 则求出的a的补码是11111100;
    		  所以a的结果是0.			所以a的结果是-4
    		  ※计算机是对补码进行运算,我们看到的是原码,所以在计算过后要将补码推回到原码,正数的原码补码相同,负数一定要注意。
    	|(或) 有1则1 与&的运算过程相同。
    	^(异或) 相同则0,不同则1。                     
        ~(按位取反)0变1,1变0,符号位也要取反。
        <<(左移) 将二进制的补码向左移,空位补0,被移除的最高位丢弃。
        >>(右移) 将二进制的补码向右移,被移位的最高位是0,就往空位补0,最高位是1就往空位补1
        >>>(无符号右移) 被移位的二进制最高位无论是0还是1,空缺位都补0。
    2.结论
    	<< : 把<<左边的数据乘以2的移动次幂   例如 10<<3    结果 10*2^3=80
    	>> : 把>>左边的数据除以2的移动次幂   例如 40>>3     结果 40/2^3=5
    	^的特点:一个数据被另一个数据位异或两次,该数本身不变。
    	例:将两个数值交换
    	方法1:找一个中间变量               方法2:用位异或的性质
    	int a=10;			 int a=10;
    	int b=20;			 int b=20;
    	int t;				 a=a^b;
          	t=a;                             b=a^b;//a^b^b b=a
    	a=b;                             a=a^b;//a^b^a a=b
    	b=t;
    	结果是a=20,b=10;		结果a=20,b=10。
    	方式3:                           方式4:
    	int a=10;			 int a=10;
    	int b=20;			 int b=20;
    	a=a+b;                           b=(a+b)-(a=b);
    	b=a-b;
    	a=a-b;
    	结果是a=20,b=10;                  结果是a=20,b=10;
    
    • 三元运算符
    1.三元(三目)运算符的格式
    	(关系表达式)?表达式1:表达式2;
    	int a=(10>20)?30:50;//结果a=50
    2.三元运算符的执行流程
    	计算关系表达式的值,如果位true,运算结果取表达式1;
    			如果为false,运算结果取表达式2。
    3.获取两个数中的最大值
    	int a=10;
    	int b=20;
          int max=(a>b)?a:b;
      获取三个数中的最大值
      	int a=10;
    	int b=20;
          int c=30;
    	int max=(a>b)?a:b;
         max=(max>c)?max:c;
    
  • 键盘录入
1.为什么要使用键盘录入数据
	a:为了让程序的数据更符合开发的数据
	b:让程序更灵活一些
2.如何实现键盘的录入呢?
	先按照格式来
	a:导包
		格式:
			import.java.util.Scanner;
		位置:
			在class上面。
	b:创建键盘录入对象
		格式:
			Scanner sc=new Scanner(System.in);
	c:通过对象获取数据
		格式:
			int a=sc.nextInt();
3.案例演示
	a:键盘录入一个整数,并输出到控制台。
		import java.util.Scanner;
		class A 
		{
			public static void main(String[] args) 
			{
				Scanner sc=new Scanner(System.in);
				System.out.println("请输入一个整数");
				int a=sc.nextInt();
				System.out.println(a);
			}
		}
	b:键盘录入两个整数,获取这两个整数的最大值
    	import java.util.Scanner;
		class A 
		{
			public static void main(String[] args) 
			{
				Scanner sc=new Scanner(System.in);
				System.out.println("请输入第一个整数");
				int a=sc.nextInt();
				System.out.println("请输入第二个整数");
				int b=sc.nextInt();
				int max=(a>b)?a:b;
				System.out.println("最大的数是:"+max);
			}
		}
  • 流程控制语句
    1.什么是流程控制语句
    	在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。
    	也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。
    	而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能
    2.流程控制语句的分类
    	顺序结构
    	选择结构
    	循环结构
    
    • 顺序结构语句
    1.顺序结构
    	是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
    	总的来说:写在前面的先执行,写在后面的后执行
    2.执行流程:
    	从上往下,依次执行。
    
    • 选择结构if语句
      概述:也被称为分支结构。
      	选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,
      	逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
      
      1.:选择结构的分类
      	if语句
      	switch语句
      2.if语句有几种格式
      	格式1
      		a.格式
      			if(比较表达式或者是boolean类型的值) {
      				语句体;
      			}
      		b.执行流程:
      			先计算比较表达式的值,看其返回值是true还是false。
      			如果是true,就执行语句体;
      			如果是false,就不执行语句体
      		c.练习 判断两个数据是否相等	
              	int a=10;
      			int b=10;
      			if(a==b){
      				System.out.println("两个数字相等");
      			}
              	当两个数字相等时会输出两个数字相等,当两个数字不相等时不输出。
              	也可以使用键盘录入两个文字。
              	
      	格式2
      		a.格式
      			if(比较表达式) {
      			语句体1;
      			}else {
      			语句体2;
      			}
      
      			注意事项:else后面是没有比较表达式的,只有if后面有。
      
      		b.执行流程:
      			首先计算比较表达式的值,看其返回值是true还是false。
      			如果是true,就执行语句体1;
      			如果是false,就执行语句体2;
      		c.练习 
      			(1)获取两个数据中较大的值
      				int a=10;
      				int b=10;
      				if(a>=b){
      					System.out.println("较大的数是"+a);
      				}else{
      					System.out.println("较大的数是"+b);
      				}
      				可以使用键盘录入
      			(2)判断一个数据是奇数还是偶数,并输出是奇数还是偶数
      				import java.util.Scanner;
      				class  B{
      					public static void main(String[] args) {
      						Scanner sc=new Scanner(System.in);
      						int a=sc.nextInt();
      						if(a%2==0){
      							System.out.println("这个数是偶数");
      						}else{
      							System.out.println("这个数是奇数");
      						}
      					}
      				}
      				
      	格式3
      		a.格式:
      			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.练习 键盘录入一个成绩,判断并输出成绩等级
      			90~100	A等。
      			80-89	B等。
      			70-79	C等。
      			60-69	D等。
      			60以下	E等。
      		import java.util.Scanner;
      		class  A{
      			public static void main(String[] args) {
      				System.out.println("请输入成绩0---100");
      				Scanner sc=new Scanner(System.in);
      				int cj=sc.nextInt();
      				if(cj>=90&&cj<=100){
      					System.out.println("A等");
      				}else if(cj>=80&&cj<=89){
      					System.out.println("B等");
      				}else if(cj>=70&&cj<=79){
      					System.out.println("C等");
      				}else if(cj>=60&&cj<=69){
      					System.out.println("B等");
      				}else if(cj<60){
      					System.out.println("E等");
      				}
      			}
      		}
      		
      
      • if语句注意事项
      1.比较表达式无论简单还是复杂,结果必须是boolean类型
      2.if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
      3.一般来说:有左大括号就没有分号,有分号就没有左大括号
      
      • if语句格式和三元相互转换问题
      if和三元表达式
      能用三元表达式写出来的if也能写出来,但是反过来用if写出来的三元表达式不一定能写出来
      
    • 选择结构switch语句
      1.:switch语句的格式
      	switch(表达式){
      		case 值1:
      			语句体1;
      			break;
      		case 值2:
      			语句体2;
      			break;
      		case 值3:
      			语句体3;
      			break;
      		....
      		default:	
      			语句体n+1;
      			break;
      	}
      2.switch语句的格式解释
      	(1):switch表示这是switch语句
      		表达式的取值:byte,short,int,char
      		JDK5以后可以是枚举(什么是枚举,以后再讲)
      		JDK7以后可以是String
      	(2):case后面跟的是要和表达式进行比较的值
      	(3):语句体部分可以是一条或多条语句
      	(4):break表示中断,结束的意思,可以结束switch语句
      	(5):default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
      3.执行流程
      	先计算表达式的值
      	然后和case后面的匹配,如果匹配成功就执行对应的语句,遇到break就会结束,否则执行default控制的语句
      
      • switch语句的注意事项
      1.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的值
      2.default可以省略吗?
      		可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
      3.break可以省略吗?
      		可以省略,但是结果可能不是我们想要的。
      		会出现一个现象:case穿透。
      		case穿透是指代码从对应的语句开始执行,如果没有break,就会再往下执行下去。
      		最终我们建议不要省略
      4.default一定要在最后吗?
      		不是,可以在任意位置。但是建议在最后。
      5.switch语句的结束条件
      		a:遇到break就结束了
      		b:执行到末尾就结束了
      
      • 练习
      键盘录入月份,输出对应的季节
      Scanner sc=new Scanner(System.in);
      		int a=sc.nextInt();
      		switch(a){
      			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;
      			case 12:
      			case 1:
      			case 2:
      				System.out.println("冬季");
      				break;
      		}
      		有时候也可以使用case穿透现象来使代码写起来更容易。
      
    • 选择结构if语句和switch语句的区别、
    if它要的条件是布尔类型的,它既可以对常量进行选择,也可以对范围进行选择
    switch是对几个常量进行选择。
    
  • 总结

    今天我们学完了基础的运算符,还学习了键盘录入和选择结构的语句后面我们将学习循环结构语句,和语句的嵌套使用,希望大家在下面可以多敲多练,打好基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值