00:00
那行了,那咱们再继续往下吧,同学们啊,再继续往下。来了各位啊,注意听了啊。最后final的一个例子啊,零四。Final这个单词啊,其实还是很好玩的。很好玩的啊,这个东西。来这边我听一下。一会儿我们在这总结一下啊,所有的结论。来。
01:00
Final修饰的。实例变量。还是这个问题啊。Class Chinese。中国人有什么?有身份证号。对吧,有名字。啊。还有生日。对不对,哎,它还有什么呀,国籍国家。Country国家啊,这个是什么呢?这个是身份证号。对吧,每个人都不一样。对象级别的。对不对,哎,这个是呢,姓名啊,对象不同姓名不一样,对不对,生日也是一样的,我就不再写了,国家各位国家的值是一个固定值。
02:13
中国。是不是,所以我问大家一个问题啊,大家思考一下。Final修饰的变量。是不是要求程序员必须在这手动复制?上一个例子讲没讲?讲没讲各位。就上一个例子的结论,我们拿过来,拿过来啊,上一个例子的结论是什么?Final修饰的实例变量。必须手动赋值,是不是这个结论?是必须手动附上值。
03:00
而且final修饰的是不是不可变?Final修饰是。Final修饰的变量。只能复制。负一次值。这还是那个重点对吧。对不对,好,那我问大家,既然以后这个变量后边的值不变,就既然这里的不会改变。还有必要声明为实例变量吗?实例变量的缺点是什么?告诉我。实例变量的缺点是什么?浪费什么?
04:01
实例变量在哪儿?在堆中?一个对象一份对吗?100个对象100份对不对。你既然用final修饰了?那就意味着你这里的值是不是不能变。就实例变量,既然使用final修饰了,说明该实例变量的值不会随着对象的变化而变化。我这句话是不是很经典?
05:02
实例变量。既然使用final修饰了说明该实例变量的值,它不会随着对象的变化而变化,就是你对象再怎么变化,我这个值也是固定的,对吧?所以这个结论啊出来了,Final修饰的实例变量。实例变量啊,一般。声明一般添加什么呀,Study修饰。听清楚啊,Final修饰的实力你捋一下,有些同学可能脑脑筋没在这儿啊,没捋没去捋过,你再捋一下各位啊。就说我现在有一个int I等于100,我问大家,现在我用final修饰了它,是不是就意味着I永远都是十?
06:08
创建100个对象,I也是十对吧,I是十。是永远不会发生改变的。既然这样。没必要声明为实力量。最好是静态的。节省内存对吗?你好好想想,你既然用final修饰修饰我这个变量,这个变量的值不能变,你永远都不能变,永远都是十,你从出生到最后死亡程序结束永远都是十,那你没必要你这样,你你如果这样做的话,我问你你一个Chinese出来。你new完一个Chinese,这个Chinese里是不是有一个I,你再去一个新的Chinese,我问大家你是不是会产生一个新的I空间,你再去new一个Chinese,是不是会有三个I呀?那我问你,I等于十,这个东西永远都不会变,你搞三个出来干啥?
07:11
你你有三个对象是不是就相当于有三个?你有三个身份证号可以说得通,你有三个名字可以说得通,你有三个I说不通,为啥?因为I被翻译到修饰,这个值永远都是十,不能变啊,不能变,你让每个对象都有一份干什么?你让每一个对象都有一个I,每个对象都有一个I,每个对象都有一个I,不行,你加一个static好了,那这个I是不是就变成类级别了?就算你有100个对象,我这个I是不是也只有一个?所以我问大家,上面这个例子是不是以后大家很少见?就讲了半天这个final final test03以后这种情况,虽然在这墨迹了很长时间,以后我们会写这样的代码吗,各位。
08:00
就你你思考一个问题啊,就是虽然对吧,哎,虽然在这个叫final啊,T03这里耗费了很长时间。但以后代码会这样编写吗?不会。一般前面会加一个什么。Static。啊,一般是会加一个static。明白吧,实例变量既然使用了final修饰,说明该实例变量值不会随着对象的变化而变化啊,该实例变量前面应该添加static关键字。变为静态的。存储在什么呀,方法区。Static。
09:04
注意啊,所以在这里呢,我想说的是final修饰的变量,一般添加代这个修饰。终极结论注意来了啊,注意听啊,Static final修饰的变量称为常量。联合修饰的变量称为量。常亮明。建议全部大写。每个单词之间采用下划线衔接。也就是说你这个写的不规范,应该这样写啊,Static final。
10:02
Country。常量各位啊,实际上常量。啊。和静态变量一样,区别在于什么?常量的值不能变。常量和静态变量。都是存储在方法区。并且都是在类加载时。初始化好,讲完了各位啊,讲完了。
11:06
常量和静态变量各位啊,实际上是一样的。只不过常量后面的这个变量后面这个值是不能变的。而且常亮的名字要求是大写,单词之间用下划线衔接。啊。就是烦各位。常量和静态变量啊都是。实际上一样啊,区别在于常用的值不能变啊,都是存储在方法区,并且都是在类加载时初始化,这个类装载到Java虚拟机的时候初始化出来。那么你想访问他怎么访问system.out点当然采用类名点对吧,类名是谁,Chinese Chinese点什么就行了,这个变量名就行啊。
12:05
嗯。所以以后大家看见全部大写的记录,你不用猜了啊,那一定是常量。那一定是常量啊,来Java c呢,去编译final test04.java然后Java运行final test04走。中国。是不是啊?你想改变,你说你,你想Chinese country,给他一个值叫美国,对不起,不行,来编一下。无法为最终变量count分配值21行。21号这里。对吧,常量没法重新赋值啊,常量是无法重新赋值的。嗯。附不上。这个值是死的就死了,这个最好学了,所有变量里边这个最好学,为什么?因为这个这个就说白了就上来,一出生就就这样,到最后死也这样不动。
13:12
他就在方法区里边有一份就完事了。值不变,比如说我们大家数学里边有一个值,它是永远不会变的,拍是多少啊,3.1415926是不是,那你这个时候呢,你就可以比如说你写一个MY。对吧,然后呢,在这写上拍。Public static final。啊,然后呢,是double拍大写啊。拍啊拍这样拍啊,等于3.14159。二六这个值是不会变的。另外我在这里强调一下啊,常量一般都是公开的。
14:00
为什么?数学中的拍是永远不会变的。常量一般都是公开的。为什么?因为啊,他公开也不怕。公开你也改不了。我公共了没关系,你随便弄对吧,诶你改不了啊,所以我可以公开。听懂了吗?常量可以很明显的不用封装,我封装我干啥呀,因为你根本改不了。这就是常量。听懂了吗?所以常亮这会很就直接叭一下公开就行了。
15:02
起啊。常亮,各位啊,行了,那这块关于final的一个学习,就这些各位啊。
我来说两句