java中的数组

31次阅读

共计 1587 个字符,预计需要花费 4 分钟才能阅读完成。

概念

数组,就是容器,只能存放相同类型的数据;

数组的格式

数据类型[] 数组名 = new 数据类型 [数组的容量];

double[] scores = new double[100];
数组声明缩写
int[] arr={1,2,3,4};

数组中元素的存取

                int[] arr = new int[3];
                arr[0] = 1; // 给数组第一个元素赋值
        arr[1] = 2; // 给数组第二个元素赋值
        arr[2] = 3; // 给数组第三个元素赋值

        // 打印赋值结果
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

总结:数组元素的存放和取出,都是通过数组的索引实现的;

数组的遍历

class test_数组的遍历 {public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5, 6, 7};
            // 通过访问 length 属性获取数组的长度
        // 格式: 数组名.length
        System.out.println(array.length);
        // i 从 0 开始, 因为数组下标从 0 开始
        // 循环判断条件: i < 数组的长度
        // 循环变量增量: 每次循环结束索引值 +1: i++
        for(int i = 0; i < array.length; i++){System.out.println(array[i]);
                }
    }
}

java 的内存组成


堆:new 出的对象在堆上

java 栈:java 程序、线程运行数据、内存数据

每个方法都有自己的栈、运行时需要的数据存在自己的栈中

每个线程对立的是图中浅蓝色的部分(java 栈、本地方法栈、程序计数器)

堆和方法区是所有线程共享的

java 栈会对调用的每个方法生成一个栈帧

数组的内存图解

一维数组内存图解


二维数组内存图解

引用传递和按值传递

public class reference{public static void main( String[] args){int[] arr=new int[3];
        int[] array=arr;
        array[0]=2;
        System.out.println(arr[0]);//2 引用传递
        int a=10;
        int b=a;
        b=20;
        System.out.println(a);//10  值传递
    }
}

引用类型的变量进行传参,实际传递的是保存在变量中指向堆中空间的地址,这种传参情况叫做引用传递;

如果一个引用改变了空间中的值,对所有指向这个空间的引用都有影响;

基本类型的变量进行传参,实际传递的保存在变量中的常量值,这种情况叫做值传递;
如果改变一个变量的值,对其他的变量没有影响;

数组的特点

数组,是一个容器,可以存放相同类型的数据;

数组有容量大小,使用 length 属性可以获取,方法是:数组名.length;

数组一旦创建,容量大小就固定不变;

数组中的元素都有索引,对数组元素的操作就是通过索引实现的;

索引的特点是,从 0 开始,连续递增,最大值是数组容量减一;

什么时候使用数组?

1. 在数据量比较多,而且还是相同类型的;

2. 数据量是确定的,不确定,就不知道该创建多大的数组装;

3. 数据可以有顺序的,可以通过索引来操作的;

不满足以上条件,但是同样数据量比较大,该怎么办呢?使用集合;

二维数组

声明一个二维数组:使用符合 [][] 表示;

数据类型[][] 数组名 =new 数据类型二维数组的容量

int [] [] array = new int[3][2];

声明时可直接赋值

int [] [] array = new int[][]{{1,2},{3,4,5},null};

开源地址

开源项目地址:https://github.com/371854496/…

java 学习资料:https://github.com/371854496/…

各位觉得还阔以的话,点下 Star, 分享不易,thank you!

公众号 全战开花

获取更多技术干货

正文完
 0