前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java的学习笔记(05)数组

Java的学习笔记(05)数组

作者头像
卢衍飞
发布2023-02-13 21:25:44
1730
发布2023-02-13 21:25:44
举报
文章被收录于专栏:技术分享交流技术分享交流

数组01:什么是数组 数组是同类型数据的集合

数组的下标从0开始

数组02:数组的声明和创建 首先必须声明数组变量,才能在程序中使用数组。

dataType[] arrayRefVar; //首选方法 或 dataType arrayReVar[]; java语言使用new操作符来创建数组,语法如下:

dataType[] arrayReVar = new dataType[arraySize]; package array;

public class ArrayDemo01 {

代码语言:javascript
复制
public static void main(String[] args) {
    //变量类型  变量名字 = 变量的值;
    //数组类型

    int[] nums; //首选方法√
    int nums2[];  //不是首选方法

    //new一个数组
    nums = new int[10];  //长度为10的int类型数组;或者说这个数组可以存放10个int类型数据

}

} package array;

public class ArrayDemo01 {

代码语言:javascript
复制
public static void main(String[] args) {
    //变量类型  变量名字 = 变量的值;
    //数组类型

    int[] nums; //首选方法√   声明一个数组

    nums = new int[10];  //创建一个数组
    nums[0]= 1;    //给数组元素中赋值
    nums[1]= 2;
    nums[2]= 3;
    nums[3]= 4;
    nums[4]= 5;
    nums[5]= 6;
    nums[6]= 7;
    nums[7]= 8;
    nums[8]= 9;
    nums[9]= 10;

    //计算所有元素的和
    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
        sum = sum + nums[i];
    }
    System.out.println(sum);
}

} 经典二合一

// int[] nums; //首选方法√ 声明一个数组 // nums = new int[10]; //创建一个数组

代码语言:javascript
复制
      int[] nums = new int[10];    //经典二合一

获取数组的长度 arraty.length 数组名.length

数组03:三种初始化及内存分析 静态初始化

动态初始化

数组的默认初始化

package array;

public class ArrayDemo02 {

代码语言:javascript
复制
public static void main(String[] args) {
    //静态初始化: 创建+赋值
    int[]a = {1,2,3,4,5,6,7,8,9};
    Man[] men = {new Man(1,1),new Man(2,2)};

    //动态初始化:包含默认初始化
    int[]b = new int[10];

}

} 数组04:下标越界及小结 数组一旦被创建,长度大小不可改变。

数组元素必须是相同类型,不允许出现混合类型。

数组元素可以是任何数据类型,包括基本类型和引用类型。

数组属于引用类型,数组也可以看作是对象,数组的每个元素相当于该对象的成员变量。

数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的

数组05:数组的使用 package array;

public class ArrayDemo03 {

代码语言:javascript
复制
public static void main(String[] args) {
    int[] arrsys = {1,2,3,4,5};
    for (int i = 0; i < args.length ; i++) {
        System.out.println(arrsys[i]);
    }
    int sum = 0;
    for (int i = 0; i < arrsys.length; i++) {
        sum +=arrsys[i];
    }
    System.out.println("sum=" + sum);

    int max =arrsys[0];
    for (int i = 0; i < arrsys.length; i++) {
        if (arrsys[i]>max){
            max=arrsys[i];
        }
    }
    System.out.println("max=" + max);
}

} package array;

public class ArrayDemo04 {

代码语言:javascript
复制
public static void main(String[] args) {
    int[] arrays = {1,2,3,4,5};
    //直接for循环,无下标
    for (int array : arrays){
        System.out.println(array);
    }

    printArrsy(arrays);
    System.out.println( );
    System.out.println("========================");
    int[] reverse = reverse(arrays);
    printArrsy(reverse);
}

//打印数组元素
public static void printArrsy(int[] arrays){
    for(int i = 0; i<arrays.length;i++){
        System.out.print(arrays[i]+" ");
    }
}

//反转数组
public static int[] reverse(int[] arrays){
    int[] result = new int[arrays.length];        
    //反转操作
    for (int i = 0,j = result.length-1; i < arrays.length; i++,j--) {
        result[j] = arrays[i];
    }

    return result;
}

} 数组06:二维数组、多维数组 package array;

