Java空对象
据我所知,在java中,你不能直接访问对象,你只有指向它的指针。例如,我有以下代码:Java空对象,java,null,Java,Null,据我所知,在java中,你不能直接访问对象,你只有指向它的指针。例如,我有以下代码: public class App { public App() { Thing t = null; doStuff(t); System.out.println(t); } public void doStuff(Thing a) { a = new Thing(); } public static vo
public class App {
public App() {
Thing t = null;
doStuff(t);
System.out.println(t);
}
public void doStuff(Thing a) {
a = new Thing();
}
public static void main(String[] args) {
new App();
}
}
class Thing { }
并且输出为空。为什么?我已经将指针传递给一个方法,该方法给它一个新的东西实例来指向。是因为它是一个新指针吗?另外,如何在不从doStuff()返回任何内容的情况下解析它?您有引用而不是指针,并且如果没有调用者中的赋值,方法无法更新调用者引用-因此
public App() {
Thing t = null;
doStuff(t);
System.out.println(t);
}
public void doStuff(Thing a) {
a = new Thing();
}
如果你这么做的话会有用的
public App() {
Thing t = null;
t = doStuff(t);
System.out.println(t);
}
public Thing doStuff(Thing a) {
a = new Thing();
return a;
}
这是因为Java是通过对象引用的传递值来工作的,而不是通过对象引用来工作的,即使引用是一个对象,它也会通过引用值来传递。因此,您总是使用新的引用引用: 声明引用对象的变量 之前,您了解到,要声明变量,您需要编写: 类型名称;这会通知编译器您将使用名称来引用 指向类型为类型的数据。对于一个基本变量,这个 声明还为 变数 您还可以在引用变量本身的行上声明引用变量。对于 例如: 点原酮;如果你像这样声明originOne,它的值将是 未确定,直到实际创建并指定了对象。 仅声明引用变量不会创建对象。对于 因此,您需要使用新运算符,如下一节所述 节。在中使用对象之前,必须将其指定给originOne 你的密码。否则,将出现编译器错误 当前未引用任何对象的处于此状态的变量可以 如下图所示(变量名,originOne,加上引用 不指向任何内容):
1) 您可以使用ststic方法访问内容,而无需创建类的实例。2)
doStuff
中的变量是该方法的局部变量,因此它保持null
在外部。查看类变量或返回创建的对象。Java使用传递值,参数变量永远不会是传递的某个变量的别名。而是传递一个对象(指针)。