现在,当我从特定类中用Java创建一个新对象并将其分配给变量时,我们称之为该变量是什么?
Class1 new1 = new Class1();
问题是关于“new1”,如果它是一个对象或携带一个对象的变量。 另外,当我们说,
public class Class1 {
Class2 n1;
}
public class Class2{
void method();
}
n1被认为是实例变量还是另一个类的对象?
如果它是写作之前它所携带的物体,
n1 = new Class2();
?
答案 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语言不会让你看到状态是什么......因为在显式初始化之前访问局部变量是非法的。