1. 运算符(接2021.12.29)

1.1 算数运算符
1.2 关系运算符
1.3 位运算符

1.4 赋值运算符

=:把右边的赋值给左边,a=2,a=b
+=:左右相加,赋值给左边 a+=b   等价a=a+b
-=:左减去右,赋值给左边 a-=b   等价a=a-b
*=
/=
%=
赋值运算符是右结合,从右往左算
初始化还是从左到右

1.5 字符串拼接符

+把多个数据拼成一个字符串
如果+两边是数字则为加运算
如果+两边有一个字符串,则将数字与字符串拼接
public static void main(String[] args) {
		String string = "啊实打实大声道!@#$ int a = 20  阿萨德115\" '";
		int a = 100;
		int b = 120;
		System.out.println(a+b);
		// a+b=1012
		System.out.println("a+b="+a+b);
		// a+b=22
		System.out.println("a+b="+(a+b));
		// 100+120=220
		System.out.println(a+"+"+b+"="+(a+b));
	}

1.6 三目运算符(三元运算符)

语法 : 布尔类型表达式 ? 真 : 假 ;
如果 布尔型为true 则执行 真 否则 执行 假

public class Operator_06 {

	public static void main(String[] args) {
		int i = 2 < 2 ? 1 : 0;
		System.out.println(i);
		System.out.println(false ? 123 : "都是假的");
	}

2. 流程控制

控制程序不同执行分支

2.1 顺序结构

从上到下,从左往右执行

2.2 分支结构

通过指定的判断条件,选择性执行不同分支

2.2.1 if…else…

* 单分支 : 有不执行情况
 * 			if(布尔型表达式){
 * 					为真时执行的代码
 * 			}
 * 
 * 双分支 : 一定有一个分支执行
 *  		if(布尔型表达式){
 * 					为真时执行的代码
 * 			}else{
 * 					为假的时候,执行的代码
 * 			}
 * 	多分支 : 
 * 			if(布尔型表达式){}  else if(布尔型表达式){} else if(布尔型表达式){} .....
 * 			如果多分支最后是以else结尾,则肯定有一个分支执行
 * 			如果是以else if结尾 那么该多分支 有不执行情况
 * 			多分支情况下,有一个分支执行则整个多分支结束
 * 
 * 每一个分支下如果只有一行代码,则 {} 可以省略
public class If_01 {
	public static void main(String[] args) {
		int a = 110;
		int b = 11;
		if (a > 10) {
			System.out.println("1111");
		} else if (a > 50) {
			System.out.println("2222");
		} else if (a > 100) {
			System.out.println("33333");
		}
		
		// 只有一行代码 大括号可以省略
		if (true) 
			System.out.println("执行完成");
		else
			System.out.println("执行完成");
		
		System.out.println("执行完成");
	}

2.2.2 Switch

* switch : java1.7之前 只能传入int值 但是从1.7开始 可以传入字符串
 * 
 * 语法 : switch(值){ case 值1: 执行语句; break; case 值2: 执行语句; break; default : 执行语句;
 * break; }
 * 
 * 每一个分支都需要加break来结束分支,否则会出现case穿透现象
public static void main(String[] args) {
		char c = 'B';
		if (c == 'A') {
			System.out.println("优秀");
		} else if (c == 'B') {
			System.out.println("良好");
		} else if (c == 'C') {
			System.out.println("一般");
		} else {
			System.out.println("差");
		}
		// 上下两个程序是一个意思,但是 if可以判断相等,也可以判断范围,而switch只能判断相等,不能判断范围
		switch (c) {
		case 'A':
			System.out.println("优秀");
			break;
		case 'B':
			System.out.println("良好");
			break;
		case 'C':
			System.out.println("一般");
			break;
		default:
			System.out.println("差");
			break;
		}
		// 如果分支没有break 会导致case穿透
		int i = 10;
		switch (i) {
		case 1:
			System.out.println(11111);
		case 2:
			System.out.println(22222);
		case 10:
			// 从符合条件处开始,后面所有的分支全部执行
			System.out.println(101010);
		case 100:
			System.out.println(100100100);
		default:
			System.out.println("默认语句");
		}
	}
public static void main(String[] args) {
		char c = 'C';
		if (c == 'A' || c == 'B') {
			System.out.println("优秀");
		} else if (c == 'C') {
			System.out.println("良好");
		}

		// case合并  利用case穿透 可以完成合并,做到 || 的效果
		switch (c) {
		case 'A':
		case 'B':
			System.out.println("优秀");
			break;
		case 'C':
			System.out.println("良好");
			break;
		}
	}

2.3 循环结构

2.3.1 For

2.3.1.1 单循环
* for循环 是计数循环,在某个次数范围内重复执行
 * 
 * 语法结构 : 
 * 		for( 表达式1 ; 表达式2 ; 表达式3 ){
 * 			循环体,就是需要重复执行的代码
 * 		}
 * 	
 * 循环三要素 : 起始值,终止条件,步长
 * 
 * 表达式1 : 最先执行,并且只执行一次,所以适合做初始化操作
 * 
 * 表达式2 : 必须是布尔型,并且决定循环是否结束,所以是终止条件
 * 
 * 表达式3 : 也是每次循环都执行,所以可以做为步长
 * 
 * 	执行过程 : 
 * 		先执行表达式1并且只执行一次,然后执行表达式2 , 如果表达式2为true(表达式2必须是布尔型) 则执行循环体
 * 		然后执行表达式3 , 然后再次执行表达式2 ,如果是true 则执行循环体 , 
 * 		然后执行表达式3 ,再次执行表达式2  一直到 表达式2 为false 循环终止
// for ( ; ; ) {
		//
		// }
		// 循环中的变量i  只可以再循环中使用
		for (int i = 0; i < 5; i++) {
			System.out.println(i);
		}
		// System.out.println(i);
		int i;
		for ( i =0 ; i < args.length; i++) {
			System.out.println(i);
		}
		System.out.println(i);
2.3.1.2 嵌套循环
* 嵌套循环 双层嵌套可以模拟二维表, 三层嵌套可以模拟三维体
 * 
 * 可以把外层循环看做行数 内层循环看做列数
for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				// println会换行  print 不会换行
				System.out.print(0+"  ");
			}
			// 换行
			System.out.println();
		}

