我在测试的学习指南中将此作为T / F问题,并且老师的回答是正确的,但似乎无法找到关于我想知道的原因的明确答案。
答案 0 :(得分:7)
这是不正确的*
每个变量都有一个名称 - 你可以称之为。
如何识别没有名称的变量?
另一方面,对象(或值)可能没有“名称”。扩展twain249的答案:
String[] x = { "hello" };
x
是变量的名称,其评估为String[]
对象。
x[0]
评估对象 "hello"
否则没有“名称”*
*注意Mat的评论。在这个特殊情况中,它实际上是每个规范措辞的“未命名变量”。这个可能一直是老师所指的;要求澄清。
以下是Types, Values and Variables中的JLS措辞:
有七种变量:
[...]
3)数组件是未命名的变量 ,只要创建了一个新的数组对象,就会创建并初始化为默认值。 [...]
“未命名变量”的定义一般不包括表达式;只是数组组件。
答案 1 :(得分:3)
老师可能指的是收藏。
如果我创建一个字符串数组,则数组中的每个字符串都没有名称,并通过执行array [i]检索,其中i是该String的索引。
答案 2 :(得分:2)
每个变量都有一个名称。
但是,某些对象可能没有指向它们的变量。例如,当您创建一个对象时:
Object varName = new Object();
变量varName
指向有问题的对象。但是,在
new Object();
创建了对象,但没有变量指向它。
答案 3 :(得分:0)
“并非每个对象都被变量引用”确实如此。你总是可以写
new String("");
它将创建一个悬挂对象,将由垃圾收集器拾取。或者,您可以创建由集合和索引/键标识的对象集合。
Vector<Integer> v = new Vector<Integer>();
v.add(1);
v.get(0); // returns Integer '1' without identifying it with a name.
答案 4 :(得分:0)
我认为他指的是匿名类,而不是变量:http://docstore.mik.ua/orelly/java-ent/jnut/ch03_12.htm