Java(三)

一边回顾一边分享

知识点1:算术运算符

/*
1. 测试算术运算符的使用

+  -  +  -  *  /  %  (前)++  (后)++  (前)--  (后)--  + 

*/
class AriTest {
	public static void main(String[] args) {
		//测试:/
		int m1 = 12;
		int m2 = 5;
		int m3 = m1 / m2 * m2;
		System.out.println("m3 = " + m3);//10

		double m4 = (double)m1 / m2;
		System.out.println("m4 = " + m4);//2.4
		double m5 = m1 / (m2 + 0.0);
		System.out.println("m5 = " + m5);//2.4

		//#####补充######
		byte bb1 = 10;
		int i1 = (int)bb1;
		
		char c1 = 'a';
		System.out.println((int)c1);//97

		//###########
		//测试: %
		//运算结果的符号与被模数一致。
		System.out.println(12 % 5);
		System.out.println(12 % -5);
		System.out.println(-12 % 5);
		System.out.println(-12 % -5);

		//测试:(前)++  (后)++
		//(前)++ : 先自增1,再运算
		//(后)++ : 先运算,后自增1
		int a1 = 10;
		int b1 = a1++;
		System.out.println("a1 = " + a1);//11
		System.out.println("b1 = " + b1);//10

		int a2 = 10;
		int b2 = ++a2;//(前)++
		System.out.println("a2 = " + a2);//11
		System.out.println("b2 = " + b2);//11

		//################
		short s1 = 10;
		//s1++;//自增1
		++s1;
		System.out.println("s1 = " + s1);//11

		short s2 = 10;
		//s2 = s2 + 1;//编译不通过
		s2 = (short)(s2 + 1);
		System.out.println("s2 = " + s2);//11
		

		//测试:(前)--  (后)-- 
		//(前)-- : 先自减1,再运算
		//(后)-- : 先运算,后自减1
		

		int ii1 = 10;
		//(ii1++)++;//编译不通过
	}
}

知识点2:赋值运算符

/*
2. 赋值运算符:

=   +=  -=  *=  /=  %=  

*/
class SetValueTest {
	public static void main(String[] args) {
		//赋值运算符: = 

		int a = 10;
		int b = 10;

		int a1,a2;
		a1 = a2 = 10;//连续赋值
		System.out.println("a1 = " + a1);
		System.out.println("a2 = " + a2);

		int a3 = 10,a4 = 20;
		System.out.println("a3 = " + a3);
		System.out.println("a4 = " + a4);

		// += 
		int m = 10;
		m += 5;//类似:m = m + 5
		System.out.println("m = " + m);//15

		m %= 8;//类似:m = m % 8
		System.out.println("m = " + m);//7

		//####特别的#######
		short s1 = 10;
		s1 += 5;//类似:s1 = (short)( s1 + 5)
		System.out.println("s1 = " + s1);

		//总结:开发中如果需要变量自增2。建议使用: += 2。 而不是使用 + 2。

		//######################
		int i = 10;
		i += 5.0;
		System.out.println("i = " + i);//15

		//####################
		//练习1:
		int m1 = 2;
		int n1 = 3;
		n1 *= ++m1; //n1 = n1 * ++m1	
		System.out.println("m1=" + m1);//3
		System.out.println("n1=" + n1);//9

		//练习2:
		int n3 = 10;
		n3 += (n3++) + (++n3); //n3 = n3 + (n3++) + (++n3)
		System.out.println(n3);//32

		//练习3:
		int k = 0,j = 0;
		j += k *= j += (k = 1) / (j = 1); //j = j + (k = k * (j = j + ((k = 1) / (j = 1))))
		System.out.println(j);//0

		// 2 + 4 * (3 + 6) * 7

		k = 0;j = 0;
		j += ++k + (++k + j);
		System.out.println(j);//3
	}
}

知识点3:比较运算符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGzC01aC-1625660637707)(assets/1595580544883.png)]

/*
3. 比较运算符的使用:

==  !=  >  <  >=  <=   instanceof(暂时不讲)

说明:
1:运算的结果是boolean类型
2:区分 ==  和  = 
*/
class CompareTest {
	public static void main(String[] args) {
		
		int a = 10;
		int b = 20;
		System.out.println(a == b);//false
		System.out.println(a = b);//20

		boolean b1 = false;
		boolean b2 = true;
		System.out.println(b1 == b2);//false
		System.out.println(b1 = b2);//true

	}
}

知识点4:逻辑运算符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pn1jN1sx-1625660637709)(assets/1595580576778.png)]

/*
4. 逻辑运算符的使用

& &&  |  ||  !  ^

说明:
1:操作的是boolean类型变量
2:运算的结果也是boolean类型
3. 区分 &  与  &&
   区分 |  与  ||

*/
class LogicTest {
	public static void main(String[] args) {
				
		boolean a = true;
		boolean b = false;
		System.out.println("a & b : " + (a & b));
		System.out.println("a && b : " + (a && b));
		System.out.println("a | b : " + (a | b));
		System.out.println("a || b : " + (a || b));
		System.out.println("a ^ b : " + (a ^ b));
		System.out.println("!a : " + !a);

		
		//& 与 && 相同点:当符号左边是true时,此时都需要执行符号右边的操作
		//& 与 && 不同点:&:当符号左边是false时,仍然执行符号右边的操作。 &&:当符号左边是false时,不再执行符号右边的操作
		//开发中,建议使用&&
		boolean b1 = true;
		b1 = false;
		int m1 = 10;
		if(b1 & (m1++ > 0)){
			System.out.println("执行if结构");
		}else{
			System.out.println("执行else结构");
		}

		System.out.println("m1 = " + m1);//11


		boolean b2 = true;
		b2 = false;
		int m2 = 10;
		if(b2 && (m2++ > 0)){
			System.out.println("执行if结构");
		}else{
			System.out.println("执行else结构");
		}

		System.out.println("m2 = " + m2);//10

		//################################

		//| 与 || 的相同点:当符号左边是false时,此时都需要执行符号右边的操作
		//| 与 || 的不同点:|:当符号左边是true时,仍然执行符号右边的操作。 ||:当符号左边是true时,不再执行符号右边的操作
		//开发中,建议使用||
		boolean b3 = false;
		b3 = true;
		int m3 = 10;
		if(b3 | (m3++ > 0)){
			System.out.println("执行if结构");
		}else{
			System.out.println("执行else结构");
		}

		System.out.println("m3 = " + m3);
		
		//
		boolean b4 = false;
		b4 = true;
		int m4 = 10;
		if(b4 || (m4++ > 0)){
			System.out.println("执行if结构");
		}else{
			System.out.println("执行else结构");
		}

		System.out.println("m4 = " + m4);
		

	}
}

知识点5:位运算符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K3zNusFF-1625660637710)(assets/1595580636358.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3MNOzy2-1625660637712)(assets/1595580709858.png)]

/*
5. 位运算符的使用:

<<   >>  >>>  &  |  ^  ~ 

说明:
<< : 针对于整数,不管是正数还是负数,在一定范围内,只要向左移动一位,就相当于 * 2
>> :  针对于整数,不管是正数还是负数,在一定范围内,只要向右移动一位,就相当于 / 2


经典的笔试题:以最高效的方式计算2 * 8
               2 << 3  或  8  << 1
*/
class BitTest {
	public static void main(String[] args) {
		System.out.println("7 << 1 : " + (7 << 1));//14
		System.out.println("7 << 2 : " + (7 << 2));//28
		System.out.println("7 << 3 : " + (7 << 3));//56
		System.out.println("-7 << 3 : " + (-7 << 3));//-56

		System.out.println("7 << 28 : " + (7 << 28));
		System.out.println("7 << 29 : " + (7 << 29));

		System.out.println("7 >> 1 : " + (7 >> 1));//3
		System.out.println("-7 >> 1 : " + (-7 >> 1));//-4

		//需求:交换两个变量的值
		int m = 10;
		int n = 20;

		System.out.println("m = " + m + ", n = " + n);
		//交换两个变量的操作:
		//方式一:更通用。
		int temp = m;
		       m = n;
		       n = temp;


		//方式二:
		//m = m + n;
		//n = m - n;
		//m = m - n;

		//方式三:
		//m = m ^ n;
		//n = m ^ n;
		//m = m ^ n;

		System.out.println("m = " + m + ", n = " + n);
	}
}
  • 其它举例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dz6J296T-1625660637713)(assets/1595580788296.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O2vxOt0p-1625660637714)(assets/1595580795747.png)]

知识点6:三元运算符

/*
6.三元运算符的测试

格式: (条件表达式)? 表达式1 : 表达式2

说明:
1. 条件表达式是boolean类型
2. 如果条件表达式为true,则返回表达式1;
   如果条件表达式为false,则返回表达式2;

3. 要求表达式1和表达式2要一致。

4. 能使用三元运算符的地方,都可以改写为if-else。反之,使用if-else不一定可以改写为三元运算符。
5. 在能使用三元运算符和if-else的时候,建议使用三元运算符。因为三元运算符执行效率稍高。

*/
class SanYuanTest {
	public static void main(String[] args) {
		
		//练习1:获取两个数的较大值
		int m = 20;
		byte n = 20;
		int max = (m > n)? m : n;
		System.out.println("m和n的较大值为:" + max);
		//编译失败
		//String max1 = (m > n)? m : "n大";

		//练习2:
		String maxStr = (m > n)? "m大" : ((m == n)? "相等" : "n大");
		System.out.println(maxStr);

		//练习3:获取三个数的最大值
		int a1 = 10,a2 = 20,a3 = 5;

		int max1 = (a1 > a2)? a1 : a2;
		int max2 = (max1 > a3)? max1 : a3; 
		//或
		//int max2 = (((a1 > a2)? a1 : a2) > a3)? ((a1 > a2)? a1 : a2) : a3;
		System.out.println("最大值为:" + max2);

		
		//#########################
		if(m > n){
			System.out.println(m);

		}else{
			System.out.println(n);
		}
	}
}

