java中引用和对象的区别
在Main类中,我们从类a创建一个引用变量a,我们都知道 在为引用a分配一个对象(a=newA();)之前,我们无法使用它,因为a当前未指向任何对象 所以我们不能使用类的属性和方法java中引用和对象的区别,java,object,reference,Java,Object,Reference,在Main类中,我们从类a创建一个引用变量a,我们都知道 在为引用a分配一个对象(a=newA();)之前,我们无法使用它,因为a当前未指向任何对象 所以我们不能使用类的属性和方法 public class Main { public static void main(String[] args) { A a = null; a.x=5 ; // fine code in compile time
public class Main {
public static void main(String[] args) {
A a = null;
a.x=5 ; // fine code in compile time
a.y=10 ; // fine code in compile time
a.show(); // fine code in compile time
}
}
class A {
int x ;
int y ;
public void show (){
System.out.println("show method");
}
}
a是引用变量而非对象,因此引用a未在内存中分配,因此它不能在编译时看到变量x、y和类中显示的方法我的问题是,尽管引用a未在内存中分配,为什么还要在编译时引用a see x、y和show方法?show()方法为您提供有关引用本身的信息(关于引用)。当“a”未分配给任何对象时,通过“a”访问对象的成员是非法的。show()将仅显示有关“a”变量的信息。
您的show()方法是静态的,这要感谢您的类。它不绑定到您的变量实例变量可以访问soft和warm
静态
方法之间的差异,这是一个编译时特性,而不是运行时问题,因此NPE不起作用a.show()
与a.show()
相同,但您应该更喜欢后者。请详细说明:a.show()
与您的示例中的a.show()
完全相同。这很奇怪,但这是Java。谢谢,但是为什么要在编译时引用access x,y和show方法?我不理解这个问题,抱歉。