大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
1 一维数组初始化
public class ArrayDemo1 {
public static void main(String[] args) {
// 格式一(动态初始化)
int[] arr1 = new int[3]; // 数组的长度(这里为3)必须指定
// 格式二(静态初始化)
int[] arr2 = new int[]{
1, 2, 3}; // 这里数组长度不能指定,花括号里面的元素个数就是数组长度
// 或者按照下面的简写形式
int[] arr3 = {
1, 2, 3}; // 格式二的简写形式
}
}
内存图分析略。
2 二维数组初始化
public class ArrayDemo2 {
public static void main(String[] args) {
// 格式一(动态初始化)
/*int[][] arr = new int[3][2]; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // [I@4554617c System.out.println(arr[1]); // [I@74a14482 System.out.println(arr[2]); // [I@1540e19d System.out.println(arr[1][0]); // 0 System.out.println(arr[2][1]); // 0 System.out.println("------------------------"); arr[1][0] = 3; arr[2][1] = 4; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // [I@4554617c System.out.println(arr[1]); // [I@74a14482 System.out.println(arr[2]); // [I@1540e19d System.out.println(arr[1][0]); // 3 System.out.println(arr[2][1]); // 4*/
// 格式二(动态初始化)
/*int[][] arr = new int[3][]; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // null System.out.println(arr[1]); // null System.out.println(arr[2]); // null // 打印arr相同,都是地址;但是对于arr[0] arr[1] arr[2]结果都是null,因为列的维度没有指定,不知道如何分配内存。 // System.out.println(arr[0][0]); // NullPointerException System.out.println("------------------------"); // arr[1] = {1, 2, 3}; // 报错 arr[1] = new int[]{1, 2, 3}; arr[2] = new int[]{10, 20}; System.out.println(arr[0]); // null System.out.println(arr[1]); // [I@4554617c System.out.println(arr[2]); // [I@74a14482 System.out.println(arr[1][0]); // 1 System.out.println(arr[2][1]); // 20 // 总结:格式二需要new两次,并且Java中二维数组每行元素的个数可以不相同(和C/C++不同)。*/
// 格式三(静态初始化)
// int[][] arr = new int[][]{
{1, 2, 3}, {4, 5}, {6}}; // 此时行、列维度都不能指定
// int[][] arr = new int[2][]{
{1, 2, 3}, {4, 5}}; // 报错
// int[][] arr = new int[][3]{
{1, 2, 3}, {4, 5}}; // 报错
int[][] arr = {
{
1, 2, 3}, {
4, 5}, {
6}}; // 格式三的简化形式
System.out.println(arr); // [[I@1b6d3586
System.out.println(arr[0]); // [I@4554617c
System.out.println(arr[1]); // [I@74a14482
System.out.println(arr[2]); // [I@1540e19d
System.out.println(arr[1][0]); // 4
// System.out.println(arr[2][1]); // ArrayIndexOutOfBoundsException
}
}
格式一内存图分析:
格式二内存图分析:
格式三内存图分析:
总结:数组初始化分为静态初始化和动态初始化,一维数组和二维数组的静态初始化类似;对于动态初始化,一维数组只有一种形式,且必须指定数组的长度,二维数组有两种形式,且必须指定数组的行,列可以不用指定(这种情况要new两次)。
结束语:如果本篇博客对您有帮助,请点赞、收藏或关注,您的鼓励是博主进步的动力,感谢支持,共同进步。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184301.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...