实例方法必须在类实例化后通过对象来调用,而静态方法可以在类实例化之前就使用。与成员变量不同的是,无论哪种方法,在内存中只有一份。
在外部调用静态方法时,可以使用类名.方法名的方式,也可以使用对象名.方法名 的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无须创建对象
静态方法在访问本例的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制)
实例成员变量
他们最大的特点是:如果所属的对象没有被创建,它们也就不存在。如果在类的外部使用它,需要创建一个对象,然后通过对象名.变量名来访问。
在类的内部,实例成员方法也可以直接访问实例成员变量。
public class A{
protected int c=0;
}
public class B{
public static void main(String args[]){
A a =new A();
a.c=100;
System.out.println(a.c);
}
}
静态成员变量
在成员变量前加上static标识符就可以定义一个静态成员变量,相对于实例成员变量,静态成员变量具有下列特点
它被类的所有对象所共享,因此被称为类变量。
它不是属于某个具体对象,也不是保存在某个对象的内存区域中,而是保存在类的公共存储单元。因此,可以在类的对象被创建之前使用。
它既可以通过对象名.变量名方式访问,也可以通过类名.变量名的方式访问。他们完全是等价的
局部变量
方法内部定义变量,被称为局部变量
变量修饰符可以说final,表示这是常量
变量类型可以是JAVA中任意合法的基本类型或复合类型
定义变量时可以同时赋初值
局部变量必须要先定义后使用
局部变量没有访问权限修饰符,不能用public等修饰符来修饰
局部变量不能用static修饰,没有静态局部变量!!!!!
局部变量仅限于定义它的方法,在方法的外部无法访问它。
成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它,如果访问权限允许,还可以在类的外部使用它。