【详解】使用Java计算类中对象的个数,实现每次new一个对象,计算对象的个数

先看代码:

代码解释:

        因为static修饰变量的时候是属于全局变量,在内存里面只有一个副本,static修饰的变量不可以使用this关键字来获取值,这边的this代表当前类的对象或者属性,而且static修饰的变量是共享的,只有一个本体。每次创建一个对象的时候,类的无参构造方法就会执行一次,所以初始值private static int count = 0,每多new一个对象,count就会 +1。而使用private int count 中的count是非静态变量,通过对象来获取属性值,那么每次new一个对象的时候,对象之间是彼此独立,且在内存中有多个实体,且需要指明count是属于哪一个对象的,所以没法计算对象的个数。

知识补充:

简单总结下static:

① static修饰静态方法,不依赖于任何对象进行访问,直接类名调用即可,因此没有this关键字的调用,在静态方法中不能访问类的非成员变量和非静态成员方法,因为非静态成员变量和非静态成员方法只有对象才可以调用。

② static修饰静态变量,被所有对象所共享,也就是内存中只有一个副本,当且仅当类初始化加载的时候被初始化。而非静态变量对象所拥有的存在多个副本,各个对象拥有的副本互不影响。

③ static静态代码块随着类的加载而加载,优先加载

猜你喜欢

转载自blog.csdn.net/Sunshineoe/article/details/115186006