Java基础知识二(赋值运算符,比较运算符,逻辑运算符,自增自减,键盘录入,分支机构)

Java基础(二)

运算符

1、昨天:算术运算符和三元运算符

2、赋值运算符、比较运算符、逻辑运算符

赋值运算符

1、用来赋值的符号就是赋值运算符

2、分类

​ 1、基本的赋值运算符

​ = 将右边的数据赋值给左边的变量 int i = 10;

​ 2、扩展的赋值运算符 += -= *= /= %=

​ int i =10; i+= 10;

​ 符号两边的数据进行计算(+= 加法运算符 -= 减法运算),在把计算的结果赋值给左边的变量

class Demo01_赋值运算符 {
    
    

	public static void main(String[] args) {
    
    
		int i = 10;
		i += 10;// 20  
		i *= 100;//2000
		i /= 30;//66
		i %=3;//0
		i -= 1;// -1
		System.out.println(i);
	}
}

比较运算符

1、用来比较两个数据是否相等运算符

2、分类

​ == != 可以比较任意类型 ==比较基本类型比较的是数值本身

​ < > <= >= 只能比较整数类型、小数类型、字符类型 byte short int long char

3、返回值结果是boolean类型,要么是true要么是false

class Demo02_比较运算符 {
    
    

	public static void main(String[] args) {
    
    

		System.out.println(10 > 10);//false
		System.out.println(10 >= 10);//true
		//System.out.println("10" > 10);  字符串不能使用>号比较
		System.out.println("10" == "10");//true
		System.out.println((10 % 7 == 0) == true);
		//'a'
		System.out.println((int)'a');
		System.out.println('a' == 97);
		float f = 12.34F;
	}
}

逻辑运算符

1、表示是是非非的值

2、比较的数据必须是boolean类型

3、返回值结果必须是boolean类型

4、短路与 && 全真为真,否则为假 [常用]

​ true && true true

​ false && true false

​ true && false false

​ false && false false

5、短路或 || 全假为假,否则为真[常用]

​ true || true true

​ false || true true

​ true || false true

​ false || false false

6、逻辑非 ! 遇真为假,遇假为真[常用]

​ !true false

​ !false true

7、逻辑与 & 和逻辑或 |

​ 短路与 在计算第一个表达式为false的时候,就不会再去计算第二个表达式的值了,结果直接为false

​ 短路或在计算第一个表达式为true的时候,就不会计算第二个表达式的值了,结果直接为true

​ 逻辑与和逻辑或还会计算第二表达式的值

​ 短路与和短路或的效率更高

class Demo03_逻辑运算符 {
    
    

	public static void main(String[] args) {
    
    
		
		boolean b1 = true;
		boolean b2 = false;
		System.out.println(b1 && b2);//false
		System.out.println(b1 || b2);//true
		//长得帅  &&  有钱
		// 长得帅  || 有钱
		System.out.println(1 == 2 && 2 > 1);//false
		System.out.println(true && 10 > 1);//true


		System.out.println(!(10 % 2 == 0));//false

	}
}

自增运算符

1、格式

​ a++ 和++a

2、a++和++a作为语句的时候,使用起来没有任何的区别,都是在a的基础上进行+1

3、在作为表达的时候才会有区别,a++ 先取a的值作为表达式的结果,在进行+1

​ ++a的话,先进行+1,在取a的值作为表达式的结果

class Demo04_自增运算符 {
    
    

	public static void main(String[] args) {
    
    
		int a = 10;
		//a++和++a作为语句的时候没有任何区别,都是在a的基础上+1
		a++;
		System.out.println(a);//11
		++a;
		System.out.println(a);//12


		int b = 20;
		
		System.out.println(b++);
		System.out.println(b);
		System.out.println(b++);//20  int temp = b;  b = temp + 1;
		System.out.println(b);//21
		System.out.println(++b);//22
		System.out.println(b);//22

		int x = 10;
		int y = 20;
				// x = 11 y=19   x = 12 y = 18    y = 19
				 // 10 *  20     12     19     18
		int z = (x++ * y--) + (++x * y--) + y++;
		System.out.println(x);//12
		System.out.println(y);//19
		System.out.println(z);//446

		System.out.println("------------------------------------");

		int k = 10;
		System.out.println(false & k++ == 0);
		System.out.println(k);// && 结果是 10     & 结果是11

		int m = 10;
		System.out.println(true | m++ == 0);
		System.out.println(m);// ||  10               |  11


	}
}

键盘录入

1、在程序运行过程中,可以让用户录入一些整数,保存在内存中,供我们进行使用

2、步骤

​ 1、导包 在类上面 import java.util.Scanner;

​ 2、创建键盘录入对象 Scanner sc = new Scanner(System.in);

​ 3、通过对象调用方法 int i = sc.nextInt();

//导包
import java.util.Scanner;
class Demo05_键盘录入 {
    
    

	public static void main(String[] args) {
    
    
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		System.out.println("请录入一个整数:");
		//调用方法进行键盘录入一个整数
		int x = sc.nextInt();
		System.out.println("录入的值是:" + x);
	}
}

分支结构

1、程序的运行方式,从上到下,从左到右

2、程序运行到某个时间点,会出现很多情况,需要把每种情况都准备好,每种情况就代表一个分支,代码写的多,程序运行的少

3、分类

​ if

​ 1、if 2、if else 3、if else if else if else

​ switch

if的第一种形式

1、格式

if(条件表达式) {

​ 语句体;

}

2、执行流程

​ 1、条件表达式必须是boolean类型,结果要么是true,要么是false

​ 2、判断条件表达式,如果是true的话,执行语句体;if结束

​ 3、如果是false的话,什么也不会执行,if结束

import java.util.Scanner;
class Demo10_if的第一种形式 {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的年龄:");
		int age = sc.nextInt();

		if(age >= 18) {
    
    
			System.out.println("你可以观看此视频");
		}
		
		//这行代码一定会执行
		System.out.println("记得删除哦");
	}
}

if的注意事项

1、条件表达式必须是boolean类型

2、如果语句体只有一句的话,大括号可以省略不写,建议都要加上大括号

3、左大括号前面不要加分号,一般有左大括号就没有分号

class Demo11_if的注意事项 {
    
    
	/*
		1、条件表达式必须是boolean类型

		2、如果语句体只有一句的话,大括号可以省略不写,建议都要加上大括号

		3、左大括号前面不要加分号,一般有左大括号就没有分号
	
	*/
	public static void main(String[] args) {
    
    
		
		/*int a = 10;
		if(a) {  a是int类型不是boolean类型

		}*/
		
		//不写大括号只能控制一句语句体,建议任何时候都给大括号加上
		/*if(10 > 11) 
			System.out.println("是的");
		System.out.println("我是第二句");	
		System.out.println("你好");*/


		//不要加分号,加了分号,if就控制不了大括号的内容了
		if(10 > 11); 
		
		{
    
    
			System.out.println("是的");
		}

	}
}

if的第二种格式

1、格式

if(条件表达式) {

​ 语句体1;

}else{

​ 语句体2;

}

2、执行路程

​ 1、判断条件表达式,要么是true,要么是false

​ 2、如果是true的话,就会执行语句体1,ifelse结束

​ 3、如果是false的话,就会执行语句体2,ifelse语句结束

3、说明

​ 1、会出现语句体1和语句体2都执行的情况吗?肯定不会

​ 2、会出现语句体1和语句体2都不执行的情况吗?肯定不会,else满足了表达式所有不满足的情况

​ 3、语句体1和语句体2有且只会执行一个

import java.util.Scanner;
class Demo12_if的第二种格式 {
    
    
	
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的成绩:");
		int grade = sc.nextInt();
		if(grade >= 60) {
    
    
			System.out.println("奖励兰博基尼5元代金券");
		}else {
    
    
			System.out.println("回家等死吧");
		}
		//一定会执行的代码
		System.out.println("欢迎下次查询");
	}
}

键盘录入字符串

1、录入一个整数 sc.nextInt()

2、录入字符串 String str = sc.nextLine();

3、比较两个字符串的数值是否相等

​ 字符串是引用类型 == 比较的是地址

​ 比较数值 “张三”.equals(“张三”)

import java.util.Scanner;
class Demo13_键盘录入字符串 {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请录入你的姓名:");
		String name = sc.nextLine();
		/*if(name == "张三") {  == 比较的是地址
			System.out.println("相等");
		}*/

		if("张三".equals(name)) {
    
    
			System.out.println("相等");
		}
		
	}
}

if的第三种格式

1、格式

if(条件表达式1) {

​ 语句体1;

}els

e if(条件表达式2) {

​ 语句体2;

}…else if(条件表达式n - 1) {

​ 语句体n - 1;

}else {

​ 语句体n;

}

2、执行流程

​ 1、先判断条件表达式1,如果为true的话,执行语句体1;if 语句结束

​ 2、如果为false的话,判断条件表达式2,如果是true的话,执行语句体2;if语句结束

​ …

