注:这是自己在学习Java的过程中做的一些简要学习笔记和自己觉得容易错和需要记忆的一些内容
1.下为数组中的每个元素赋予其数据类型的默认值:
byte/short/int/long 0
float 0.0f
double 0.0d
char '\u0000'(十六进制)
boolean false
2.对于Java类的程序入口方法main(String[] args),如果运行时这个类没有输入参数,那么main()方法的参数args并不是null, 而是一个长度为0的数组。
解释:public static void main(String[] args) {
System.out.println(args.length); //打印0
}
3.数组对象创建后,它的长度是固定的。数组对象的长度是无法改变的,但是数组变量可以改变所引用的数组对象。所有Java数组都有一个length属性,表示数组的长度. 该属性只能读取,但是不能修改。
解释:public static void main(String[] args) {
int[] x = {1,2,3};
int[] y = x;
x = new int[] {4,5,6,7};
}
用变量理解,相当于x先后定义赋值了两次;用数组理解,相当于令x指向两个不同长度的数组。
4.一个数组的下标从0开始,数组通过数组的对象引用变量的下标访问数组。
超出了数组的边界,简称数组越界,在运行时会抛出:ArrayIndexOutOfBoundsException。
在Java中,也有foreach循环,叫做增强for循环,它是借鉴了C#语言来的。它的优势是自动开始,遍历数组或集合中的每一个元 素,存放到前面的变量里面。当所有元素遍历完成,则循环自动结束,所以不需要考虑数组越界的问题。
增强for循环遍历出来的数据与数组的元素无关了,也可以说这个变量是只读的。
解释:
int [] arr = {30,50,60,70,80};
//把arr数组中的元素一个个取出来存放在变量a中。
for (int a : arr) {
a += 5; //测试更改变量a的值,对数组中的值有没有影响
System.out.print(a+" ");
}
System.out.println("\n===================");
//遍历数组中的每一个数据
for (int i : arr) {
System.out.print(i+" ");
}
-----------------
输出结果:
35 55 65 75 85
===================
30 50 60 70 80
5.数组数据的存储原理:
数据类型分为:
值类型:存取数据的速度快,但费空间;
引用类型:存取数据的速度慢,但省空间。
数组是引用数据类型,它所存储数据的位置在堆空间。
int []arrays ={10,20}; (引用类型)
int a = 5; (值类型)
1 栈空间: 值类数据类型 2 堆空间: 引用数据类型
arrays 0x 2365aa 10
a 5 20
3 代码段 4 常量池