Java基础——判断与循环

一、流程控制语句

  1. 顺序结构

顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。

代码如下:

public class test07 {
    public static void main(String[] args) {
        System.out.println("努力做主人喜欢的事");
        System.out.println("大小姐驾到!统统闪开!");
        System.out.println("凛冬已至,故乡的梅花开了吗");
        System.out.println("心怀不惧,方能翱翔于天际");
    }
}

运行结果:

  1. 分支结构

  1. if语句

if语句的第一种格式:
if(关系表达式){
语句体;
}

执行流程:
1.首先计算关系表达式的值;
2.如果关系表达式的值为true就执行语句体;
3.如果关系表达式的值为false就不执行语句体;
4.继续执行后面的其他语句

if的注意点:
1.大括号的开头可以另起一行书写,但是建议写在第一行的末尾;
2.在语句体中,如果只有一句代码,大括号可以省略不写;
3.如果对一个布尔类型的变量进行判断,不要用==号,直接把变量写在小括号即可。

if语句的第二种格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}

执行流程:
1.首先计算关系表达式的值;
2.如果关系表达式的值为true就执行语句体1;
3.如果关系表达式的值为false就执行语句体2;
4.继续执行后面的其他语句。

if语句的第三种格式:
if(关系表达式){
语句体1;
}else if(关系表达式2){
语句体2;
}
....
else{
语句体n+1;
}

执行流程:
1.首先计算关系表达式1的值;
2.如果为true就执行语句体1;如果为false就计算关系表达式2的值;
3.如果为true就执行语句体2;如果为false就计算关系表达式3的值;
4. …………
5.如果所有关系表达式结果都为false,就执行语句体n+1。
  1. switch语句

语句格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
……
default:
语句体n+1;
break;
}

执行流程:
1.首先计算表达式的值;
2.依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束;
3.如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。

格式说明:
1.表达式:(将要匹配的值)取值为byte、short、int、char。
JDK5以后可以是枚举,JDK7以后可以是String。
2.case:后面跟的是要和表达式进行比较的值(被匹配的值)。
3.break:表示中断,结束的意思,用来结束switch语句。
4.default:表示所有情况都不匹配的时候,就执行该处的内容和if语句的else相似。
5.case后面的值只能是字面量,不能是变量。
6.case给出的值不允许重复。
  1. 循环结构

  1. for循环

格式:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}

执行流程:
1.执行初始化语句;
2.执行条件判断语句,看其结果是true还是false。
如果是false循环结束,如果是true执行循环语句;
3.执行条件控制语句;
4.回到2继续执行条件判断语句。

注:
1.求和的变量不能定义在循环的里面,因为变量只能在所属的大括号中有效;
2.如果我们把变量定义在循环的里面,那么当前变量只能在本次循环中有效。当第二次循环开始的时候,又会重新定义一个新的变量,因此在写累加求和的变量可以把变量定义在循环的外面。
  1. while循环

格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}

for和while的对比:

for循环

while循环

相同点

运行规则都是一样的

不同点

控制循环的变量,因为归属for循环的语法结构中,在foe循环结束后,就不能再次被访问到了

while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

知道循环次数或者循环范围为

不知道循环的次数和范围,只知道循环的结束条件

  1. do……while循环(先执行后判断)

格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,由于浮点数的精度问题,可能会出现无限循环小数。对于这种情况,可以使用BigDecimal类来处理。 BigDecimal类可以表示任意精度的十进制数,它可以处理大于64位的整数和小数。在使用BigDecimal类时,需要注意以下几点: 1. 使用BigDecimal类时,应该使用其构造方法来初始化BigDecimal对象,而不是使用double类型的值来初始化。 例如: ``` BigDecimal bd = new BigDecimal("0.1"); ``` 2. 在进行浮点数运算时,应该使用BigDecimal类提供的方法,而不是使用double类型的运算符。 例如: ``` BigDecimal a = new BigDecimal("0.1"); BigDecimal b = new BigDecimal("0.2"); BigDecimal c = a.add(b); ``` 3. 在比较两个BigDecimal对象的值时,应该使用compareTo()方法,而不是使用等于(==)或不等于(!=)运算符。 例如: ``` BigDecimal a = new BigDecimal("0.1"); BigDecimal b = new BigDecimal("0.2"); if (a.compareTo(b) < 0) { System.out.println("a < b"); } else if (a.compareTo(b) > 0) { System.out.println("a > b"); } else { System.out.println("a = b"); } ``` 关于java无限循环小数判定问题,可以通过以下代码来解决: ``` public static boolean isRepeatingDecimal(BigDecimal num) { BigDecimal[] arr = num.divideAndRemainder(BigDecimal.ONE); BigDecimal decimalPart = arr[1]; String decimalStr = decimalPart.toString().substring(2); // 去掉小数点和整数部分 if (decimalStr.length() < 2) { return false; // 小数部分长度小于2,不可能循环 } int halfLength = decimalStr.length() / 2; for (int i = 1; i <= halfLength; i++) { String str = decimalStr.substring(0, i); if (decimalStr.matches("^(" + str + ")+(.*)" + str + "$")) { return true; // 存在循环节 } } return false; // 不存在循环节 } ``` 该方法接收一个BigDecimal对象,判断其是否为无限循环小数,返回true或false。 以上是关于Java中处理无限循环小数的基础知识和方法介绍,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值