static 关键字的用法
1.全局属性
- 用法:
statci + 数据结构+变量名
作为公共属性,修改一个对象的值,剩余该类产生的对象对应该值也会随之更改,无需逐一修改
class Person{
String name;
int age;
static String country = "A";
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void info(){
System.out.println(name+" "+age+" "+country);
}
}
public class example_1 {
public static void main(String[] args) {
Person p1 = new Person("1",18);
Person p2 = new Person("2",17);
Person p3 = new Person("3",16);
System.out.println("修改之前:");
p1.info();
p2.info();
p3.info();
System.out.println("修改之后:");
p1.country = "B";
p1.info();
p2.info();
p3.info();
}
}
公共属性最好不要由对象修改,而是由类进行修改,故修改时因用:
Person.country = “B”;
2.使用static声明方法
类方法可以直接由类名直接调用而不需要对象
class Person2{
private String name;
private int age;
private static String city = "A";
public Person2(String name, int age) {
this.name = name;
this.age = age;
}
public void info(){
System.out.println(name+" "+age+" "+city);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static String getCity() {
return city;
}
public static void setCity(String city) {
Person2.city = city;
}
}
public class example_2 {
public static void main(String[] args) {
Person2 p1 = new Person2("张三", 30);
Person2 p2 = new Person2("李四", 29);
Person2 p3 = new Person2("王五", 35);
System.out.println("修改之前:");
p1.info();
p2.info();
p3.info();
System.out.println("修改之后:");
Person2.setCity("B");//直接使用类名调用类里面的static方法
p1.info();
p2.info();
p3.info();
}
}
ps:非static方法可以调用static声明的属性或方法,而static方法不可以调用非static声明的属性或方法