static关键字修饰的成员变量和方法
static修饰的成员变量叫做静态成员变量,静态成员变量存在方法区中被当前类所有对象共享在内存中只有一份,静态成员变量可以使用对象名.变量名的方式访问 但是不推荐,推荐使用类名.变量名的方式访问。
static修饰的方法叫做静态成员方法,也叫作类方法,静态成员方法中只能直接使用静态的成员变量,静态成员方法可以使用对象名.方法名调用不推荐, 推荐使用类名.方法名的方式调用。静态方法只能直接调用其他静态方法。
没有static修饰的成员变量和方法
实例成员变量存储在堆内存中,每个对象都有自己独立的实例变量,在内存中有多份,实例成员变量只能使用对象名.变量名的方式访问。
实例成员方法没static修饰,实例方法可以直接使用静态和非静态成员变量,实例方法只能使用对象名.方法名方式调用。实例方法可以直接调用其他静态和非静态方法 。
[小结]:一般用于模拟类功能的方法使用实例方法,一般用于定义工具类,不需要对象就可以调用的方法,使用静态方法。
相关程序举例:
public class Person {
• static String firstName;
• String lastName;
• public void showName(){
• System.out.println(firstName+lastName);
• aMethod();
• bMethod();
• }
• public static void viewName(){
• System.out.println(firstName/*+lastName*/);
• //aMethod();
• bMethod();
• }
• public void aMethod(){
• • }
• public static void bMethod(){
• • }
• }
• public class TestPerson2 {
• public static void main(String[] args) {
• Person.firstName="李";
• Person.viewName();
• • Person p =new Person();
• p.lastName ="雷";
• p.showName();
• • Person p2 =new Person();
• p2.lastName ="隔壁";
• p2.showName();
• • • }
• }
静态成员变量的分布: