Java循環及數組

一、循環

\quadJava的for,while循環與C/C++及其相似,不同之處在於Java提供了更強大的跳出循環的功能。在Java中,break不僅可以跳出當前循環,還可以跳出更外層指定循環層的循環,此時需要在break後加一個標籤,這個標籤用於標識一個外層循環。Java中的標籤就是一個緊跟英文冒號的標識符,且放在循環語句前。示例程序如下:

public static void main(String[] args)
{
    outer:
    for(int i = 0; i < 3; i++)
        for(int j = 0; j < 3; j++)
        {
            System.out.println("i的值爲:" + i + " j的值爲" + j);
            if(j==2) break outer;
        }
}

在這裏插入圖片描述

二、數組

\quadJava定義數組有兩種方式,以int型數組爲例,可以是int[] aint a[]兩種,一般用第一種。可以先聲明數組大小再賦值初始化,也可以不聲明大小直接初始化,示例程序如下:

public static void main(String[] args)
{
    int[] a = new int[10];  // 先聲明數組大小再賦值
    for(int i = 0; i < a.length; i++)
        a[i] = i*i;
    int[] b = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};  // 直接賦值
    for(int i = 0; i < a.length && i < b.length; i++)
        System.out.println(a[i] + " " + b[i]);
}

在這裏插入圖片描述
\quadJava提供了數組的foreach循環,語法格式如下:

for(type t: array)
{
    // t自動迭代訪問每個元素...
}

舉個例子:

public static void main(String[] args)
{
    int[] a = new int[10];
    for(int i = 0; i < a.length; i++)
        a[i] = i*i;
    for(int t: a)
        System.out.print(t+" ");
}

在這裏插入圖片描述
Note!!!foreach這種循環可以遍歷數組,但不能用於賦值操作。
\quad多維數組方式相似,以二維數組爲例,先用輔助函數arrInfo用於打印數組信息,接着在主函數中用直接賦值和先聲明大小再賦值兩種方式分別進行演示:

public class basicData {
    public static void arrInfo(int[][] a)
    {
        for(int i = 0; i < a.length; i++)
        {
            for(int j = 0; j < a[i].length; j++)
            {
                System.out.print(a[i][j]+ " ");
            }
            System.out.println();
        }
    }
    public static void main(String[] args)
    {
        int[][] a = {{1, 2}, {3, 4}};
        int[][] b = new int[2][2];
        arrInfo(a);
        for(int i = 0; i < b.length; i++)
            for(int j = 0; j < b[i].length; j++)
                b[i][j] = 1;
        arrInfo(b);
    }
}

在這裏插入圖片描述

三、Arrays類

\quadArrays類封裝了很多現成的操作數組的方法,包括二分查找、排序、賦值等等。下面以一個簡單的實例展示:

public static void main(String[] args) {
    int[] a = new int[]{1, 2, 3, 4, 5};

    // 二分查找,要求數組升序排列,搜索範圍是[0, a.length-1]
    int index = Arrays.binarySearch(a, 3);
    System.out.println(index); // index=2
    // 二分查找,要求數組升序排列,搜索範圍是[fromIndex, toIndex)
    int index2 = Arrays.binarySearch(a, 1, 4, 2);
    System.out.println(index2); // index2=1

    // 將一個數組中元素複製到另一個數組中去
    int[] b = Arrays.copyOf(a, a.length); // b1={1,2,3,4,5}
    // 將一個數組中範圍爲[from, to)的元素複製到另一個數組中去
    int[] b2 = Arrays.copyOfRange(a, 1, 4); // b2={2,3,4}

    // 判斷兩個數組是否相等
    boolean flag = Arrays.equals(a, b);
    System.out.println(flag);  // flag=true

    // 將數組元素全部賦值爲val
    Arrays.fill(a, 1);  // a={1,1,1,1,1}
    // 將數組元素從fromIndex到toIndex-1賦值爲val
    Arrays.fill(a, 1, 4, 2); // a={1,2,2,2,1}

    // 將數組排序
    int[] c = {3, 1, 2, 1, 5, 4};
    Arrays.sort(c);  // c={1,1,2,3,4,5}

    // 將數組轉化爲字符串,數組元素用','+' '方式隔開
    String str = Arrays.toString(c);
    System.out.println(str); // str=[1, 1, 2, 3, 4, 5]
}
發佈了222 篇原創文章 · 獲贊 99 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章