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-流程控制:分支判断+循环迭代+异常的主要内容,如果未能解决你的问题,请参考以下文章