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 }