如何使原始点指向引用?

时间:2015-03-09 22:35:11

标签: java int primitive

我想知道为什么原始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?

3 个答案:

答案 0 :(得分:2)

原语不能指出,因为它们是原始的;他们拥有一个价值就是这样。如果要更改值,则必须更改它。如果要在List更改时更改num变量,请考虑使用观察者类型模式,或者甚至更好,完全取消num并在需要时调用list.size()

答案 1 :(得分:1)

一个原语指向一个保存静态的内存区域(不要与static关键字混淆)值,它们无法引用类中的变量。基本上,当原语被更改时,它现在指向一个新的内存位置,其中包含新的数字。

另外,List中的size变量也是原始变量。这个原语似乎有所改变,但这只是因为每次从列表中添加或删除某些内容时它都会被更改。

答案 2 :(得分:1)

当您拨打size()电话时,您将及时获得该集合大小的快照。你没有得到任何额外的参考,因为它只是一个数值。它永远不会包含任何类型的引用,它始终是一个原始的数值。

size()方法能够引用集合的内部状态,因此最好使用它而不是将其存储在另一个变量中。