携带物体的变量类型是什么?

时间:2015-07-03 23:07:29

标签: java class variables object programming-languages

现在,当我从特定类中用Java创建一个新对象并将其分配给变量时,我们称之为该变量是什么?

Class1 new1 = new Class1();

问题是关于“new1”,如果它是一个对象或携带一个对象的变量。 另外,当我们说,

public class Class1 {
Class2 n1;
}
public class Class2{
void method();
}

n1被认为是实例变量还是另一个类的对象?

如果它是写作之前它所携带的物体,

n1 = new Class2();

2 个答案:

答案 0 :(得分:0)

  • 问题1:它被称为参考。 new1包含一个内存地址 1 ,其中创建了Class1类型的新对象。

  • 问题2:通常,您将其称为属性或字段。它是一个对象而不是一个原始的事实在这里并不重要。

  • 问题3:未初始化的引用是null,如果它是类属性。但是,如果引用是局部变量,则它是未初始化,正如EJP所指出的那样。您无法读取未初始化的局部变量,这将导致编译错误。

还有一句话:在Java中,对象总是存储在堆内存中。没有例外。但是,您的局部变量(如第一个示例中的new1)位于堆栈上,并引用堆上的新对象。这就是Java pass-by-value的原因。

1 实际上,不是内存地址,而是引用唯一ID。 Java隐藏了物理内存地址。

答案 1 :(得分:0)

  

当我从特定类中用Java创建一个新对象并将其分配给变量时,我们称之为该变量是什么?

在一般情况下,我们只称它为变量。

我们也可以将其称为初始化变量。但是"初始化"只是一个形容词,反映了你已经分配了一些东西的事实。还有其他形容词可以适用;例如"实例变量","局部变量","类变量",其中一些是常见的同义词。

  

问题是" new1"如果它是一个携带物体的物体或变量。

绝对不是一个对象。

  

n1被认为是实例变量还是另一个类的对象?

它是一个"实例变量"。它也被称为"字段"或者"属性",但"实例变量"是Java语言规范使用的术语。

  

如果它是一个对象,那么在写n1 = new Class2();

之前它会携带它

它不是一个对象。变量不是对象或原始值。变量将保存一个值,但它不是一个值。

(经常使用的类比是变量是"槽"或者#34;鸽笼"它可以容纳一些东西。变量是槽,而不是槽中的东西。)

如果变量n1是实例变量,则变量null的状态为n1。如果var select = $('<select></select>', { 'class': 'new-select selectpicker' }); $('#selects-container').append(select); 是一个局部变量,Java语言不会让你看到状态是什么......因为在显式初始化之前访问局部变量是非法的。