Java静态成员与实例成员
类是一种类型,类中定义的所有成员都归此的对象所有,这些成员成为实例成员;而某些成员想要被所有类的所有对象共享,此时的成员不属于某个对象,而是属于整个类,这些成员成为静态成员。
实例成员:需要通过对象进行访问和调用
静态成员(static修饰符修饰):不需要对象可以直接调用
例如:
1 package java学习; 2 3 public class test2 { 4 double a; //a为实例成员 5 static double c; //c为类成员(即静态成员) 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 test2 first = new test2(); 9 //实例化一个对象 10 first.a = 0.5; 11 first.c = 1.0; 12 //通过对象调用 13 c = 1.5; 14 //直接调用 15 System.out.println(first.a); 16 System.out.println(first.c); 17 System.out.println(c); 18 } 19 20 }
输出结果:
静态成员c首先通过对象访问赋值为1.0,但是其后又直接调用c赋值1.5,故test.c也为1.5,静态变量分配空间唯一,某个对象的静态变量值改变,所有对象的值都将发声变化。

静态方法(函数)
静态方法不在某个特定的对象上进行操作,故引用this会发生错误;
调用静态方法和静态变量一样不需要通过对象调用;
静态方法中只能访问静态成员,不可以访问实例成员。
1 package java学习; 2 3 public class test2 { 4 double a , s; //a为实例成员 5 static double c; //c为类成员(即静态成员) 6 static void sum1(double a) { 7 double s = a * a; //静态方法中只能访问静态成员,不可以访问实例成员 8 System.out.println(s); 9 } 10 void sum2(double a) { 11 this.a = a; 12 c = a; //实例方法中访问静态成员 13 System.out.println(s); 14 } 15 public static void main(String[] args) { 16 // TODO Auto-generated method stub 17 test2 first = new test2(); 18 //实例化一个对象 19 first.sum1(0.5); 20 sum1(0.6); 21 //直接调用函数 22 first.sum2(0.8); 23 } 24 25 }
运行结果:

Java中的静态成员和实例成员具有不同的访问方式和作用范围。静态成员属于类本身,可由类名直接调用,所有对象共享同一静态变量值。实例成员则需要通过对象访问。静态方法不使用this关键字,不能操作实例成员。
474

被折叠的 条评论
为什么被折叠?



