1. javase基础3

本文详细介绍了Java中的流程控制语句,包括顺序结构、选择结构(if、switch)和循环结构(for、while、do...while)。通过实例展示了如何使用这些语句实现条件判断和循环执行。此外,还探讨了算术、关系和逻辑运算符的用法,以及运算符的优先级。最后,提到了位运算符的概念,虽然不是重点,但也是理解Java底层运算的重要部分。
摘要由CSDN通过智能技术生成

1. javase基础3

1.1流程控制语句

流程控制语句
顺序结构: 默认顺序从上到下,从左到右
选择结构: 根据条件决定是否执行一段语句
if…
switch
循环结构: 控制一段代码执行多次 (执行的次数可以有条件控制)
for
while
do…while

选择结构:
单选|单分支:
if(选择判断){
执行的语句体;
}

​ 满足()条件就执行语句体,不满足就不执行
​ 选择判断 : 是一个结果为boolean类型的表达式 true满足|false不满足

双选|双分支:
if(选择判断){
满足条件执行的语句体1;
}else{
不满足条件执行的语句体2;
}
根据条件的结果,决定执行那种语句体
如果结果为true,执行语句体1,结果为false执行语句体2

多选|多分支:
if(条件1){
满足条件执行的语句体1;
} else if(条件2){
不满足条件执行的语句体2;
} else if(条件3){
不满足条件执行的语句体3;
}

else{
以上条件都不满足就执行语句体n; --接盘侠,可以存在可以不存在
}

注意: 多选择的多个判断 从上到下一次进行,只要执行了一个对应的语句体,后面的语句体不会再次执行
一个if结构只能执行一个语句体
如果语句体中的语句只有一条,前后的{}可以省略

public class Demo02{
     public static void main(String[] args){
	//单选泽
	System.out.println("if语句开始");
	if(false){
		System.out.println("if语句体中");
	}
	System.out.println("if语句结束");
	//双选择
	int i =-1;
	if(i>0){
		System.out.println("dayu");
	}else{
		System.out.println("budayu");
	}
	
	//多选择
	if(i==0){
		System.out.println("=0");
	}else if(i>0){
		System.out.println(">0");
	}else if(i<0){
		System.out.println("<0");
	}
	
	if(i==0) 
		System.out.println("=0");
	else if(i>0) 
		System.out.println(">0");
	else 
		System.out.println("<0");
	
      }
}

1.1.2 小练习

问:
三个条件 : 身高>180 银行卡余额>1000000 颜色: 90
满足一个条件: 屌丝
满足两个条件: 潜力股
满足三个条件: 高富帅
都不满足: 辣鸡
分析: 键盘输入 if

import java.util.Scanner;
public class Demo03{
	
	public static void main(String[] args){
		//创建Scanner类型的引用
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入身高:");
		int height = sc.nextInt();
		System.out.println("请输入银行卡余额:");
		double money = sc.nextDouble();
		System.out.println("请输入颜色分数:");
		int face = sc.nextInt();
		
		//计数器
		int count = 0;  //满足条件的个数
		
		if(height>180){
			//count = count+1;
			count++;  //count变量的值自身+1
		}
		if(money>1000000){
			count++;
		}
		if(face>90){
			count++;
		}
		
		//多选择
		//通过判断得到 一共满足了几个条件
		if(count==3){
			System.out.println("高富帅");
		}else if(count==2){
			System.out.println("潜力股");
		}else if(count==1){
			System.out.println("屌丝");
		}else{
			System.out.println("辣鸡!!!");
		}
	}
	
	
}

1.2 判断语句

switch 定制判断
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;

default:
语句体n;
break;
}
执行流程:
1.计算表达式,得到一个结果
2.从上到下与每一个case后的值进行判断是否相等,相等执行对应的语句体,不相等继续向下判断
3.break;代表结束当前switch语句结构,没有break会发生case穿透
4.如果所有的case都不满足,就执行default后面的语句体n,相当于else,可以不写

​ 表达式: 一般为变量名,可以为表达式,可以为常量(没意义)
​ 类型: byte,short,int,char,枚举(jdk1.5),字符串(jdk1.7)

