您的位置:首页 > 房产 > 家装 > 简易东莞网站制作公司_无锡网站建设公司地址_宁波网站优化_广州今天刚刚发生的重大新闻

简易东莞网站制作公司_无锡网站建设公司地址_宁波网站优化_广州今天刚刚发生的重大新闻

2025/2/27 2:34:25 来源:https://blog.csdn.net/2401_86272648/article/details/143581321  浏览:    关键词:简易东莞网站制作公司_无锡网站建设公司地址_宁波网站优化_广州今天刚刚发生的重大新闻
简易东莞网站制作公司_无锡网站建设公司地址_宁波网站优化_广州今天刚刚发生的重大新闻

目录

一、数组的定义和初始化

1. 什么是数组

2. 数组的定义

3. 数组的初始化

4. 操作数组的工具包

二、数组的使用

三、引用类型

1. JVM内存分布

2. 引用变量

3. 默认值 null

四、二维数组

1. 二维数组的定义和初始化

2. 不规则的二维数组


一、数组的定义和初始化

1. 什么是数组

        数组就是同一类型、所占内存空间连续的数据的集合。

2. 数组的定义

int[] array = new int[10]; // 整型数组

3. 数组的初始化

        动态初始化:指定元素个数。(可分两步)

int[] array = new int[3];// 分两步
int[] array;
array = new int[];

        静态初始化:根据初始化的内容确定元素个数。

int[] array = new int[]{1, 2, 3}; // 形式1// 分两步
int[] array;
array = new int[]{1, 2, 3};int[] array = {1, 2, 3}; // 形式2// 不可分两步
int[] array;        ×
array = {1, 2, 3};  ×

        注意,静态初始化可以省略掉 new int[]。省略的静态初始化不可分两步

未初始化的数组的元素默认值
类型默认值
byte0
short0
int0
long0
float0.0f
double0.0
char/u0000
booleanfalse
引用类型null

4. 操作数组的工具包

        Arrays,比如:

Arrays.toString(array) :将数组转字符串。

Arrays.binarySearch(array, value) : 二分查找。

Arrays.copyOf(array, length) : 拷贝指定长度(从头开始),大于被拷贝数组长度就扩容为元素类型对应的默认值。

System.arraycopy 看不到源码,是用 C/C++ 写的系统底层代码,效率高。 

Arrays.copyOfRange(array, start, end) : 拷贝指定范围[start, end)。

二、数组的使用

        for-each,更方便遍历数组的语法形式:

int[] array = new int[]{1, 2, 3};for(int x: array){System.out.println(x);
}

三、引用类型

        数组属于引用类型。

1. JVM内存分布

        为了方便管理程序运行时的数据(使用时间长短不一),内存分区。这里主要讲本地方法栈(Native Method Stack)、虚拟机栈(JVM Stack)和堆(Heap)。

本地方法栈:JVM 的底层代码由 C/C++ 实现,这些方法称为本地方法,在本地方法中的局部变量存放在本地方法栈。

虚拟机栈java 程序中方法的局部变量存放在虚拟机栈,局部变量会随方法的结束而被回收内存。

:创建的对象都存放在堆区,只有对象对应的引用变量被回收,对象的内存才会被回收。否则,程序结束才回收。

2. 引用变量

        在方法中,基本数据类型变量、引用变量存放在虚拟机栈中,只不过,基本数据类型变量存放的内容是数据本身;而引用变量的内容是对象的地址。对象存放在堆中。

示例代码:

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

数据在内存中的存储图示:

        所以将引用变量作为实参传给方法,传的是对象的地址,能通过形参修改实参指向的对象

3. 默认值 null

        引用变量未初始化,默认值为 null。C 语言中 NULL表示内存中的 0 地址(无效的内存地址),而 Java 中 null 表示空引用,都不可读写

四、二维数组

1. 二维数组的定义和初始化

// 动态
int[][] arr = new int[2][3];
// 静态
int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}};
int[][] arr = {{1, 2, 3}, {4, 5, 6}}; // 省略版静态

2. 不规则的二维数组

        C语言中的二维数组可省略行,不可省略列。Java相反,可省略列,不可省略行。二维数组实际上就是元素为一维数组的一维数组。

        示例代码:

int[][] arr = new int[2][]; // 不可省略行
arr[0] = new int[]{1, 2, 3};
arr[1] = new int[]{4, 5};

        在内存中的图示:引用变量array存的二维数组对象的地址,array[0]、array[1]也是引用变量,存的一维数组对象的地址。

遍历行:array.length
遍历第一行的列:array[0].length

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com