与static关键字有关的类变量和类方法

来源:互联网 发布:python全栈是什么意思 编辑:程序博客网 时间:2024/05/16 07:34
1.类似于成员变量可以分为实例变量和类变量,类方法也可以分为实例方法和类方法。
 (1)类变量,用static关键字修饰的变量。
 (2)类方法,用static关键字修饰的方法。
 (3)实例变量和实例方法,声明时不用static关键字修饰。
2.实例变量和类变量的区别
 (1)内存分配方面
     实例变量每个对象的实例变量都分配内存;类变量仅在生成第一个对象时分配内存。
 (2)在对象所属方面
    实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果。
3.实例方法和类方法的区别
 (1)在操作上
      实例方法可以对实例变量和类变量进行操作;类方法只能访问类变量,不能访问实例变量。
 (2)在使用方面
      类方法中不能使用this或super关键字,因为而静态方法与对象无关,this和super是属于对象范畴的东西,而静态方法根本不能把对象的引用传到方法中,所以不能用this或super关键字。

4.现在让我们编写一个程序去验证实例方法和类方法的差异

(1)建立一个Test.java文件,内容为:

class A {static int a;int b;static void init1(int i) {a = i;}void init2(int i) {b = i;}static int put1() {return a;}int put2() {return b;}}public class Test {public static void main(String args[]) {A t1 = new A();A t2 = new A();t1.init1(8);t2.init1(10);System.out.println("t1.init1:"+t1.put1()+"  t2.init1:"+t2.put1());t1.init2(12);t2.init2(14);System.out.println("t1.init2:"+t1.put2()+"  t2.init2:"+t2.put2());}}

(2)运行过程及运行结果如下: