Java数组声明的关键在于区分“数组变量”(栈中null引用)和“数组对象”(堆中连续内存),前者仅声明引用,后者才分配实际存储空间并决定长度不可变。
Java 中数组的声明,关键在于分清“数组变量”和“数组对象”不是一回事——前者是栈里的引用,后者是堆里实实在在的一块连续内存。
声明一个数组变量,比如 int[] arr;,只做了两件事:在栈内存中分配一个空间,存一个地址;这个地址初始值是 null。它本身不包含任何数字,也不占用堆内存。就像写了一张便签纸写着“待查收快递”,但快递还没发货。
只有执行 new int[5] 或 new String[]{"a","b"} 这类操作时,JVM 才会在堆内存中划出一块连续区域,存下 5 个 int 默认值(0)或 2 个字符串引用。这时才算真正“有了数组”。
很多人说“数组必须初始化”,其实指的是“数组变量要指向一个有效的数组对象”,而不是给变量本身赋值。例如:
立即学习“Java免费学习笔记(深入)”;
理解变量与对象分离,能一眼看出问题根源:
Python工程实践之np.loadtxt()读取数据
python中的extend功能及用法
pythonJieba分词处理详解【模式词库的添加、删除自定义词库失败处理等】
pycharm没有找到manage repositories按钮的解决办法
Python+pandas数据分析实践总结
pycharm中报ModuleNotFoundErrorNo module named apostensorflowapos错误解决