在java中有一个static的关键字,它用来修饰类的成员。如果用static修饰属性,该属性被称为静态属性
静态属性的访问格式如下
类名.属性名
如果没有修饰静态属性示例代码如下
class Xuesheng1{
String name;
int age;
String school="A大学";
public Xuesheng1(String name,int age) {
this.name=name;
this.age=age;
}
public void info() {
System.out.println("姓名:"+this.name+",年龄:"+this.age+",学校:"+school);
}
}
public class Jingtaishuxing {
public static void main(String[] args) {
Xuesheng1 stu1=new Xuesheng1("张三",18);
Xuesheng1 stu2=new Xuesheng1("李四",19);
Xuesheng1 stu3=new Xuesheng1("王五",20);
stu1.info();
stu2.info();
stu3.info();
stu1.school="B大学";
System.out.println("修改stu1学校对象的学校信息为B大学后");
stu1.info();
stu2.info();
stu3.info();
}
}
运行结果是
姓名:张三,年龄:18,学校:A大学
姓名:李四,年龄:19,学校:A大学
姓名:王五,年龄:20,学校:A大学
修改stu1学校对象的学校信息为B大学后
姓名:张三,年龄:18,学校:B大学
姓名:李四,年龄:19,学校:A大学
姓名:王五,年龄:20,学校:A大学
可以看出,张三的学校由A大学变为B大学,其他人没有变。如果不用static,对象数量少还好说,数量多了,就非常麻烦,现实中一个学校不可能就三个学生。
可以用static用来修饰school属性
示例代码如下
class Xuesheng1{
String name;
int age;
static String school="A大学";
public Xuesheng1(String name,int age) {
this.name=name;
this.age=age;
}
public void info() {
System.out.println("姓名:"+this.name+",年龄:"+this.age+",学校:"+school);
}
}
public class Jingtaishuxing {
public static void main(String[] args) {
Xuesheng1 stu1=new Xuesheng1("张三",18);
Xuesheng1 stu2=new Xuesheng1("李四",19);
Xuesheng1 stu3=new Xuesheng1("王五",20);
stu1.info();
stu2.info();
stu3.info();
stu1.school="B大学";
System.out.println("修改stu1学校对象的学校信息为B大学后");
stu1.info();
stu2.info();
stu3.info();
}
}
修改后的代码变化不大,唯一变化是school由static修饰
static String school="A大学";
之前的代码没有用static修饰
String school="A大学";
修改后的运行结果如下
姓名:张三,年龄:18,学校:A大学
姓名:李四,年龄:19,学校:A大学
姓名:王五,年龄:20,学校:A大学
修改stu1学校对象的学校信息为B大学后
姓名:张三,年龄:18,学校:B大学
姓名:李四,年龄:19,学校:B大学
姓名:王五,年龄:20,学校:B大学
和第一程序运行结果对比,可以发现三个学生的学校都变了。
经过static修饰过的属性就是静态属性,可以影响全域。