2.3.2 While

* while : 真假循环,条件为真 就执行,为假就终止
 * 
 * 语法 : 
 * 		while(布尔型){
 * 			循环体;
 * 		}
int i = 1000;
		while (i<100) {
			System.out.println(i);
			i++;
		}

2.3.3 Do…while

* dowhile 可以保证循环至少执行一次
 * 
 * for和while的执行次数是 0~N次 而 doWhile 是 1~N次
int i = 1000;
		do {
			System.out.println(i);
			i++;
		} while (i < 100);

2.3.4 Break&continue

* break : 打断
 * 
 * 1 可以用在switch中,用来结束case分支,防止case穿透
 * 
 * 2 也可以用在循环中,用来结束当前循环
for (int i = 0; i < 10; i++) {
			if (i == 3) {
				// 终止循环
				break;
			}
			System.out.println(i);
		}
// 对外层循环设置名字
		outerFor: for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if (j == 3) {
					// 发生在嵌套循环的时候,break只能终止内层循环
					// break;
					// 终止指定循环,这种方式可以做到在内层循环中,终止外层循环
					break outerFor;
				}
				System.out.print(j + "  ");
			}
			System.out.println();
		}
  • continue : 跳过当前次循环,继续下次
for (int i = 0; i < 10; i++) {
			if (i == 3) {
				// break;
				continue;
			}
			System.out.println(i);
		}

3. 方法

3.1 概述

  • 方法 就是很多条语句的集合,把这些代码放到方法中,然后就可以多次使用这个方法

  • 方法目的 : 代码复用 , 使程序更加简短清晰,提高开发效率

3.2 方法声明

*  声明 : 
 * 		修饰符列表  返回值类型  方法名  (参数列表){ 方法体 }
 * 
 * 		修饰符列表 :  可以有,可以没有,可以有多个
 * 				权限修饰 : public  protected private  不写  四选一
 * 				其他修饰 : static , synchronized 
						abstract , final 二选一 .....
						
		返回值类型 : 11种数据类型中的任意一种 , 如果不需要返回值,则写 void
		
		方法名 : 方法的名字,望文知义,驼峰命名法
		
		参数列表 : 要做一件事,需要的必备条件,可以作为入参
				可以有多个,用 , 逗号隔开 比如 int a , int b , int c....
				
				形参 : 在方法声明的时候,定义的参数列表
				实参 : 方法调用时,实际传入的数据
				
		方法体 : 需要执行的代码
			注意 : return 终止方法运行并返回
				如果有返回值类型的方法中,方法体必须有return语句
						比如 public static int m1(){
							return 1;// 这里的1 只要是int值即可,因为返回值为int类型
						}
				如果 没有返回值 那么可以写return 也可以不写 ,就算写return 也不能返回数据,只能终止运行
					public static void m1(){
						return; // 只有终止方法运行的功能
					}

3.3 方法分类

* 方法分类
 * 		1 静态方法 : 使用static修饰的方法,是静态方法
 * 		2 成员方法 : 没有static修饰的方法是成员方法
 * 		3 构造方法 : 创建对象使用,先不管
 * 
 * 调用 : 
 * 		静态方法 : 类名.静态方法名(参数) , 同类中 类名可以省略
 * 		成员方法 : 对象引用.成员方法名(参数)
 * 
 * 方法不调用不执行,调用才执行,并把结果返回到调用处
 * 
 * 编写方法 只考虑功能的实现,最终这个方法被用来做什么,与声明无关
public class Method_01 {
	public static void main(String[] args) {
		int result = Method_01.m1(123,5312);
		System.out.println(result);
	}
	public static int m1(int a , int b){
		return a+b;
	}
	public static void m2(){
		return ;
	}