static
public class Test {
public static void main(String[] args){
//static 关键字
Person per1 = new Person();
per1.name = "Rose";
per1.age = 18;
Person per2 = new Person();
per2.name = "Jack";
per2.age = 19;
per1.getPersonInfo();
per2.getPersonInfo();
}
}
class Person{
String country = "中国";
String name;
int age;
public void getPersonInfo(){
System.out.println("姓名:" + name + ",年龄" + age + this.country);
}
}
对该实例的内存进行分析:
传统属性所具备的特征:保存在堆内存中,且每个对象独享属性
描述共享属性,只需要在属性前面加上static
static属性又称为类属性,保存在全局数据区的内存之中,所有对象都可访问
将上述代码进行(static String country = “美国”)修改后的内存分析图如下:
关于static方法有以下两点说明:
1:所有的static方法不允许调用非static定义的属性或方法
2:所有的非static方法允许访问static方法或属性
使用static定义方法只有一个目的:某些方法不希望受到对象的控制,即可以在没有实例化对象的时候执行
public class Test {
public static void main(String[] args){
Person.setCountry("美国");
new Person("Susan",18).getPersonInfo();
}
}
class Person{
private static String country;
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public static void setCountry(String c){
country = c;//不用加上this
}
public void getPersonInfo(){
System.out.println("姓名:" + name + ",年龄:" + age +" "+ this.country);
}
}