JavaSE-4.1【IDEA;数组的定义、动态初始化、内存分配】
1 package day4; 2 3 /** 4 * @author : haifei 5 * 6 * IDEA、数组定义、动态初始化、内存分配 7 * 8 */ 9 10 public class Demo1_0520 { 11 public static void main(String[] args) { 12 /* 13 IDEA快速生成语句: 14 main函数=psvm+回车 15 输出语句=sout+回车 16 IDEA快捷键: 17 Ctrl+/ 单行注释 18 选中代码Ctrl+Shift+/ 多行注释 19 Ctrl+Alt+L 格式化代码 20 Ctrl+Y 删除光标所在行 21 Ctrl+D 复制光标所在行的内容,插入光标位置下面 22 Alt+Shift+上下箭头移动当前代码行 23 */ 24 25 /* 26 数组通常存储同类型数据 27 28 数组定义方式 29 1、定义指定类型的数组:arr(推荐这种方式,可读性更好) 30 int[] arr; 31 double[] arr; 32 char[] arr; 33 34 2、定义指定类型的变量:arr[] 35 int arr[]; 36 double arr[]; 37 char arr[]; 38 */ 39 40 /* 41 数组初始化 42 1、动态初始化 43 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值 44 2、静态初始化 45 */ 46 47 //数组初始化之动态初始化 48 int[] arr = new int[5]; 49 /* 50 等号左边: 51 int:数组的数据类型 52 []:代表这是一个数组 53 arr:代表数组的名称 54 等号右边: 55 new:为数组开辟内存空间 56 int:数组的数据类型 57 []:代表这是一个数组 58 5:代表数组的长度 59 */ 60 61 //数组变量访问方式:数组名,例如arr 62 //数组内部所保存数据的访问方式:数组名[索引],例如arr[0] 63 System.out.println(arr); // [I@4554617c <--- 数组所在地址 64 System.out.println(arr[0]); // 未赋值时,系统给出默认初始值0 65 System.out.println(arr[1]); 66 System.out.println(arr[2]); 67 68 /* 69 内存分配 70 1、有关 71 堆内存:存储对象或者数组,new来创建的,都存储在堆内存。 72 方法栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 73 2、无关 74 寄存器:给CPU使用,和我们开发无关。 75 本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关。 76 方法区:存储可以运行的class文件。 77 78 int[] arr = new int[5]; 79 1、栈内存: 80 存储局部变量,使用完立即消失 <--- int[] arr 81 2、堆内存: 82 存储new出来的内容(对象、实体),每一个new出来的内容都有一个地址值,使用完会在垃圾回收器空闲时被回收 83 数组初始化,默认值: 84 整型-0 85 浮点型-0.0 86 布尔型-false 87 字符型-空字符'' 88 string等引用类型-null 89 <--- new int[5] 90 */ 91 92 arr[0] = 100; 93 arr[2] = 200; 94 System.out.println(arr[0]); 95 System.out.println(arr[1]); 96 System.out.println(arr[2]); 97 98 //多个数组指向相同内存 99 int[] arr1 = new int[1]; 100 arr1[0] = 100; 101 System.out.println(arr1); 102 System.out.println(arr1[0]); //100 103 int[] arr2 = arr1; 104 arr2[0] = 200; 105 System.out.println(arr1); 106 System.out.println(arr1[0]); //200 107 System.out.println(arr2); 108 System.out.println(arr2[0]); //200 109 } 110 }