学习Final与Static修饰类属性变量以及初始化

    作者:课课家教育更新于: 2016-11-29 15:18:56

    大神带你学编程,欢迎选课

      今天我们要学习Final与Static修饰类属性变量以及初始化,谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,像在VB,C#,C,C++java中我们可以看到static作为关键字和函数出现,所以现在就让我们一起来学习一下吧。

      第一:假如说我们在java编程中,使用static来修饰一个属性字段。那么这个属性字段就会成为类本身的资源,使用被修饰成为public共有的。接着如果我们想要访问这个属性的话,那就可以在类的外部通过test.a来进行访问;当然啦,在类内部任何地方都可以进行使用。假如使用private来修饰私有,那么我们就仅仅只可以在类内部进行使用了。如下图:

    学习Final与Static修饰类属性变量以及初始化_Java_内存资源_构造函数_课课家

      假如说字段的属性已经被修饰成为static静态类资源的话,那么这个字段属性永远都只有一个而已。换句话来说,也就是不管大家的newtest()里面有多少个关于类的对象,在我们的实际操作中,永远都仅仅是属于类的那一块内存资源。为了便于大家的理解,小编特意找来了一个示范例子演示给大家看,具体的例子代码,如下图:

    示范例子

      大家看完以上的例子代码以后,知道执行出来结果是什么吗?没错,执行结果就是为:3个0。

      第二:刚刚为大家介绍完static,现在我们就来学习一下final吧。其实这是用来声明方法、属性以及类的。那么这三种分别表示着什么呢?小编一一为你讲解,分别代表的含义如下:方法一旦被定义就一定要有实现的代码并且在子类里面不可以被覆盖,如果字段的属性一旦被分配内存空间就一定要初始化并且以后都不可以进行改变,类一旦被定义了那就不可以继续被定义为接口又或者是抽象类。有人会问,这是为什么呢?其实就是因为不可以被继承。

    final

      为什么有时候我们会出现错误呢?那就是因为我们在代码里面对final修饰的字段属性进行了相对的修改。所以大家要注意这一点咯。

      第三:大家要注意一点,那就是没有被static修饰反而被final修饰的类的属性变量,只可以在两种情况下进行初始化。具体是哪两种情况呢?大家一起来看一下吧,具体的情况如下:

      ①在构造函数里面进行初始化,大家可以参考一下下面的例子代码,如下图:

    在构造函数里面进行初始化

      ②在它被定义的时候进行初始化,大家可以参考一下下面的例子代码,如下图:

    在它被定义的时候进行初始化

      第四:如果说同一时间被static以及final修饰的类的属性变量,那么也只是可以在两种情况下进行初始化。具体是哪两种情况呢?大家一起来看一下吧,具体的情况如下:

      ①在类的静态块里面进行初始化,大家可以参考一下下面的例子代码,如下图:

    在类的静态块里面进行初始化

      ②在它被定义的时候进行初始化,这种方法有点和第三点的类似,具体的例子代码,如下图:

    在它被定义的时候进行初始化

      第五:在这里,小编主要是为大家简单的分析一下第三第四的原因,希望可以加深大家对此的理解。

      第三条:当我们将这个字段属性修饰为final,而并不是static时,那么它就只是属于类的实例对象的资源。当类被加载进内存时,这个字段属性并没有给他分配任何的内存空间,而仅仅只是定义了一个名为a的变量。其实只有当类被实例化时,这个字段属性才会被分配到内存空间,然而实例化时,同一时间还执行了构造函数,所以属性就会被初始化了,这样也就刚好满足了当它被分配内存空间时就已经需要初始化了,在以后的操作中不再改变的条件了。

      第四条:当类的字段属性被同一时间被修饰为final以及static时,那么它只是属于类的资源,而不是属于类的实例对象的资源。那么就是类在被加载进内存时(即应用程序启动的时候)就要已经为这个字段属性分配内存空间了,所以在这个时候属性就已经存在,它又被final来进行修饰,所以就一定要在定义了属性以后,就要为其进行初始化值。然而构造函数是在当类被实例化时才会被执行的,所以要使用构造函数。这个时候这个属性没有被初始化,所以程序就会出现报错的情况。然而static块是类被加载时进行执行,并且仅仅只会执行这一次,所以在static块中是可以被初始化的。

      小编结语:

      大家通过教程可以看到,其实学习Final与Static修饰类属性变量以及初始化,相对来说还是比较简单易学的。今天的教程小编就已经介绍完毕了,希望这会对大家有所帮助。本篇编程语言教程来源于:课课家教育。

java 更多推荐

课课家教育

未登录