![](/img/trans.png)
[英]A reference to primitive type in Java (How to force a primitive data to remain boxed)
[英]How to make a primitive point to a reference?
我想知道为什么原始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?
由于原始体是原始体, 因此无法指向。 他们拥有一个价值,就是这样。 如果要更改值,则必须更改它。 如果您想在List更改时更改num变量,或者甚至更好地完全list.size()
num,并在需要其大小时调用list.size()
,可以考虑使用观察者类型模式。
原语指向具有静态(不要与static
关键字混淆)值的内存区域,它们无法引用类中的变量。 从本质上讲,更改原语后,它现在指向其中具有新数字的新存储位置。
另外,列表中的size变量也是一个原始变量。 该原语似乎有所变化,但这仅仅是因为每次在列表中添加或删除某些内容时都会对其进行更改。
调用size()
,您将在该瞬间获得该集合大小的快照。 您没有任何额外的参考,因为它只是一个数值。 它永远不能保存任何类型的引用,它将始终是原始的数值。
size()
方法可以引用集合的内部状态,因此最好使用它而不是将其存储在另一个变量中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.