JavaSE——Day3——逻辑运算符、键盘录入、选择结构语句

版权声明:------------------------------这个世界上只有一种成功,就是按照自己想要的方式度过一生--------------------------- https://blog.csdn.net/qq_44238142/article/details/86684268

逻辑运算符的基本用法

逻辑运算符有哪些?

&-并且,|-或者,!-非,^-异或,&&-短路与,||-短路或。
注意:逻辑运算符一般用于连接Boolean类型的表达式或者值。
在Java中我们要表示一个数大于3并且小于6,不可以携程3<x<6,应该写成x>3 & x<6。

表达式:就是用运算符把常量或者变量连接起来的复合Java语法的式子。
算数表达式:a+b
关系表达式:a==b

&逻辑与:有false则false
| 逻辑或:有true则true
^逻辑异或:相同为false,不同为true
!逻辑非:非false则true,非true则false

&和&&的区别?

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&又叫做短路与,当&&左边的表达式为false时,则右边的表达式就不会再执行。就效率而言,
&&效率更好,推荐使用&&。
看个案例:

int i=1;
if(i==2 & i++==2){  //i==2为false,但i++==2还会继续比较,所以i++被执行
System.out.println(i); //i 打印出来为2
}
int j=1;
if(j==2 && j++==2){}//j==2为false,但j++==2不会继续比较,所以j++不被执行
System.out.println(j);//j打印出来为1
}

同理,| 和 || 也是这种相同的用法。
我们在开发是优先使用&&和 ||

位运算符和移位运算

java中有4个位运算,分别是“按位与&、按位或|、按位异或”、按位取反”,他们的运算规则是:
按位与&: 两位全为1,结果为1
按位或|: 两位有一个为1,结果为1
按位异或^:两个一个为0,一个为1,结果为1
按位取反~: 0->1,1->0,符号位也要变

java中有3个位移运算符:

算术右移>>>:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
逻辑右移>>>,运算规则是:低位溢出,高位补0

规律:
<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
>> : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5

三元运算符

格式: (关系表达式)?表达式1(true) : 表达式2(false) ;
举例:int a = (1>2) ? 30 : 50 ; //a=50

键盘录入的基本格式讲解

步骤一:导包 import java.util.Scanner; 放在class上面
步骤二:从键盘录入对象 Scanner sc = new Scanner (System.in);
步骤三:通过对象获取数据:int a = sc.nextInt();

import java.util.Scanner;
class MyScanner{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
	}
}

顺序结构语句

什么是流程控制语句

流程控制语句:在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。
也就是说程序的流程对运行结果有直接的影响。所以我们必须清楚每条语句的执行流程,而且,很多时候,我们要通过控制语句的执行顺序来实现我们要完成的功能。

流程控制语句的分类

顺序结构、选择结构、循环结构

1、顺序结构:是程序中最简单的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
执行流程:从上往下,依次执行

2、选择结构:也被称为分支结构。选择结构有特定的语法规则,代码要执行具体的逻辑运算来进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
选择结构有if语句和switch语句:

if语句有三种格式:
格式一:if(比较表达式或者Boolean类型的值){语句体;}
格式二:if(比较表达式){
语句体1;
}else{
语句体2;
}
格式三:
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}

else {
语句体n+1;
}
案例:

class MyIf{
	public static void main(String[] args){
		int a = 1;
		int b = -1;
		if(a > 0){
		System.out.println("a大于0");
		}else if(a < 0 ) {
		System.out.println("a小于0");
		}else if(b > 0) {
		System.out.println("b大于0");
		}else{
		System.out.println("b小于0");
		}
	}
}

switch语句的格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;

default:
语句体n+1;
break;
}
switch语句的解释:
(1):表达式的取值:byte,short,int,char
JDK5之后可以是枚举
JDK7之后可以是String
(2):case后面跟的是要和表达式进行比较的值
(3):语句体部分可以是一条或多条语句
(4):break表示中断,结束的意思,可以结束switch语句
(5):default语句表示所有情况都不匹配的情况下,就执行该处的内容,和if语句的else相似
案例:

import java.util.Scanner;
class MyDemo{
	public static void main(){
		System.out.println("请输入1、2、3、4:");
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		switch(a){
			case 1:
				a+=a; break;
			case 2:
			 	a-=a; break;
			case 3:
				a*=a; break;
			case 4:
				a/=a; break;
			default:
				System.out.println("error");
					  break;
		}
		System.out.println("a="+a);
	}

}

switch语句的注意事项:
1、case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
2、default是可以省略的,但是不建议,因为它的作用是对不正确的情况给出提示
3、break不能省略,会出现case穿透,得到错误的结果。
4、switch的结束条件:遇到break结束;执行到末尾结束。

if or switch?

if 语句的使用场景:
针对结果是Boolean类型的判断;
针对一个范围的判断;
针对几个常量值得判断;
switch语句使用场景:
针对即个常量值的判断;

案例演示:
分别用switch语句和if语句实现下列需求:
键盘录入月份,输出对应的季节

import java.util.Scanner;
class MySeason{
	public static void main(String[] args){
		System.out.println("请输入月份:");
		Scanner sc = new Scanner(System.in);
		int month = sc.nextInt();
		if(month >= 1 && month <= 3){
			System.out.println("spring");
		}else if(month >= 4 && month <= 6){
			System.out.println("summer");
		}else if(month >= 7 && month <= 9){
		    System.out.println("autumn");
		}else{
			System.out.println("winter");
		}
	}
}

import java.util.Scanner;
class MySeason{
	public static void main(String[] args){
		System.out.println("请输入月份:");
		Scanner sc = new Scanner(System.in);
		int month = sc.nextInt();
		switch(month){
			case 1:
				System.out.println("spring");
				break;
			case 2:
				System.out.println("spring");
				break;
			case 3:
				System.out.println("spring");
				break;
			case 4:
				System.out.println("summer");
				break;
			case 5:
				System.out.println("summer");
				break;
			case 6:
				System.out.println("summer");
				break;
			case 7:
				System.out.println("autumn");
				break;
			case 8:
				System.out.println("autumn");
				break;
			case 9:
				System.out.println("autumn");
				break;
			case 10:
				System.out.println("winter");
				break;
			case 11:
				System.out.println("winter");
				break;
			case 12:
				System.out.println("winter");
				break;
		}
}

可以看到,这类针对一个范围的判断,用if语句更加简单明了,根据实际要求来选择不同的方案非常重要,往往能达到事半功倍的效果。

猜你喜欢

转载自blog.csdn.net/qq_44238142/article/details/86684268