首页 理论教育 Java服务端知识图谱:This与Static

Java服务端知识图谱:This与Static

时间:2023-11-22 理论教育 版权反馈
【摘要】:在上面的例子中,使用set方法设置实例某个字段的值,方法里的语句是this.name=name;。这里this的作用就是指代调用这个方法的实例,这句话的意思就是把调用的实例的name字段的值设为传入的参数的值。普通成员方法都是默认有this的,其意义就是指代调用的实例。static修饰的方法称为静态方法。静态的引入会对类的构造顺序造成影响,当第一次使用某个类时,会先初始化类的静态变量然后执行静态初始化块,之后才会按照上面所讲的类的构造顺序进行构造。

Java服务端知识图谱:This与Static

在上面的例子中,使用set方法设置实例某个字段的值,方法里的语句是this.name=name;。这里this的作用就是指代调用这个方法的实例,这句话的意思就是把调用的实例的name字段的值设为传入的参数的值。普通成员方法都是默认有this的,其意义就是指代调用的实例。

static修饰的方法称为静态方法。静态方法与普通成员方法不同,静态方法里没有this,所以它不能指代调用的实例,或者说静态方法不关心是哪个实例调用它,它只对所属的类负责。下面对Student类进行改造,统计创建的学生的人数。

运行结果如下:

student count=10

这里仅展示和静态相关的内容,添加了一个静态的变量count和静态方法getCount()。(www.xing528.com)

每次调用构造器时把计数变量自增。这样在main方法中创建了10个对象后,计数器会正确记录创建实例的个数。注意静态方法的调用方式,是通过类名调用的,而不是通过实例调 用的。

对于静态和非静态的区别,只要记住,静态变量是属于类的,一个类仅有一份[11];非静态变量是属于实例的,每个实例一份;静态方法是没有this的,所以不能像普通方法那样调用,静态方法不能直接调用类里的非静态变量和方法,因为非静态的变量和方法需要this。

静态的引入会对类的构造顺序造成影响,当第一次使用某个类时,会先初始化类的静态变量然后执行静态初始化块,之后才会按照上面所讲的类的构造顺序进行构造。当创建此类的第二个实例时则不会执行静态的构造,因为静态的数据只构造一次。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