java中引用和对象的区别

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

在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    
         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方法?我不理解这个问题,抱歉。