Java static关键字
static关键字
static修饰属性和方法
1.static变量-类属性(静态属性)
static一般用public修饰
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);
}
}
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);
}
}
关于static要注意的两点:
1.所有的static方法不允许调用非static定义的属性或方法
2.所有的非static方法允许访问static方法或属性