java-final
创始人
2024-04-01 19:44:08
0

并非一成不变

继上次李大明白约小馨吃饭逛公园后觉得可能没希望了。因为跟小馨聊天她也不怎么回复了。

但是周末前一天,小馨给李大明白发消息,说是上次李大明白请她吃饭,这次请李大明白看个电影吧。

李大明白很郁闷,什么情况?又有戏了?

第二天李大明白早上起来,收拾了一下,就去赴约了。

但是李大明白是个学技术的人,他还是延续了他一贯的直男性格,对话如下:

李:我以为你觉得咱俩不合适呢。

小馨:没有呀,我感觉你为人处事还是挺不错的。

李:哈哈,我发消息你不回,我以为意思就是不合适

小馨:不对哇,我消息应该是都回了的,只是有时候看到消息比较晚,第二天才回复你的。

我觉得回复消息是一个最起码的做人的品质。除非你明确告诉别人不要再给你发消息了。

李:哦,对,你是回复晚了,不是没回复。

小馨:这几天比较忙,所以平时不注意看手机。

李:哦啊,原来如此。

小馨:第一次见完面我确实觉得咋俩不合适,当时回家后想直接跟你说,因为你老是给我说一些我不懂的东西。

不过我表姐(介绍人)跟我说,愿意跟你分享他专业知识的人能有什么坏心眼呢。

我觉得她说得很对。

李:哈哈,果然人又不是被final修饰的,会随着别人的建议和自己的思考而改变自己的想法。

小馨:什么,罚闹? 闹事受处罚了吗?

李:不是,这是我们Java语言的一个关键字

final 关键字代表最终的、不可改变的。

小馨:哦哦

李:final 一般有四种用法

  • 可以修饰类
  • 可以修饰方法
  • 可以修饰成员变量
  • 可以修饰局部变量

李:

修饰类

修饰类的话,那这个类就很悲惨了,不能被继承 。我们常见的以下类

java.lang.String
java.lang.Byte
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
java.lang.Character
java.lang.Class
java.lang.Compiler

有人戏称final 修饰的类为太监类 ,是因为被final 修饰的类不能被继承

我们可以试试
在这里插入图片描述

那这里就有人想问了,不能继承,我想跟他产生联系怎么办,那你们就拜把子吧(组合模式

二、修饰方法

final修饰的方法不能被重写,那我们就称之为太监方法

验证一下:

在这里插入图片描述

有人就问了,那他多孤独,是的,只有不想被重写的方法才会用final修饰。有一点我们一定要记住,因为不能重写,所以我们是不能吧abstract final 一起使用

在这里插入图片描述

但是这种方法是可以重载

比如:

在这里插入图片描述

三、修饰成员变量

修饰成员变量很委屈,好好的你为啥给我加final,因为有些变量,定义好之后就不想被别人修改了,比如:我们常见到的:

private static final long serialVersionUID = -6849794470754667710L;

比如:

在这里插入图片描述

看到了没,这些变量,定义好了,是没有修改的必要的,比如int的最大值,最小值,是不能改的了。

但是还是要注意,final修饰的成员变量是不能被修改的,所以初始化的时候必须赋值,不能后期赋值。

初始化赋值包括:直接赋值、构造函数赋值、动态语句块、static修饰的静态语句块赋值

看一下不赋值会不会报错:

在这里插入图片描述

我们用以下几种方式赋值都可以的:

/*** @author 公众号:木子的昼夜编程*/
public class Test  {final String aa = "哈哈";
}/*** @author 公众号:木子的昼夜编程*/
public class Test  {final String aa;{aa = "呵呵";}
}/*** @author 公众号:木子的昼夜编程*/
public class Test  {final String aa;public Test(){aa = "嘿嘿";}
}/*** @author 公众号:木子的昼夜编程*/
public class Test  {final static String aa;static {aa = "静态语句块";}
}

注意:有两句话

对于基本类型来说,不可变说的是变量当中的数据不可改变

对于引用类型来说,不可变说的是变量当中的地址值不可改变。

package base;/*** @author 公众号:木子的昼夜编程*/
public class Test  {final int i = 1;final Person p = new Person();public static void main(String[] args) {Test test = new Test();// 可以修改 不报错test.p.name = "可以修改";// 不可以修改 会报错test.i = 100;// 不可以修改 会报错test.p = new Person();}
}class Person{String name;
}

四、局部变量

局部变量被final修饰了,与成员变量差不多,都是不可以修改的。

我们一般不用final修饰局部变量,除非必须,比如我们用Lambda的时候

在这里插入图片描述

我们用了lambbda使用外部局部变量,一般需要声明成final类型的 因为这玩意存在线程不安全。最好这样。

package base;/*** @author 公众号:木子的昼夜编程*/
public class Test  {public static void main(String[] args) {final int i = 1;Runnable r = () -> System.out.println(i);}
}

李:不好意思 又说跑题了

小馨:没事, 要检票了,我们检票去吧。

李:好的

刷新闻看到一句话,觉得很有道理,发出来大家共勉:

人生的路极其珍贵,又非常短暂。我们不甘让人生索然无味,才更应该大胆些。

关注公众号:木子的昼夜编程

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...