知识点7:运算符的优先级

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h91bn2Yx-1625660637714)(assets/1595580908536.png)]

  • 说明:上图大家不用记忆。

  • 如果大家开发中需要连续使用多个运算符,则考虑使用()标识优先级较高的结构

知识点8:分支结构1:if-else

  • 基本使用
/*
一、流程控制分为三类结构:顺序结构、分支结构、循环结构

二、分支结构1:if-else

1.格式1:
if(条件表达式){
	执行语句1;
}

2.格式2:“二选一”

if(条件表达式){
	执行语句1;
}else{
	执行语句2;
}

3.格式3:“多选一”

if(条件表达式1){
	执行语句1;
}else if(条件表达式2){
	执行语句2;
}else if(条件表达式3){
	执行语句3;
}
....
else{
	执行语句2;
}



*/
class IfTest {
	public static void main(String[] args) {
		
		
		int heartBeats = 80;
		if(heartBeats < 60 || heartBeats > 100){
			System.out.println("你需要做进一步的检查");
		}

		System.out.println("体检结束");
		
		//############二选一################
		int age = 23;
		if(age >= 22){
			System.out.println("你已经到了合法的结婚年龄");
		}else{
			System.out.println("你只能先谈谈恋爱~~");
		}
		
		//############多选一################
		int myAge = 12;
		if(myAge < 0 || myAge > 150){
			System.out.println("你输入的数据不合法~~");	
		}else if(myAge < 6){
			System.out.println("婴幼儿时期");
		}else if(myAge < 25){
			System.out.println("青少年时期");
		}else if(myAge < 60){
			System.out.println("壮年时期");
		}else{
			System.out.println("老年时期");
		}
 
 		System.out.println("执行结束");
	}
}
  • 例题
/*
岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。

请从键盘输入岳小鹏的期末成绩,并加以判断

说明1:
如果多个条件表达式彼此之间是“互斥”关系(即:没有交集),则哪个条件表达式声明在上面,哪个条件表达式声明在下面都可以。
如果多个条件表达式彼此之间是“包含”关系,则需要将条件表达式范围小的声明在条件表达式范围大的上面。

说明2:如果if-else结构中的某一个if或else if 或 else只有一行执行语句,则可以省略其一对{}。但是,不建议省略
*/
import java.util.Scanner;
class  IfTest1{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.println("请输入岳小鹏的期末成绩:");

		int score = scan.nextInt();
		
		if(score == 100){
			System.out.println("奖励一台BMW");
		}else if(score > 80){//
			System.out.println("奖励一台iphone xs max");
			
		}else if(score >= 60 ){//
			System.out.println("奖励一个 iPad");
			
		}else{
			System.out.println("奖励一本参考书");
		}

	}
}

知识点9:Scanner的使用


/*
1. 需求:如何从键盘获取不同类型的数据

2. 使用Scanner来实现。

3. 操作步骤:
① 导包:import java.util.Scanner;
② 实例化Scanner:  Scanner scan = new Scanner(System.in);
③ 根据需要获取的变量的类型,调用相关的方法即可。

*/
//① 导包:
import java.util.Scanner;

class ScannerTest {
	public static void main(String[] args) {
		//② 实例化Scanner: 
		Scanner scan = new Scanner(System.in);
		
		//③ 根据需要获取的变量的类型,调用相关的方法即可。
		System.out.println("请输入你的姓名:");
		String name = scan.next();
		System.out.println("name = " + name);

		System.out.println("请输入你的年龄:");
		int age = scan.nextInt(); //类似:nextByte() / nextShort() / nextLong()
		System.out.println("age = " + age);

		System.out.println("请输入你的体重:");
		double weight = scan.nextDouble(); //类似:nextFloat()
		System.out.println("weight = " + weight);

		System.out.println("婚否:(true/ false)");
		boolean isMarried = scan.nextBoolean();
		System.out.println("isMarried = " + isMarried);
		
		//获取字符型
		System.out.println("请输入你的性别:");
		String gender = scan.next();
		char charGender = gender.charAt(0);//获取字符串指定索引为0位置上的字符
		System.out.println("gender = " + charGender);
		


	}
}

= scan.nextInt(); //类似:nextByte() / nextShort() / nextLong()
System.out.println("age = " + age);

	System.out.println("请输入你的体重:");
	double weight = scan.nextDouble(); //类似:nextFloat()
	System.out.println("weight = " + weight);

	System.out.println("婚否:(true/ false)");
	boolean isMarried = scan.nextBoolean();
	System.out.println("isMarried = " + isMarried);
	
	//获取字符型
	System.out.println("请输入你的性别:");
	String gender = scan.next();
	char charGender = gender.charAt(0);//获取字符串指定索引为0位置上的字符
	System.out.println("gender = " + charGender);
	


}

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值