Java: static关键字与final关键字

举报
唐里 发表于 2021/06/17 11:33:15 2021/06/17
【摘要】 static关键字和final关键字是Java语言的核心,深入理解他们的功能非常重要。

static关键字和final关键字是Java语言的核心,深入理解他们的功能非常重要。

静态变量

无论你写了一个多大的程序,都会遇到static关键字,像这样,在main()方法里:

1.png

简而言之,带有 static 关键字的字段属于类,它们是类方法和变量。

当你在课堂上或者书本上学习面向对象编程时,可能会碰到类似于蓝图的东西。我们做个类比,有一个房子的蓝图( 这个蓝图可以建很多房子,就像你可以用这个类创建很多对象/实例一样) ,在这个蓝图上,可能有描述蓝图本身而不是房子的信息。因此,如果一个类中有一个静态变量,那么该变量将保存有关该类本身的信息。我希望这个类比可以使你更容易理解,如果不能,看看下面的例子:

2.png

没有关键字 static 的变量称为实例变量,因此 userName 变量被认为是 User 类的实例变量。

现在,我们的main()方法是:

3.png

注意设置实例变量“用户名”和静态变量描述的区别。当我们设置实例变量“用户名”时,我们首先创建 User 类的对象/实例,然后设置它的 userName 变量。为了设置静态变量‘ description’,我们通过‘ User.setDescription (“ My User Class”) ;’在类本身上设置它。因此,通过将“ description”变量设置为 static,每个类只有一个这样的字段,而有许多“ userName”字段(每个创建的对象有一个)。

它是如何起作用的?实际上,类变量的一个实际用途是不停计算我们拥有的类的实例数。例如:

4.png

我们在 User 类中添加了一个‘ count’静态变量,并在构造函数中增量它。每次我们创建 User 类的实例时,都会有一个变量来跟踪创建了多少个实例。

最后要注意的是,静态变量不是用值初始化的,它们是用默认值“自动”初始化的,默认值是:

静态方法

non-static variable this cannot be referenced from a static context

final关键字

简单来说,final 关键字就是 Java 将变量标记为常量的版本。Final 关键字可以防止变量被重新分配一个不同的值,因此一旦分配了一个值,就不能将其重新分配给其他变量。当你声明一个变量并给它贴上最终的标签时,它也必须被初始化。

编码规范:在 Java 中,和许多其他语言一样,常量总是全部大写。举个例子, π (表示圆周长与其直径的比值),如果你写成PI将导致以下错误:

5.png

java: cannot assign a value to final variable PI

在 Math 类中,PI 变量被标记为 final 关键字成为常量,而带有 final 关键字的变量不能被重新赋值。在methods上使用 final 关键字可以防止它们被重写,并在类级别上使用 final 关键字可以防止该类拥有子类(其他类不能从具有 final 关键字的类继承)。

以上就是本文的全部内容,希望对你有所帮助。

原文链接:https://suprun-anton6.medium.com/java-static-and-final-keywords-66a3f8b3db8a

【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。