共计 1030 个字符,预计需要花费 3 分钟才能阅读完成。
class 类润饰 – static
static 称为动态,能够用来润饰属性或者办法。
如果属性或者办法的后面加上了 static,那么属性或者办法就变成了动态属性或者静态方法。
一般来说,属于实例对象的属性或者办法属于每个类实例化产生的实例化对象,因为每个对象在堆内存中互相独立,所以一个对象身上的属性或者办法与其余对象的属性或者办法也独立于彼此。
当给属性或者办法的身上加上 static 润饰之后,这个属性和办法将不再属于实例化对象而是属于类自身。
所有的通过类实例化失去的对象都能够通过类自身应用动态属性或者办法。
例如:
public class Student {
public String name;
public int age;
static String info = "测试动态属性";
}
应用这个类:
public class Demo1 {public static void main(String[] args) {Student s1 = new Student();
// 属于对象的属性能够通过对象. 属性来操作
s1.name = "张三";
s1.age = 20;
System.out.println(s1.name + "--" + s1.age); // 张三 -- 20
// 动态属性能够通过类来进行拜访
System.out.println(Student.info); // 测试动态属性
}
}
在上图中,能够通过实例对象. 动态属性的形式拜访和批改,之所以能够这样做,是因为实例对象在堆中,除了存储对象属性和办法以外,还存储了类的地址,当拜访一个动态属性时就会立即通过类的地址拜访类中的动态属性,从而对动态属性或者办法进行操作。
类变量 (动态属性) 的利用场景
在开发中,如果某个数据只须要一份,且心愿可能被共享(拜访、批改),则该数据能够定义 成类变量来记住。
例如:
public class Count {
public static int num;
public Count() {
// 每一次实例化的时候,都会执行这个 Count 结构器,结构器每次执行都会让 num 动态属性递增
// Count.num++;
// 如果应用的是本身类的动态属性,也能够间接调用,而不须要加类名
num++;// 和下面的 Count.num++ 等同
}
}
操作 Count 类:
public static void main(String[] args) {Count c = new Count();
new Count();
new Count();
System.out.println(Count.num); // 3
}
正文完