1.一维数组的内存解析
左边栈,右边堆。 arr 数组在堆里开辟相应空间,存储元素,并给出一个首元素地址0x34ab
赋给栈区的arr,栈里的arr,通过首字母地址找到堆里的数组元素。
arr1数组先前的 地址为0x12ab 在最下面重新定义后,发生覆盖,首字母地址出现更改,指向一个数组长度为3的空数组。
package com.yiweishuzu.com;
/*
-
一、数组概述:
-
1.数组的理解:数组(Array),十多个相同类型数据按一定的顺序排列的集合,碧昂使用同一个名字命名。
-
并通过编号的方式对这些数据进行统一管理。
-
2.数组相关的概念:
-
数组名
-
元素
-
角标、下标、索引
-
数组的长度:元素的个数
-
3.数组的特点:数组是有序排列的
-
数组是有序排列的
-
数组属于引用数据类型的变量,既可以是基本数据类型,也可以是引用数据类型
-
创建数组对象会在内存中开辟一整块连续的空间
-
数组的长度一旦确定,就不能修改。
-
4.数组的分类:
-
维数:一维数组,二位数组
-
元素类型:基本数据类型的数组、引用数据类型的数组。
*/
public class ArrayTest {
public static void main(String[] args) {
//正确定义数组的方式:
int[] arr1 = new int[5];//5数组的长度//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行 int[] arr2 = new int[] {1,2,3,4,5}; //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行 String[] arr3 = new String[5]; //2.如何获取数组指定位置的元素:通过角标的方式调用 //数组的角标从0开始,到数组的长度-1结束 arr3[0] = "哈哈"; arr3[1] = "呵呵"; arr3[2] = "嘻嘻"; arr3[3] = "嘿嘿"; arr3[4] = "嘎嘎"; //3.如何获取数组的长度:属性:. length System.out.println(arr3.length); //4.如何遍历数组: for (int i = 0; i < arr3.length; i++) { System.out.print(arr3[i] + " "); } System.out.println("*************************"); //5.数组的默认初始化值为:整型 0; 浮点型 0.00;引用类型 null; //char型 0或‘\u0000’,而非‘0’,类似于空格;boolean型:false,true; char[] arr4 = new char[5]; for (int i = 0; i < arr4.length; i++) { System.out.println("***" + arr4[i] + "***"); } System.out.println("*************************"); boolean[] arr5 = new boolean[] {false,true}; System.out.println(arr5[0]); System.out.println("*************************"); String[] arr6 = new String[6]; System.out.println(arr6[2]);
}
}