public class ArratDemo05 {

代码语言:javascript
复制
public static void main(String[] args) {
    int[][] array = {{1,2},{2,3},{3,4},{4,5}};

    /**
     * array[0][0] = 1    array[0][1] = 2   {1,2}
     * array[1][0] = 2    array[1][1] = 3   {2,3}
     */

    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            System.out.println(array[i][j]);
        }
    }
}

} 数组07:Arrays类讲解 数组的工具类 java.util.Arrays

package array;

import java.lang.reflect.Array; import java.util.Arrays;

public class ArrayDemo06 {

代码语言:javascript
复制
public static void main(String[] args) {
    int[] array = {1,2,36565,895645,5648754,87,68,12,3};
    System.out.println(Arrays.toString(array));     //打印数组全部内容
    Arrays.sort(array);                            //数组排序,从小到大
    System.out.println(Arrays.toString(array));

    Arrays.fill(array,0);
    System.out.println(Arrays.toString(array));
}

} 查看JDK帮助文档,知道具体方法。

给数组赋值 fill方法 对数组排序 sort方法 比较数组 equals方法 查找数组元素 binarySearch方法(能对排序好的数组进行二分查找) 数组08:冒泡排序 八大排序算法之一

package array;

import java.util.Arrays;

public class ArrayDemo07 {

代码语言:javascript
复制
public static void main(String[] args) {
    //冒泡排序
    int[] a = {1,3,6,2,9,8,0};
    int[] sort = sort(a);
    System.out.println(Arrays.toString(sort));

}

public static int[] sort(int[] array){
    int temp = 0;
    for (int i = 0; i < array.length-1; i++) {

        boolean flag = false;
        for (int j = 0; j < array.length-1-i; j++) {
            if (array[j+1] < array[j]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                flag = true;
            }
        }
        if (flag==false){
            break;
        }
    }
    return array;
}

} 数组09:稀疏数组 数据结构的内容,减少存储空间的使用

for .each循环,遍历数组的简单写法。

for(int[] ints : 数组名){

} package array;

public class ArrayDemo08 {

代码语言:javascript
复制
public static void main(String[] args) {
    int[][] array1 = new int[11][11];
    array1[1][2]=1;
    array1[2][3]=2;
    System.out.println("输出原始数组");

    for (int[] ints :array1){
        for (int anInt : ints) {
            System.out.print(anInt+"\t");
        }
        System.out.println();
    }

    //转换为稀疏数组
    /**
     *
     */
    //获取有效值的个数
    int sum = 0;
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 11; j++) {
            if (array1[i][j]!=0){
                sum++;
            }
        }
    }

    //创建一个稀疏数组
    int[][] array2 = new int[sum+1][3];
    array2[0][0] = 11;
    array2[0][1] = 11;
    array2[0][2] = sum;

    //遍历二维数组,将非0的值,存放在稀疏数组中
    int count = 0;
    for (int i = 0; i < array1.length; i++) {
        for (int j = 0; j < array1[i].length; j++) {
            if (array1[i][j]!=0){
                count++;
                array2[count][0] = i;
                array2[count][1] = j;
                array2[count][2] = array1[i][j];
            }
        }

    }
    System.out.println("==============================");
    System.out.println("输出稀疏数组");
    for (int i = 0; i < array2.length; i++) {
        System.out.println(array2[i][0]+"\t"+
                           array2[i][1]+"\t"+
                           array2[i][2]+"\t"
                            );
    }

    System.out.println("==============================");
    //读取稀疏数组
    int[][] array3 = new int [array2[0][0]][array2[0][1]];

    for (int i = 1; i < array2.length; i++) {
        array3[array2[i][0]][array2[i][1]] = array2[i][2];

    }
    System.out.println("输出还原数组");
    for (int[] ints :array3){
        for (int anInt : ints) {
            System.out.print(anInt+"\t");
        }
        System.out.println();
    }
}

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023 年 01 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档