2_6. static关键字

class User{
  String userName;
  String password;

  static int userCount;
  
  public void introduce(){
    System.out.println(userName + ":"+password);
  }
}

class TestUser{
    public static void main(String [] args){
        User user = new User();
        User.userCount++;
        
        User user1 = new User();
        User.userCount++;
    }
}

1.修饰在属性上
加static 表示为类的属性: 存放在JVM的数据共享区

不加static 表示为对象的属性

类属性访问:
类名.类属性名()
栈 堆


Capture.PNG

类属性的生命周期
user.class加载到jvm时类属性就产生了。
Jvm消失时候类属性就消失了

2.修饰在方法上
加static 表示为类的方法

调用方式
类名.类方法(); //推荐使用
对象名.类方法();
静态方法只能调用静态变量,不能使用对象属性

class Teacher{
    class name;
    int age;
    String lesson;
    static int teacherCount;
    
    public void teach(){
          System.out.println(this.name + "is teaching");
    }

    //直接调用静态类属性,不用this
    public static void sleep(){
          System.out.println(teachCount + "个老师在睡觉");
    }
}

一般用于工具类, 作为公用方法,供调用

class ArrayUtils{
    public static void sort(int[] arr){
        // Bubble sort
   }
}

你可能感兴趣的:(2_6. static关键字)