switch 与 if的区别:
​ if: 区间判断,定值判断
​ switch: 定值判断
​ 能用switch都能用if,但是能用if不一定能用switch

public class Demo04{
	
	public static void main(String[] args){
		//判断 年龄: 18~20岁之间的员工,根据年龄决定工资  18-》18万 19-》19万 20-》20万
		int age = 30;
		int sal = 0; //年薪
		//根据年龄判定 ,决定年薪的值
		switch(age){
			case 18:
				sal = 180000;
				System.out.println("年薪的值为:"+sal);
				break;
			case 19:
				sal = 190000;
				System.out.println("年薪的值为:"+sal);
				break;
			case 20:
				sal = 200000;
				System.out.println("年薪的值为:"+sal);
				break;
			default:
				System.out.println("年龄不符合要求!!!");
		}
		
		//判断用户是否为管理员 admin  --> 使用if尝试判断
		String name = "admin"; 
		switch(name){
			case "admin":
				System.out.println("管理员");
				break;
			default:
				System.out.println("普通用户");
		}
		
	}
	
	
}

1.3 算术运算符

算术运算符: +,-,,/,%,++,–
a+b
a-b
a
b
a/b
+:
正号(省略)
加法运算 a+b
字符串的连接符 : 当+左右两边一旦出现字符串,+都作为字符串的连接符使用,把两边的数据最终连接成为一整个字符串
%: 求余数
3%5
规律: 当第一个操作数小于第二个操作数的时候,结果就为第一个操作数

​ ++: 自增,自身+1
​ --: 自减,自身-1

​ 只影响自己:
​ ++放在操作数的前面还是后面,都是自身+1
​ --放在操作数的前面还是后面,都是自身-1

​ 影响其他值: (++|–赋值运算,输出语句,表达式)
​ ++|–放在操作数的前面,先自身+1|-1,然后再去参与运算(赋值,输出,计算表达式)
​ ++|–放在操作数的后面,然后再去参与运算(赋值,输出,计算表达式),先自身+1|-1

public class Demo05{
	
	public static void main(String[] args){
		int a = 1;
		int b = 2;
		
		System.out.println(a+","+b);
		//影响自己(操作数)的值
		a++;  //a=a+1;
		++a;  //a=a+1;
		System.out.println(a);
		
		--b; //b=b-1;
		b--; //b=b-1;
		System.out.println(b);  //0
		
		//影响别人
		System.out.println(b++);  //0
		System.out.println(b);  //1
		
		int c = ++a + 10;
		System.out.println(c);  //
		System.out.println(a);  
	}
	
	
}

1.4 关系运算符|比较运算符

关系运算符|比较运算符

< >= <= == !=

< >= <=

操作数只能为为基础数据类型的数据 byte,short,int,long,float,double,char
== !=
任意类型都能判断

注意: 所有的比较运算符结果为boolean值
​ boolean 类型不参与类型转换
​ !=就是==取反

public class Demo07{
	
	public static void main(String[] args){
		
		int a = 7;
		int b = 5;
		
		boolean flag = a+b> 10;
		
		System.out.println(flag);
		
		String name = "zhangsan";
		String name2 = "zhangsanfeng";
		System.out.println(name==name2);
		
		System.out.println('a'>=97);
		
		System.out.println(true!=false);
		System.out.println(true!=a>b);
		

	}
	
	
}

1.5 逻辑运算符

逻辑运算符
两边的操作数必须值为boolean类型(值,表达式)
一般用来用来连接两个条件

​ & 与
​ 两边都满足才是满足,一个为false就是false
​ |
​ 一个为true就是true,两个都为false才是false
​ ! 取反 !true=>false !false->true

​ ^ 异或
​ 两边的操作数相等为false,不等为true

​ 短路: 如果操作操作数能够决定整个结果,右边的操作数将不会执行
​ &&
​ ||

​ 注意: 逻辑运算符两边操作数结果必须为boolean
​ 逻辑运算符最终的结果boolean类型的值
​ 建议使用短路运算符

public class Demo09{
	
	public static void main(String[] args){
		System.out.println("----------&---------------");
		System.out.println(true & false);  //false
		System.out.println(true & true);  //true
		System.out.println(false & true);  //false
		System.out.println(false & false);  //false
		System.out.println("zhangsan"!="zhangsan" & "lisi".equals("lisi"));  //false
		
		System.out.println("----------|---------------");
		System.out.println(true | false);  //true
		System.out.println(true | true);  //true
		System.out.println(false | true);  //true
		System.out.println(false | false);  //false
		System.out.println("zhangsan"!="zhangsan" | "lisi".equals("lisi"));  //true
		
		System.out.println("----------!---------------");
		System.out.println(!false);  //true
		System.out.println(!true);  //false
		
		System.out.println("----------^---------------");
		System.out.println(true ^ false);  //true
		System.out.println(true ^ true);  //false
		System.out.println(false ^ true);  //true
		System.out.println(false ^ false);  //false
		System.out.println("zhangsan"!="zhangsan" | "lisi".equals("lisi"));  //true
		
		System.out.println("----------&&---------------");
		System.out.println(true && false);  //false
		System.out.println(true && true);  //true
		System.out.println(false && true);  //false
		System.out.println(false && false);  //false
		System.out.println("zhangsan"!="zhangsan" & "lisi".equals("lisi"));  //false
		//System.out.println("zhangsan"!="zhangsan" & 5/0==0);  //java.lang.ArithmeticException: / by zero
		System.out.println("zhangsan"!="zhangsan" && 5/0==0);  //false,因为第二个操作数不会执行,发生短路
		
		String name = "张三";
		int pwd = 1234;
		//用户名与张三相等,同时必须是否为123相等,相等登录成功,不等登录失败
		if(name.equals("张三")  &&  pwd==123 ){
			System.out.println("登录成功"); 
		}else{
			System.out.println("登录失败"); 
		}
		
	}
	
	
}

1.6 位运算符

位运算符: (了解)
先把操作数转为二进制,然后运算,结果转为十进制

十进制整数转为二进制:
使用十进制的整数不停的除以2,最终的结果为0的时候,从下晚上看余数
0b开头标识二进制的整数
二进制转为十进制:
从最后一位数开始,不停的通过这一位置的数据*当前进制数^0,次方每次+1,最终的和就是十进制的表现形式

& : 同一个位置的两个数,一个为0就是0,两个都为1才是1
| : 同一个位置的两个数,一个为1就是1,连个都为0才是0
^ : 同一个位置的两个数,相等为0,不等为1
以上三个运算符,当两边的操作数为boolean,最为逻辑运算符,当两边的操作数为数字,作为位运算符存在

注意: 一个数据如果对另一个数据异或两次,结果是元数据本身

右移运算符

操作数1>>操作数2 :

操作数1先转为二进制,然后对二进制的操作数1向右移动操作数2个位数,移出的数据不看,保留的数据转为十进制

规律: 变小 操作数1>>操作数2 ==> 操作数1/2^操作数2

​ << 左移运算符
​ 操作数1<<操作数2 :

操作数1先转为二进制,然后对二进制的操作数1向左移动操作数2个位数,空位补0,保留的数据转为十进制

​ 规律: 变大 操作数1<<操作数2 ==> 操作数12^操作数2

​ 注意: 位运算符执行效率更高,如果位移比
|/效率高,所以很多源码中会常常见到

public class Demo10{
	
	public static void main(String[] args){
		System.out.println(10);
		System.out.println(0b10);
		System.out.println(0b1110);
		
		System.out.println(2&3);  //2
		System.out.println(2|3);  //3
		System.out.println(2^3);  //1
		
		System.out.println(2^3); 
		
		System.out.println(16>>2); //3
		System.out.println(2<<2); //8
		System.out.println(14<<3); //112
		
	}
	
	
}

1.7 运算符优先级

运算符的优先级:
	优先级: 优先执行谁
	口诀: 单目算数位关系,逻辑三目后赋值
	默认从左向右运算,()|. 优先级最高

运算符分类:
根据操作数的个数进行根类
单目: 操作数只有一个 ++ – +正号 -负号 !
双目: 操作数有2个 + - * / % > < …
三目: 条件运算符

public class Demo12{
    public static void main(String[] args){
	
	//&& 与 || 之间的优先级: &&优先级高于||
	System.out.println(true && true || false);  //true
	System.out.println(true || true && false);  //true

    }	
   
}   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值