我想知道为什么原始int没有随着数组大小的变化而改变。不是数组引用的原始点吗?
List<String> list = new ArrayList<>();
int num = list.size();
list.add("item1");
list.add("item2");
System.out.println(num); //why is the num variable still equals to zero?
答案 0 :(得分:2)
原语不能指出,因为它们是原始的;他们拥有一个价值就是这样。如果要更改值,则必须更改它。如果要在List更改时更改num变量,请考虑使用观察者类型模式,或者甚至更好,完全取消num并在需要时调用list.size()
。
答案 1 :(得分:1)
一个原语指向一个保存静态的内存区域(不要与static
关键字混淆)值,它们无法引用类中的变量。基本上,当原语被更改时,它现在指向一个新的内存位置,其中包含新的数字。
另外,List中的size变量也是原始变量。这个原语似乎有所改变,但这只是因为每次从列表中添加或删除某些内容时它都会被更改。
答案 2 :(得分:1)
当您拨打size()
电话时,您将及时获得该集合大小的快照。你没有得到任何额外的参考,因为它只是一个数值。它永远不会包含任何类型的引用,它始终是一个原始的数值。
size()
方法能够引用集合的内部状态,因此最好使用它而不是将其存储在另一个变量中。