Java基础(二)

选择结构与条件循环:

(一):选择结构

if语句的使用

1:单分支

if (条件) {
   语句组 
}

说明:如果语句组只是一条语句,那么花括号是可以省略的。条件成立,就执行语句组,否则啥也不做。
2:双分支

if (条件) {
   语句组1
} else {
   语句组2
}

说明:语句组1与语句组2,根据条件成立与否,只有其中一个会被执行。
3:多分支
(1):并列式多分支

if (条件1) {
    语句组1
}
if (条件2) {
    语句组2
}
……
if (条件n) {
    语句组n
}

(2):嵌套式多分支

if (条件) {
    if (条件1) {
       语句组1
    } else {
       ……
    }
} else {
    if (条件2) {
       语句组2
    } else {
       ……
    }
}

(3):延拓式多分支

if (条件1) {
    语句组1
} else if (条件2) {
    语句组2
} 
……
} else if (条件n) {
    语句组n
} else {
    语句组n+1
}
switch语句的使用
switch (测试表达式) {
    case1:
        语句组1
        break;
    case2:
        语句组2
        break;
     ……
    case 值n:
        语句组n
        break;
    default:
        语句组n+1
}

说明:(1):开关式多分支结构里的测试表达式,类型可以是整数、字符、甚至可以是字符串。
(2):case 语句可以不包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句或到达该switch语句末尾。
(3):switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

(二):循环结构

1:while循环结构
初始条件
while (循环条件) {
     语句块
     break|continue;
     更新条件
}

说明:首先判断循环条件是真还是假,如果是真的,执行循环体,然后再次判断循环条件。如果是真的,继续循环,直到循环条件变成假的。有一种特殊情况:如果第一次判断循环条件就不成立,那么一次循环也不执行。

2:do...while循环结构
初始条件
do {
     语句块
     break|continue;
     更新条件
} while (循环条件);

说明:首先执行一次循环,然后判断循环条件,如果为真,继续循环,直到条件为假时结束循环。属于先上车后买票,无论如何都会执行一次循环。

3:for循环结构
for(初始化表达式; 循环条件; 操作表达式){
    执行语句
    ...
    break | continue
    ...
}
4:循环嵌套:

以for循环嵌套为例

for(初始化表达式; 循环条件; 操作表达式) {
    ...
    for(初始化表达式; 循环条件; 操作表达式) {
        执行语句
        ...
    }
    ...
}

说明:外层循环每执行一次;内层循环便会开始执行,直到不满足内层循环条件,才执行下一次外层循环
eg:九九乘法表

package net.algchallenge;

public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "x" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }
    }
}

说明:在双层嵌套循环中,外层循环变量和内层循环变量多数使用i和j表示
eg:打印实心和空心钻石
链接:https://blog.csdn.net/yeyu_xing/article/details/105794520

(三):break关键字和continue关键字的使用

break关键字的使用

使用场景:在switch条件语句和循环结构语句中都可以使用break语句。

功能:(1):当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构;当它出现在循环结构语句中时,作用是跳出当前循环结构语句,执行后面的代码。(2):对于双重循环,如果内循环里有break语句,那么其作用仅仅是跳出内循环。如果想跳出外循环,那么需要用到标签。

eg:下面以打印九九表的案例进行说明。

package net.algchallenge;

public class TestBreak {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "×" + i + "=" + (i * j) + "\t");
                if (j >= 3) {
                    break;
                }
            }
            System.out.println();
        }
    }
}

结果:
在这里插入图片描述
说明:首先break语句用在内层循环,并设置了一个条件,当j >= 3时跳出当前的循环即内层循环,所以最后显示结果为每一层最多只打印了3个式子

eg:使用break关键字跳出多重循环

package net.algchallenge;

public class TestBreak2 {
    public static void main(String[] args) {
        ok:
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "×" + i + "=" + (i * j) + "\t");
                if (j >= 3) {
                    break ok;
                }
            }
            System.out.println();
        }
    }
}

结果:
在这里插入图片描述
说明:将外层循环标记为ok,并在内层循环中设置if语句,如果j >= 3时即刻跳出多重循环

