为什么“每个变量都不一定有名字”是真的?

时间:2012-03-27 20:11:25

标签: java

我在测试的学习指南中将此作为T / F问题,并且老师的回答是正确的,但似乎无法找到关于我想知道的原因的明确答案。

5 个答案:

答案 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