数组在内存中的分配
对于 Java 数组的初始化,有以下两种方式:
静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如:
1
2
3
4
|
//只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为4 String[] computers = { "Dell" , "Lenovo" , "Apple" , "Acer" }; //① //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为3 String[] names = new String[]{ "多啦A梦" , "大雄" , "静香" }; //② |
动态初始化:初始化时由程序员显示的指定数组的长度,由系统为数据每个元素分配初始值,如:
1
2
|
//只是指定了数组的长度,并没有显示的为数组指定初始值,但是系统会默认给数组数组元素分配初始值为null String[] cars = new String[ 4 ]; //③ |
因为 Java 数组变量是引用类型的变量,所以上述几行初始化语句执行后,三个数组在内存中的分配情况如下图所示:
由上图可知,静态初始化方式,程序员虽然没有指定数组长度,但是系统已经自动帮我们给分配了,而动态初始化方式,程序员虽然没有显示的指定初始化值,但是因为 Java 数组是引用类型的变量,所以系统也为每个元素分配了初始化值 null ,当然不同类型的初始化值也是不一样的,假设是基本类型int类型,那么为系统分配的初始化值也是对应的默认值0。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通