Java的学习笔记(05)数组

简介: 数组01:什么是数组数组是同类型数据的集合数组的下标从0开始数组02:数组的声明和创建首先必须声明数组变量,才能在程序中使用数组。dataType[] arrayRefVar; //首选方法或dataType arrayReVar[];java语言使用new操作符来创建数组,语法如下:dataType[] arrayReVar = new dataType[arraySize];package array;public class ArrayDemo01 { public static void main(String[] args) {

数组01:什么是数组

数组是同类型数据的集合

数组的下标从0开始

数组02:数组的声明和创建

首先必须声明数组变量,才能在程序中使用数组。

dataType[] arrayRefVar;     //首选方法
dataType arrayReVar[];

java语言使用new操作符来创建数组,语法如下:

dataType[] arrayReVar = new dataType[arraySize];
package array;
public class ArrayDemo01 {
    public static void main(String[] args) {
        //变量类型  变量名字 = 变量的值;
        //数组类型
        int[] nums; //首选方法√
        int nums2[];  //不是首选方法
        //new一个数组
        nums = new int[10];  //长度为10的int类型数组;或者说这个数组可以存放10个int类型数据
    }
}


package array;
public class ArrayDemo01 {
    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];  //创建一个数组
          int[] nums = new int[10];    //经典二合一

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

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

静态初始化

动态初始化

数组的默认初始化

package array;
public class ArrayDemo02 {
    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 {
    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 {
    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 {
    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 {
    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帮助文档,知道具体方法。

  1. 给数组赋值 fill方法
  2. 对数组排序 sort方法
  3. 比较数组 equals方法
  4. 查找数组元素 binarySearch方法(能对排序好的数组进行二分查找)

数组08:冒泡排序

八大排序算法之一

package array;
import java.util.Arrays;
public class ArrayDemo07 {
    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 {
    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();
        }
    }
}
相关文章
|
6天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
13天前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
37 9
|
12天前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
14 3
|
17天前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
19 6
|
12天前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
19 1
|
14天前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
12 1
|
24天前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
1月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
6天前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
24 0
|
1月前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。