1.类似于成员变量可以分为实例变量和类变量,类方法也可以分为实例方法和类方法。
(1)类变量,用static关键字修饰的变量。
(2)类方法,用static关键字修饰的方法。
(3)实例变量和实例方法,声明时不用static关键字修饰。
2.实例变量和类变量的区别
(1)内存分配方面
实例变量每个对象的实例变量都分配内存;类变量仅在生成第一个对象时分配内存。
(2)在对象所属方面
实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果。
3.实例方法和类方法的区别
(1)在操作上
实例方法可以对实例变量和类变量进行操作;类方法只能访问类变量,不能访问实例变量。
(2)在使用方面
类方法中不能使用this或super关键字,因为而静态方法与对象无关,this和super是属于对象范畴的东西,而静态方法根本不能把对象的引用传到方法中,所以不能用this或super关键字。
(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)运行过程及运行结果如下: