ad

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.4.4 This与Static

admin 149 2023-10-25

【摘要】 本书摘自《JAVA服务端研发知识图谱》一书中第1章,第4节,由何为、迟文恒 编著。

1.4.4 This与Static

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

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

public class Student {

private int age =18;

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.4.4 This与Static

private String name ="todo";

private static int count =0;

public static int getCount(){

return count;

1

public Student(int age,String name){

count++;

this.age =age

this.name =name;

public Student()

count++;

this.age=0;

this.name ="todo";

}

public static void main(Stringl) args){

for(int i=0;i<10;i++){

Student student= new Student(

}

System.out.printin("student count ="+Student.getCount();

运行结果如下:

student count=10

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

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

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

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

1.4.5 访问权限

Java 的访问权限分为4种,分别是公开访问权限、保护访问权限、包访问权限、私有权 限。这四种权限的写法和使用范围见表1-6。

关于权限的使用不再举例,前面的例子中已经大量使用了权限设置。 一般来讲注意以下几 点即可:不要把字段设为 public 权限,要分配正确的 get 和 set 方法;不要把所有方法都设为 public, 要适当地对外暴露方法;除非明确包访问权限的用意,否则一定要合理分配一个显式的 权限设置; protected权限需要明确类里的继承关系时再使用,否则这个权限等同于private。

1.4.6 垃圾回收

前面用大量的篇幅讲解了如何创建一个实例以及如何使用这个实例。但是这些实例使用完 之后去了哪里呢?这个问题对于 C++ 语言来说是必须解决的,如果用 C++ 语言创建完对象后置 之不理,整个程序肯定会崩溃。但是这个问题对于 Java 来讲就没有那么重要了, Java 有一套自 动回收的机制用于处理创建出来的实例,而本书所涉及的内容基本都不需要手动清理垃圾,实 际使用中真正需要手动清理的地方也很少,所以就不再赘述,有兴趣的读者可以查阅关于 Java 清理的相关资料。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《基于Kubernetes的容器云平台实战》_了解最新技术前沿_1.3 Docker 基本概念
下一篇:《零基础Linux 从入门到精通》_从零开始_轻松掌握Linux操作系统_21.3.2 基本命令参数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×