​ 3、如果条件表达式n- 1都为false的话,执行语句体n;if语句结束

3、说明

​ 1、语句体1-n会都不执行吗

​ 如果给了else 肯定不会

​ 如果没有给else 有可能会

​ 2、只要给了else,语句体1-n有且只会执行一个

​ 3、如果没有给else,语句体1—n-1有可能一个都不执行

​ 4、语句体1-n不可能执行两个以上

import java.util.Scanner;
class Demo14_if的第三种格式 {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("万岁爷时候不早了,该睡觉了");
		int x = sc.nextInt();
		if(x == 1) {
    
    
			System.out.println("王皇后准备");
		}else if(x == 2) {
    
    
			System.out.println("萧淑妃准备");
		}else if(x == 3) {
    
    
			System.out.println("武昭仪准备");
		}else {
    
    
			System.out.println("该选秀了");
		}
		System.out.println("欢迎下次光临");
	}
}

class Demo15_if第三种格式的注意事项 {
    
    

	public static void main(String[] args) {
    
    
		
		/*int i = 10;
		//打印的结果是1     满足第一个表达式
		if(i < 10 || i > 0) {
			System.out.println(1);
		}else if(i == 100) {
			System.out.println(2);
		}else if(i == 10) {
			System.out.println(3);
		}else {
			System.out.println(4);
		}*/

		//else 可以给也可以不给
		int j;
		int k = 10;
		if(k < 10) {
    
    
			j = 1;
		}else if(k > 100) {
    
    
			j = 2;
		}else if(k == 10) {
    
    
			j = 3;
		}/*else {
			j = 4;
		}*/
		//报错:有可能尚未初始化
		System.out.println(j);

		
	}
}

switch语句

1、switch 英文开关的意思 相当于开了多扇门等数据进行匹配,如果匹配上了就结束switch语句

2、格式

switch(值) {

​ case 常量1:

​ 语句体1;

​ break;

​ case 常量2:

​ 语句体2;

​ break;

​ …

​ case 常量n-1:

​ 语句体n-1;

​ break;

​ default:

​ 语句体n;

}

3、执行流程

​ 1、值跟常量1进行匹配,如果相等,执行语句体1;break将switch语句结束

​ 2、如果不相等,值跟常量2进行匹配,匹配成功,执行语句体2;break将switch语句结束

​ …

​ 3、如果值跟常量1—常量n-1都匹配不上,执行语句体n

import java.util.Scanner;
class Demo16_switch语句 {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入星期几");
		int week = sc.nextInt();
		switch(week) {
    
    
			case 1:
				System.out.println("星期1");
				break;
			case 2:
				System.out.println("星期2");
				break;
			case 3:
				System.out.println("星期3");
				break;
			case 4:
				System.out.println("星期4");
				break;
			case 5:
				System.out.println("星期5");
				break;
			case 6:
				System.out.println("星期6");
				break;
			case 7:
				System.out.println("星期天");
				break;
			default:
				System.out.println("没有你输入的星期");
		
		}
		System.out.println("你好");
	}
}

switch的注意事项

1、case 实例 break 破坏 default默认

2、case后面只能跟常量不能跟变量

​ jdk1.5之前: byte short int char

​ jdk1.5:枚举

​ jdk7:字符串常量

3、switch语句什么时候结束?

​ 遇到break或者右大括号就结束了

4、每一个case后面都应该给一个break用来结束switch语句,如果不给的话,会出现case穿透,case穿透不是错误,有些需求会用到case穿透

5、default可以给也可以不给

​ 如果不给的话,有可能一个语句体都不会执行

​ 如果给了话,一定会执行语句体

6、default可以写在任何位置,但是无论写在哪个位置都是最后一个进行匹配,建议写在最后面

class Demo17_switch注意事项 {
    
    

	public static void main(String[] args) {
    
    
		
		/*switch("李四") {
			// case 后面只能跟byte short int char  枚举  字符串常量  不能跟变量
			case "张三":
				System.out.println("第一个");
				break;
		}*/

		
		/*switch(11) {
			//发生了case穿透  打印了1  2   3
			case 11:
				System.out.println("1");
			case 22:
				System.out.println("2");
			case 33:
				System.out.println("3");
				break;
			case 4:
				System.out.println("4");
		}*/



		//  default可以放在任何位置,都是最后一个进行匹配的
		switch(1) {
    
    

			default:
				System.out.println("default");
			case 1:
				System.out.println(2);
				
			
		}
		
	}
}

猜你喜欢

转载自blog.csdn.net/lizicheng1996/article/details/113142959