java小白训练营2109-day04-流程控制:分支判断+循环迭代+异常

Posted 长安紫薯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java小白训练营2109-day04-流程控制:分支判断+循环迭代+异常相关的知识,希望对你有一定的参考价值。

单元测试 junit

每个开发者每天都在写程序,写程序就出现一个问题 bug,代码中错误。
写完代码要验证我们自己写的代码有没有错误,验证过程:test 测试
早期测试就是通过在代码中加入打印语句,根据预测结果和打印结果是否一致,一致就代表代码是正确的,不一致代码有问题,继续找bug,修改。
这种方式不方便,
1)早期只有main方法,不是为测试而生,为运行而生。日常习惯用测试。main只能一个
2)测试时通过注释不同的代码来切换。非常麻烦
3)当程序稳定,这些打印的代码就成为垃圾代码,虽然这些代码是打印后台,但如果用户量上来每次调用就会耗时,甚至系统卡顿

怎么解决呢?
单元测试单独方式就应运而生。

如何使用junit?

junit第三方公司提供
1)找到它,它是一个jar(一堆class文件)官网、常用eclipse
2)非java.lang.类,都需要导包 import,org.junit.; org.junit.Test; 测试类(@Test 注解)
3)给方法上戴帽子@Test
4)运行,有新的菜单项 RunAs junit test

main方法和junit有什么区别?

main是java标准,一个类中执行入口,用来执行程序的。所以它直接使用。
junit 是第三方(非java-sun-oracle)org.junit出品的,需要找jar包(eclipse),导包import,
main一个类中只能一个,junit单元测试方法多个
运行方式:main使用java application,junit使用junit test(额外绿的条)
结论:根本没有关系,简单测试可以直接在main放中来测试

package test;

import org.junit.Test;

//可以利用eclipse点击导入,也可以手写

public class TestPrint {
	//一个类中的方法是平等的,不能交叉
	public static void main(String[] args) {
		System.out.println("main test");
	}
	
	/*
	 * junit单元测试方法规定:
	 * 1)方法必须使用public修饰
	 * 2)方法必须使用void修饰,无返回值
	 * 3)方法不能有参数
	 * 4)main唯一,单元测试方法就可以多个
	 * 5)和业务方法区分,在它方法上面加帽子 @Test 注解
	 * 6)执行时先会弹出一个窗口,一个条,绿色:成功;棕色:错误;
	 * 
	 * 7)可以多个方法,只要不同名,它们执行顺序是乱的(反射)
	 */

	
	@Test
	public void num() {
		System.out.println("junit num");
	}
	
	@Test
	public void print(){
		System.out.println("junit test");
	}
	
	@Test
	public void print2() {
		System.out.println("junit t2");
	}

}








java中流程控制分3类

1)顺序执行:从上向下,从左向右(=赋值语句,先执行右边)所有的代码都执行
2)分支判断:部分的代码执行部分的代码不执行,根据判断条件来决定
需求:天下雨打伞
java:if(条件=下雨){ 打伞 }
3)循环迭代:一部分代码反复执行,
需求:打印0到9
java: for(循环判断 i=0; i<10; i++)

分支判断 judgment

1)if语句(单分支)
a. if(条件){ … }
b. if(条件){ … } else { … }
c. else-if if(条件){ … }else if(条件){ … } else{ … }

package test;

import org.junit.Test;

//if语句
public class TestIf {
	@Test //需求:天下雨打伞
	public void testIf() {
		boolean isRainning = true;
		//如果后面的大括号中只有一条语句,大括号可以省略,这种语法支持,但不推荐
//		if(isRainning) System.out.println("天下雨打伞");
//		System.out.println("if");
		
		if(isRainning) {
			System.out.println("天下雨打伞");
		}
	}
	
	@Test //需求:天下雨打伞,天晴晒被子(分支,互斥)
	public void testIfElse() {
		boolean isRainning = false;
		//判断条件成立就执行紧跟{}中代码,如果不成立就执行else后面{}代码
		if(isRainning) {
			System.out.println("天下雨打伞");
		}else {
			System.out.println("天晴晒被子");
		}
	}
}

2)switch语句(多分支)
switch(num){ case 1: … case 2: … cae 3: … default: … }

package test;

import org.junit.Test;

//switch语句:多分支
public class TestSwitch {
	@Test	//需求:110 警察,120 医生,119 火警,114 查号
	public void testSwitch() {
		//switch语句特性:一旦某个判断成立,后面的判断都执行忽略,然后代码直接执行
		//必须加break
		int phone = 114;
		switch(phone) {
		case 110: //phone == 110
			System.out.println("警察");
			break;	//跳出
		case 120:
			System.out.println("医生");
			break;
		case 119:
			System.out.println("火警");
			break;
		case 114:
			System.out.println("查号");
			break;
		default:
			System.out.println("电话号码非法");
			break; //写不写都行
		}
	}
	
	//利用switch特点,串透
	@Test //季节:春3,4,5,夏6,7,8,秋9,10,11,冬12,1,2
	public void season() {
		int month = 9;
		switch(month) {
		case 3,4,5:
			System.out.println("春季");
			break;
		case 6,7,8:
			System.out.println("夏季");
			break;		
		case 9,10,11:
			System.out.println("秋季");
			break;	
		case 12,1,2:
			System.out.println("冬季");
			break;					
		}
	}
}





循环迭代 loop

1)for循环
for(int i=0; i<10; i++){ … }

package test;

import java.util.Arrays;

import org.junit.Test;

//for循环
public class TestFor {
	@Test //打印0到9
	public void for09() {
		for(int i=0; i<10; i++) {
			//\\t TAB键,不可见字符,转义 \\t 换行
			System.out.print(i);  
		}
		
		System.out.println();	//换行
		
		for(int i=9; i>=0; i--) {
			System.out.print(i);
		}
	}
	
	@Test //数组的打印
	public void forArray() {
		int[] scores = {100,90,120,50,20};
		System.out.println(scores);
		System.out.println( Arrays.toString(scores) );
		
		//使用for循环来遍历数组
		for(int i=0; i<scores.length; i++) {
			System.out.print(scores[i]+", ");
		}
		
		System.out.println();
		
		String[] s = {"语文","数学","英语"};
		for(int i=0; i<s.length; i++) {
			System.out.print(s[i]+"\\t");
		}
	}
	
	@Test //for循环的嵌套,支持多重嵌套,如果是2个,双重for循环
	//外层for走一次,内层for走一圈(10次) 10*10=100
	public void for2() {
		int count = 0;
		for(int i=0; i<10; i++) {  //外
			//Duplicate local variable i,不能再使用i,习惯ijkmn
			for(int j=0; j<10; j++) { //内
				//System.out.print("i="+i+", j="+j+", ");
				System.out.print(++count+"\\t");
			}
			System.out.println("--------");
		}
	}
	
	@Test
	public void for99() {
		/*
		 * 九九乘法表
		 * 1)9*9,for循环从1开始,到9结束
		 * 2)三角的,不是矩形,1*2=2*1
		 */
		for(int i=1; i<=9; i++) {
			for(int j=1; j<=i; j++) {
				System.out.print(i+"*"+j +"="+i*j+"\\t");
			}
			System.out.println();
		}
	}
}

2)while循环
3)do-while循环

异常 exception

以上是关于java小白训练营2109-day04-流程控制:分支判断+循环迭代+异常的主要内容,如果未能解决你的问题,请参考以下文章

java小白训练营2109-day01搭建开发环境

java小白训练营2109-day01-知识回顾

java小白训练营2109-day05-知识回顾

java小白训练营2109-day03-知识回顾

java小白训练营2109-day06-OOP:面向对象+封装+继承+多态

java小白训练营2109-day03-数据结构:基本类型+包装类型+数组+对象