1,static关键字有什么用?
被static关键字修饰的属性/代码块/方法,将由对象级提升到类级,在类加载时就准备完成,而不需要创建对象 简单来说,
就是没加之前一个对象一份,加了static之后,所有对象共享一份
类加载只做一次,以下情况都会类加载:
类名. - new对象
- 程序加载,如:Class.forName( )
静态成员可以用对象. 调用,但推荐 类名. 调用
2,图示
没有static的时候 添加了static后 代码:
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private int age;
public static String country;
public Person(String name, int age, String country) {
this.name = name;
this.age = age;
setCountry(country);
}
public static String getCountry() {
return country;
}
public static void setCountry(String country) {
Person.country = country;
}
public void show(){
System.out.println("name:"+name+System.getProperty("line.separator")+"age:"+age+System.getProperty("line.separator")+"country:"+country);
System.out.println("-------------------------------------");
}
}
public class PersonTest {
public static void main(String[] args) {
System.out.println(Person.getCountry());
Person p1=new Person("zhangfei",30,"China");
p1.show();
Person p2=new Person("guanyu",35,"China");
p2.show();
System.out.println(p1.country);
p1.setCountry("汉");
p1.show();
p2.show();
}
}
输出:
小知识点:
操作系统的不同,换行符操也不同:
- /r Mac
- /n Unix/Linux
- /r/n Windows
在程序我们应尽量使用System.getProperty(“line.separator”)来获取当前系统的换行符
更多指路:https://www.cnblogs.com/liaojie970/p/5714050.html
|