目录
一、 Static 的使用
Static:静态的。可以用来修饰:属性、方法、代码块、内部类。
1.1 static 修饰属性
属性从是否使用static来修饰,又可以分为静态变量(使用static修饰)和非静态变量(不使用static修饰,也可以称为实列变量)
实例变量:当创建了类的多个对象时,每个对象都各自拥有一套类中的非静态变量,当修改其中一个非静态属性时,不会导致其他对象中的相同的属性的改变。
静态变量:当创建了类的多个对象时,多个对象共享同一个静态变量。当修改一个对象后,会使其他对象中的此静态变量发生改变。
1.2 static 修饰属性的其他说明
① 静态变量随类的加载而加载,可以通过 类.静态变量 的方式调用。
② 静态变量的加载要早于对象的创建。
③ 由于类只会加载一次,则静态变量在内存中也只会存在一次,存在方法区的静态域中。
二、static 的举例说明
package cn.spilt_charging.contact;
public class staticTest {
public static void main(String[] args) {
//Chinese.name = "张三"; //编译无法通过(Chinese中的name不是静态的)
Chinese.nation = "中国";
System.out.println(Chinese.nation);
Chinese chinese = new Chinese();
chinese.name = "张三";
chinese.age = 30;
chinese.nation = "China";
System.out.println("姓名: " + chinese.name + " 年龄: " + chinese.age + " 国籍: " + chinese.nation);
//输出结果:姓名: 张三 年龄: 30 国籍: China
Chinese chinese2 = new Chinese();
chinese2.name = "李四";
chinese2.age = 20;
System.out.println("姓名: " + chinese2.name + " 年龄: " + chinese2.age + " 国籍: " + chinese2.nation);
//输出结果:姓名: 李四 年龄: 20 国籍: China
}
}
class Chinese{
String name;
int age;
static String nation = null;
}
static的应用
在以下的例子中,将每个人的号数这一变量使用static修饰,实现的是每new一个对象,号数自动加1。
package cn.spilt_charging.contact;
public class personStatic {
public static void main(String[] args) {
Popule person1 = new Popule("张三");
Popule person2 = new Popule("李四");
Popule person3 = new Popule("王五");
System.out.println("第" + person1.getId() + "号的姓名为:" + person1.getName());
System.out.println("第" + person2.getId() + "号的姓名为:" + person2.getName());
System.out.println("第" + person3.getId() + "号的姓名为:" + person2.getName());
System.out.println("总人数为:" + Popule.getTotal());
}
}
class Popule{
private String name;
private int id;
private static int total; //记录总人数
private static int id_number = 101; // Person的学号
public Popule() {
id = id_number++;
total++;
}
public Popule(String name) {
this();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static int getTotal() {
return total;
}
public static void setTotal(int total) {
Popule.total = total;
}
}
最后到这里,文章就结束了,如果在内容上有问题,恳请各位大佬指出。