三种初始化及内存分析
Java内存分析;
- 堆:存放java的对象和数组
可以被所有所有的线程共享,不会存放别的对象引用 - 栈:存放基本变量类型(会包含这个基本类型的具体数值)
引用对象的变量(会存放这个引用在对里面的具体地址) - 方法区:可以被所有的线程共享
包含了所有的class和static变量
栈相当于存放java的书,栈里面的堆相当于章节
步骤:
当想要输出第11个元素会发生如下错误 叫做越界
数组的三种初始化状态
- 静态初始化
int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,3)};
- 动态初始化
int[] a = new int[2];
a[0]=1;
a[1]=2;
- 数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。 默认值为0
例子
package com.zhong.array;
public class ArrayDemo02{
public static void main(String [] args){
//静态初始化:创建+赋值
int[] a = {1,2,3,4,5,6,7,8,9};
//Man[] mans = {new Man(1,1),new Man(2,3)};
ystem.out.println(a[0]);
//动态初始化:包含默认初始化
int[] b = new int[10];
b[0] = 10;
b[1] = 1;
System.out.println(b[0]); //输出10
System.out.println(b[1]); //输出1
System.out.println(b[2]); //输出0 还没赋值,输出默认值0
Scanner scanner = new Scanner(System.in);
System.out.println("hello,world!");
scanner.close();
}
}