Java static关键字

static关键字

static修饰属性和方法

1.static变量-类属性(静态属性)    

   static一般用public修饰

   static属性称为类属性,类属性保存在全局数据区中(方法区-所有对象共享区域),通过类名调用,与对象实例化无关。

Java static关键字

传统属性具备的特征:保存在堆内存中,且每个对象独享属性。

描述共享属性,只需在属性前添加static关键字即可,访问static属性(类属性)应使用类名称.属性名

class Person{
    private String name;
    private int age;
    public static String country;      //共享属性
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }
}
public class test{
     public static void main(String[] args){
         Person per1 = new Person();
         Person per2 = new Person();
         per1.setName("gx");
         per1.setAge(18);
         Person.country = "中国";    //通过类名调用
         per2.setName("sh");
         per2.setAge(90);
         System.out.println(per1.country);
         System.out.println(per2.country);
     }
 }

Java static关键字

2.static方法-类方法(静态方法)

通过类名调用,与对象实例化无关。常见于工具类方法(例如:数组中的三种工具方法)

class Person{
    public static void fun(){
        System.out.println("我爱北京*");
    }
}
public class test{
     public static void main(String[] args){
         Person.fun();  //通过类名调用方法
     }
}

局部变量不能用static修饰

public class test{
     public static void main(String[] args){
        int static a = 1;   //局部变量
        System.out.println(a);
     }
}

Java static关键字

关于static要注意的两点:

1.所有的static方法不允许调用非static定义的属性或方法

2.所有的非static方法允许访问static方法或属性