java语言对象和变量

java语言对象和变量,java,Java,在java语言中,当我们在方法中创建对象时,静态变量是否加载在对象中 public class A{ static int x =12; void m1(){ int x=2; A a = new A(); a.x=3; System.out.println(a.x); } public static void ma

在java语言中,当我们在方法中创建对象时,静态变量是否加载在对象中

public class A{     
      static int x =12; 

       void m1(){ 
               int x=2;
              A a = new A(); 
               a.x=3;
           System.out.println(a.x); 

       } 
    public static void main(String[] args) { 
        A a = new A(); 
          a.m(); 


    } 
} 
静态变量是否加载到对象中

public class A{     
      static int x =12; 

       void m1(){ 
               int x=2;
              A a = new A(); 
               a.x=3;
           System.out.println(a.x); 

       } 
    public static void main(String[] args) { 
        A a = new A(); 
          a.m(); 


    } 
} 
不,它们不是。静态变量是类级变量

另见

静态变量仅在第一次创建实例时创建一次。因此,创建第二个实例不会更改x的值。对于本例,输出应为3

静态变量的值对于类的所有对象(或实例)都是相同的,或者换句话说,您可以说同一类的所有实例(对象)共享静态变量的一个副本

它们在运行时加载

静态意味着:变量属于类,而不是类的实例。因此,每个静态变量只有一个值,如果类有n个实例,则没有n个值

这是没有错误的代码

 public class A{     
  static int x =12; 

   void m1(){ 
           x=2;
          A a = new A(); 
           a.x=3;
       System.out.println(a.x); 

   } 
public static void main(String[] args) { 
    A a = new A(); 
      a.m1(); 


  } 
} 

你的代码不会编译
a.m()
应该给您错误。您应该首先将m1方法声明为静态。@HelpingHands我认为他不需要将m1声明为静态。Change
a.m()
a.m1()