continue关键字的使用
package net.algchallenge;

public class TestContinue {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                continue;
            }
            sum += i;
        }
        System.out.println("1 + 3 + 5 + ... + 99 = " + sum);
    }
}

结果:
在这里插入图片描述
说明:for语句中设置了if语句,如果i % 2 == 0即i为偶数,触发continue关键字,后面的代码不执行,则直接进行下一次循环,所以最后sum累加的数字便是1-100之间的奇数

使用continue关键字对多重循环实现跳转与break关键字实现跳转异曲同工,在此不做列举

数组:

(一):一维数组

1:数组的定义:
数组类型[] 数组名 = new 数组类型[数组长度];   
数组类型[] 数组名 = new 数组类型[]{数组元素0, 数组元素1, ...};  
数组类型[] 数组名 = {数组元素0, 数组元素1, ...}; 

注:数组的下标是从0开始的

2:数组的赋值或修改数组元素已有值
数组名[下标] =;

注:没有赋值的数组元素会有默认值,其默认值如下:

数据类型默认初始值
byte,short,int,long0
float,double0.0
char\u0000
booleanfalse
引用数据类型null,表示变量不引用任何对象
3:特殊的Object数组
说明:一般的数组只能存储相同类型的元素,但Object类作为始祖类,能够表示除基本数据类型的所有类,但是基本数据类型又拥有其对应的封装类,所以Object数组可以间接的存储所有数据类型

eg:Object数组的使用

package net.Test;

class Cat {
}

public class ObjectArray {
    public static void main(String[] args) {
        Object[] arr = {1, 0.0, 'a', false, "Hello", new Cat()};
        for (Object i : arr) {
            System.out.println(i.getClass().toString());
        }
    }
}

结果:
在这里插入图片描述

4:增强型for循环
for(声明语句 : 表达式){
   //代码句子
}

eg:

package net.Test;

public class ForEach {
    public static void main(String[] args) {
        int[] values = {1, 2, 3, 4, 5};
        for (int value : values) {
            System.out.println(value);
        }
    }
}

结果:
在这里插入图片描述

5:判断数组中是否包含某个元素的方法
链接: https://blog.csdn.net/yeyu_xing/article/details/106422246

(二):二维数组

1:数组的定义:
类型[][] xx = new 类型[行数][列数];
2:数组的赋值或修改数组元素已有值
数组名[下标][下标] =;

注:行下标和列下标都是从0开始

3:获取不规则二维数组的元素个数
eg:
package net.Test;

public class CountArrElement {
    public static void main(String[] args) {
        int[][] arr = {{1, 2}, {1, 2, 3}, {1, 2, 3, 4}, {1}};
        //第一种方法:
        int sum1 = 0;
        for (int i = 0; i <= arr.length - 1;i++){
            for(int j = 0; j <= arr[i].length - 1; j++){
                sum1++;
            }
        }
        System.out.println(sum1);

        //第二种方法:
        int sum2 = 0;
        for (int i = 0; i <= arr.length - 1;i++){
            sum2 += arr[i].length;
        }
        System.out.println(sum2);
    }
}

结果:
在这里插入图片描述
注:用这之中的第一个方法也可以统计二维数组中是否存在某个元素

4:判断二维数组中是否存在某个数组
package net.algchallenge;

import java.util.Arrays;

public class TDArrQuery {
    public static void main(String[] args) {
        Object[][] arr = new Object[10][];//定义10行的二维数组
        Object[] arr1 = {1, 2, 3};
        Object[] arr2 = {1, 0.0, 'a', false};
        //为arr数组赋值:
        arr[0] = arr1;
        arr[1] = arr2;
        Object[] searchedArr = {1, 0.0, 'a', false};
        boolean ifContain = false;
        for (int i = 0 ;i < arr.length;i++){
            if (Arrays.equals(arr[i],searchedArr)){
                ifContain = true;
                break;
            }
        }
        System.out.println(ifContain);
    }
}

结果:
在这里插入图片描述

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值