数组
如何定义一个数组
动态定义:
数据类型[] 数组名 = new 数据类型 [元素个数]
例如: int[] array = new int [10];
占用的内存空间 array 占了8个字节(引用数据类型全是八个字节),
数据占用了 10 * 4(int类型)个字节,一共48个字节。
静态定义:
数据类型[] 数组名 = {1 ,2 ,3 ,4};
过程:
在内存中新建了一个连续的内存空间,里面的能够保存的是10
个 int 类型的数据,这个内存的空间名字叫 array
int : 数据类型,告诉我们这个数据空间里面保存的数据是什么类型的,
这里表示的是 int 类型。
数组的下标(index)由0开始。
数组定义的左边:
[] : 1、这里定义的数据是一个数组类型
2、array是一个【应用数据类型】
array: 数组名,就是一个标识符,按照标识符的规则来。
右边:
new:创建【对象】的关键字
int:表示这个空间里面只能保存int类型的数据
[10]:标识这个数组的【元素个数】为10,能够保存的最大数据。
对数组的赋值:
1、用循环赋值 for(int i = 0; i < array.length; i++){
array[i] = i;
}
2、从键盘上获取对数组的赋值
/*
stdin : 标准输入设备(键盘)
stdout : 标准输出设备(显示屏)
*/
int[] arr = new int [10];
Scanner sc = new Scanner(System.in);
//sc : 引用类型的变量
for(int i = 0 ;i < array.length ;i++){
arr[i] = sc.nextInt();
}
数组的内存分析【难点 抽象】:
栈区:一般都是普通变量 存放数据类型 8 个字节。(一个字节 八个bit)
= : 将数组在堆区首地址 赋值 (由堆区到栈区只能说赋值)给栈区的引用变量
地址用十六进制表示。
堆区:一般存放 new 后自定义的数据,属于数组空间。
数组名:属于一个【引用】数据类型,里面保存的都是【地址】
arr1 = arr2; //把引用数据类型arr2 里面保存的地址赋值给引用数据类型 arr1
结果: 他们两都指向同一个数组。