Java静态成员与实例成员
类是一种类型,类中定义的所有成员都归此的对象所有,这些成员成为实例成员;而某些成员想要被所有类的所有对象共享,此时的成员不属于某个对象,而是属于整个类,这些成员成为静态成员。
实例成员:需要通过对象进行访问和调用
静态成员(static修饰符修饰):不需要对象可以直接调用
例如:
package java学习; public class test2 { double a; //a为实例成员 static double c; //c为类成员(即静态成员) public static void main(String[] args) { // TODO Auto-generated method stub test2 first = new test2(); //实例化一个对象 first.a = 0.5; first.c = 1.0; //通过对象调用 c = 1.5; //直接调用 System.out.println(first.a); System.out.println(first.c); System.out.println(c); } }
输出结果:
静态成员c首先通过对象访问赋值为1.0,但是其后又直接调用c赋值1.5,故test.c也为1.5,静态变量分配空间唯一,某个对象的静态变量值改变,所有对象的值都将发声变化。
静态方法(函数)
静态方法不在某个特定的对象上进行操作,故引用this会发生错误;
调用静态方法和静态变量一样不需要通过对象调用;
静态方法中只能访问静态成员,不可以访问实例成员。
package java学习; public class test2 { double a , s; //a为实例成员 static double c; //c为类成员(即静态成员) static void sum1(double a) { double s = a * a; //静态方法中只能访问静态成员,不可以访问实例成员 System.out.println(s); } void sum2(double a) { this.a = a; c = a; //实例方法中访问静态成员 System.out.println(s); } public static void main(String[] args) { // TODO Auto-generated method stub test2 first = new test2(); //实例化一个对象 first.sum1(0.5); sum1(0.6); //直接调用函数 first.sum2(0.8); } }
运行结果: