Java初级-3-面向过程程序逻辑

Java初级-3-面向过程程序逻辑,第1张

Java初级-3-面向过程/程序逻辑 判断 注意
  • 条件触发执行if内的语句,if外的语句都会执行
单if
if(布尔表达式为true){
    // do something
}
// 继续执行其他
if else
if(布尔表达式为true){
    // do something
} else {
	// do something
}
// 继续执行其他
if else if
if(布尔表达式为true){
    // do something
} else if(布尔表达式为true) {
	// do something
} else {
	// do something
}
// 继续执行其他
分支 注意
  • expression数据类型限制:byte、short、int、char,enum,jdk7+可以用String
  • value数据类型限制:常量或字面量(直接写的量)
  • value数据类型限制:expression使用enum类型时,value必须使用enum类的值
case break default
switch(expression){
    case value1:
       // do something
       break; 
    case value2:
       // do something
       break;
    default: 
       // do something
}
case穿透
  • expression可能满足多个case
  • case没有break将继续执行后面的case
switch(expression){
    case value1:
       // do something
    case value2:
       // do something
       break;
    default: 
       // do something
}
无default
  • 没有兜底处理,expression必须满足任一case
switch(expression){
    case value1:
       // do something
       break;
    case value2:
       // do something
       break;
}
枚举
  • expression使用enum类型时,value必须使用enum类的值
switch(color){
    case READ:
       // do something
       break;
    case YELLOW:
       // do something
       break;
    default:
       // do something
}
循环 for i
for(初始化; 布尔表达式; 更新) {
    // do something
}

for(int i=0,j=0;i<10&&j<20;i++,j++){
    // do something
}
for 数组集合
// for 数组
int[] values={1,2,3};
for(int value:values){
    // do something
}

// for 集合
List list=new ArrayList<>();
for(Integer i:list){
    // do something
}
while
  • 先判断再执行
  • 循环执行,直到满足退出条件
while(布尔表达式为true) {
  // do something
}
do while
  • 先执行再判断
  • 循环执行,直到满足退出条件
do{
	// do something
}while(布尔表达式为true);
卫语句
  • 作用:以逆向思维模式,减少if嵌套,降低单元测试难度
  • 多层条件语句建议使用卫语句、策略模式、状态模式等方式重构(阿里巴巴 Java 规范)
  • 卫语句是一种逆向思维方式,先把不想执行的情况处理掉,留下想执行的情况
结构
// 这个布尔表达式,一般是不想执行的情况
if (布尔表达式为true){
	
	continue;
}
例子
// 求质数3, 5, 7的倍数

// 像1个横着的金字塔,当判断条件过多时,金字塔越来越高
for (int v = 1; v <= 1000; v++) {
	if (i%3 == 0){
		if (i%5 == 0){
			if (i%7 == 0){
				System.out.println(i);
			}
		}
	}
}

// 多个&&给单元测试带来复杂性
for (int v = 1; v <= 1000; v++) {
	if (i%3 == 0 && i%5 == 0 && i%7 == 0){
		System.out.println(v);
	}
}

// 卫语句
for (int v = 1; v <= 100; v++) {
	if (i%3 !=0){
		continue;
	}
	
	if (i%5 !=0){
		continue;
	}
	
	if (i%7 !=0){
		continue;
	}
	
	System.out.println(v);
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5660424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存