JAVA道路day05

配列

配列定義

//数组
/*
1.申明一个数组,在栈中创建
2.创建一个数组,在堆中创建,需要给定数组的长度
3.给数组赋值
 */
/*数组的特点
1.其长度是确定的。数组被创建。大小就不可以改变
2.其元素必须是相同类型,不能出现混合类型
3.数组中的元素可以是任何数据类型,包括基本类型和引用类型
4.数组变量属引用类型,数组也可以看成是对象,数组中每个元素相当于该对象的成员变量。
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身在堆中
 */
public class Demo01 {
    public static void main(String[] args) {
        //变量类型[] 变量名字=值;
      int[] num1;
      int num2[];//和上面的效果相同
        num1=new int[10];//定义可以保存十个数字
        num1=new int[]{1,2,3,4,4,4,4,4,4};
        //改变num1的长度而不改变它的元素
        num2=new int[2*num1.length];
        System.arraycopy(num1,0,num2,0,num1.length);
        num1=num2;
        System.out.println("num1的长度是:"+num1.length);
        for (int a:num1){
            System.out.print(a+" ");
        }

    }
}

ここに画像を挿入説明

配列の初期化

//数组初始化
public class Demo02 {
    public static void main(String[] args) {
        //静态初始化 创建数组+赋值
        int[] a={1,2,3,4};

        //动态初始化 创建数组,后续赋值
        int[] b=new int[10];//申明+创建
        b[0]=1;
        b[1]=2;
    }
}

の配列を使用して

//数组使用
public class Demo03 {
    public static void main(String[] args) {
        int[] nums={1,2,3,4,5,6,99};

        //打印所有的数组元素,for-each循环
        for (int a:nums){
            System.out.print(a+" ");
        }
        System.out.println("\n====================");
        //数组作方法入参
        printArray(nums);
        System.out.println("\n====================");
        //数组作返回值
        int[] test=reserve(nums);
        printArray(test);
    }
    public static  void printArray(int[] c) {//打印数组
        for (int b:c){
            System.out.print(b+" ");
        }
    }
    public static  int[] reserve(int[] d){//反转数组
        int[] result=new int[d.length];
        for (int i=0,j=d.length-1;i<d.length;i++,j--){
            result[i]=d[j];
        }
        return result;
    }
}

多次元配列

//多维数组 相当于数组里面保存了数组
public class Demo04 {
    public static void main(String[] args) {
        int [][] array={{0,1,2},{2,3},{4,5}};
        printArray(array[0]);
        printArray(array[1]);
        printArray(array[2]);
    }
    public static  void printArray(int[] c) {//打印数组
        for (int b:c){
            System.out.print(b+" ");
        }
    }
}

ここに画像を挿入説明

配列クラスの学習

import java.util.Arrays;

//Arrays类学习
public class Demo05 {
    public static void main(String[] args) {
        int[] a={1,4422,214,5352,1141,21,42};
        //打印数组元素 Arrays.toString
        System.out.println(Arrays.toString(a));
        //数组排序 Arrays.sort
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        //二分查找
        System.out.println(Arrays.binarySearch(a,214));
        //fill 用一个值填充所有的数
        Arrays.fill(a,88);
        System.out.println(Arrays.toString(a));
    }

}

バブルソート

import java.util.Arrays;

//冒泡排序
/*
1.两两比较遍历
2.效率低
 */
public class Demo06 {
    public static void main(String[] args) {
        int[] a={2,42,63,27,83,37,9};
        bobSort(a);
        System.out.println(Arrays.toString(a));

    }
    public static  void bobSort(int[] a){
        int test;
        for (int i=0;i<a.length;i++){
            for (int j=0;j<a.length-1;j++){
                if (a[j]>a[j+1]){test=a[j];a[j]=a[j+1];a[j+1]=test;}
            }
        }
    }
}

スパース配列

//稀疏数组 用以压缩空间
/*
核心思想为记录有数据位的坐标和总个数
 */
public class Demo07 {
    public static void main(String[] args) {
        int[][] array=new int[11][11];
        array[2][3]=23;
        array[4][6]=46;
        //打印原数组
        for (int[] a:array){
            System.out.println();
            for (int b:a){
                System.out.print(b+"\t");
            }
        }
        System.out.println();
        //计算出数组中有值的总个数
        int sum=0;
        for (int i=0;i<11;i++){
            for (int j=0;j<11;j++){
                if(array[i][j]!=0){
                    sum++;

                }
            }
        }
        System.out.println(sum);
        //定义保存数组
        int[][] array2=new int[sum+1][3];
        //第一行为 原数组的行,列和有值的个数
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;
        //找出数据的位置和值
        int x=1;
        for (int i=0;i<11;i++){
            for (int j=0;j<11;j++){
                if(array[i][j]!=0){
                    array2[x][0]=i;
                    array2[x][1]=j;
                    array2[x][2]=array[i][j];
                    x++;
                }
            }
        }
        for (int o[]:array2){
            for (int p:o){
                System.out.print(p+" ");
            }
            System.out.println();
        }

    }
}

ここに画像を挿入説明

公開された14元の記事 ウォンの賞賛0 ビュー209

おすすめ

転載: blog.csdn.net/YSJS99/article/details/104979721