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(); //不同创建对象,可以直接调用 } }
浙公网安备 33010602011771号