第二天Java基础下午(数组/内存图)
1.创建数组各种类型默认的值
1)整数数组(0)
2)浮点数组(0.0)
3)字符数组(\u0000)不可见;不是空
4)布尔类型(false)
5)引用类型(null)
2.Java内存5个部分
1.栈(Stack):存放的都是方法当中的局部变量。方法一定再栈当中运行,方法的参数和内部的变量都是局部变量,一旦超出作用域立即从栈中消失。
2.堆(Heap):new出来的东西都是在堆中,堆中的数据都是有一个16进制的地址值。且数据都有默认值:
1)整数数组(0)
2)浮点数组(0.0)
3)字符数组(\u0000)不可见;不是空
4)布尔类型(false)
5)引用类型(null)
3.方法区域(Method Area)储存.class相关信息,包括方法信息。
4.本地方法栈:与操作系统相关
5.寄存器:与cpu相关
3.一个数组在内存中的图
4.当两个引用指向同一个数组时,两个引用的操作都生效
public static void main(String[] args) {
int a[] = new int[3];
a[1] = 1;
a[2] = 2;
System.out.println(a[1]+":"+a[2]);
System.out.println("============");
int b[] = a;//这句话说明a[]b[]的栈内存中地址是相同的
b[1] = 10;
b[2] = 20;//其中b[]对数组的操作,同样影响到a[]
System.out.println(b[1]+":"+b[2]);
System.out.println("============");
System.out.println(a[1]+":"+a[2]);
}
结果为
1:2
============
10:20
============
10:20
4.数组中需要注意的事情
1)数组的长度是不可变的
2)小练习数组反转
//1.需要指针分别从数组两端往中间走min、max
//2.当min==max时,或min>max时不再进行交换
//3.对称的值进行交换
int temp = 0;
for (int min = 0,max = a.length-1;min<max;min++,max--){
temp = a[min];
a[min] = a[max];
a[max] = temp;
}