static 静态属性和静态方法

总结:

  1:A 类中静态的(static)属性和方法在 B 类中可以直接  A. 调用

  2:A类中非静态(不加static)的属性和方法在B类中调用时必须先new 对象才能调用

    A a = new A();

     a.

 

1:静态属性和非静态属性的区别

public class A {
    int a;            //定义一个普通的变量a
}
public class Test1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A i1 = new A();
        i1.a = 10;
        
        A i2 = new A();
        i2.a = 15;
        
        A i3 = new A();
        i3.a = 20;
        
        System.out.println(i1.a);
        System.out.println(i2.a);
        System.out.println(i3.a);
    }

}

运行结果为:

 

将a定义成静态的变量,试一下会有什么不同

public class A {
    static int a;            //定义一个静态变量a
}
public class Test1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A i1 = new A();
        i1.a = 10;
        
        A i2 = new A();
        i2.a = 15;
        
        A i3 = new A();
        i3.a = 20;
        
        System.out.println(i1.a);
        System.out.println(i2.a);
        System.out.println(i3.a);
    }

}

运行结果为

 

 

可以看到,若将a设为普通变量,则new出来的i1,i2,i3 指向的是三块不同的内存空间,互不影响

若将a设为静态变量,则i1,i2,i3 指向的是同一块内存空间。

 

 2:静态方法和非静态方法的区别:

定义非静态方法

public class A {
    public void test() {                            //此处定义一个普通方法
        System.out.println("hello world");
    }
}

非静态方法调用

public class Test1 {

    public static void main(String[] args) {
        
        A a = new A();            //想调用A中的test方法必须先创建对象
        a.test();                //否则报错
    }

}

改成静态方法试试

public class A {
    public static void test() {                            //此处定义一个静态方法
        System.out.println("hello world");
    }
}
public class Test1 {

    public static void main(String[] args) {
        
        A.test();                //不同创建对象,可以直接调用        
    }

}

 

posted @ 2021-04-26 16:03  南昌故郡  阅读(122)  评论(0)    收藏  举报