JAVA入门级教学之(final关键字)

 

不希望任何人可以随意修改自己的东西的时候可以用final关键字进行修饰

 

 * 1.final是一个关键字,表示最终的,不可变的
 * 
 * 2.final修饰的无法被继承
 * 
 * 3.final修饰的方法无法被覆盖
 * 
 * 4.final修饰的变量一旦被赋值后,不可重新赋值【不可二次赋值】
 * 
 * 5.final修饰的实例变量必须手动赋值,不能采用系统默认值
 * 
 * 6.final修饰的引用,一旦指向某个对象之后,不能再指向其它对象,那么被指向的对象无法被垃圾回收器回收

   只要new一次就会产生一个对象,如果将这个对象的引用用final修饰,则不能再次new这个对象的引用

   final Person person=new Person(10);

   person=new Person(10);//报错
 * 
 * 7.final修饰的引用虽然指向某个对象之后不能指向其它对象,但是所指向的对象内部的内存是可以被修改的
 * 
 * 8.final修饰的实例变量,一般和static联合使用(存储在方法区),被称为常量

常量:实际上常量和静态变量一样,区别在于:

常量的值不能变

常量和静态变量,都是存储在方法区,并且都是在类加载时候初始化

常量一般都是公共的public

 

 

 

万变不离其宗:final修饰的只能赋值一次

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------- 

 新建一个User类

package com.lbj.javase12;public class User {public int id;public User() {super();
}public User(int id) {super();this.id = id;
}}

 新建一个测试类

package com.lbj.javase12;
/*** 1.final是一个关键字,表示最终的,不可变的* * 2.final修饰的类无法被继承* * 3.final修饰的方法无法被覆盖* * 4.final修饰的变量一旦被赋值后,不可重新赋值【不可二次赋值】* * 5.final修饰的实例变量,必须手动赋值,不能采用系统默认值* * 6.final修饰的引用,一旦指向某个对象之后,不能再指向其它对象,那么被指向的对象无法被垃圾回收器回收* * 7.final修饰的引用虽然指向某个对象之后不能指向其它对象,但是所指向的对象内部的内存是可以被修改的* * 8.final修饰的实例变量,一般和static联合使用,被称为常量*/
public class Test01 {
/** 成员变量之实例变量* * 实例变量有默认值+final修饰的变量一旦赋值不能重新赋值* * 综合考虑:java语言最终规定实例变量使用final修饰后,必须手动赋值,不能采用系统默认值* * *///final int age;编译报错//第一种解决方案final int age=10;//第二种解决方案final int num;public Test01(){//这里面差一点犯了错误,因为这里我用了自定义的方法,其实是要用类名才行this.num=10;//以上两种解决方案:其实本质上就是一种方式,都是在构造方法执行过程中给实例变量赋值}public static void main(String[] args) {int i=10;System.out.println(i);//10i=20;System.out.println(i);//20//			4.final修饰的变量一旦被赋值后,不可重新赋值【不可二次赋值】final int k=10;//k=20;final int m;m=10;//m=20;//------------------------//创建用户对象User u=new User(100);//User u=ox1234//又创建了一个新的User对象//程序执行到此处表示以上对象已经变成垃圾堆数据,等待垃圾回收器的回收u=new User(200);//u=nv12231//创建用户对象final User user=new User(30);//user=new User(50);//final修饰的引用,一旦指向某个对象后,不能再指向其它对象,那么被指向的对象无法被垃圾回收器回收//相当于绑定了user这个引用只能和一个对象连接//final修饰的引用虽然指向某个对象之后不能指向其它对象,但是所指向的对象内部是可以被修改的user.id=50;//-----------------//访问国籍System.out.println(Chinese.GUO_JI);//已经固定,不能修改}}
//中国人
class Chinese{/** 国籍* * 需求:每一个中国人的国籍都是中国,而且国籍是不会发生改变的,为了防止国籍被修改,建议加final修饰* * final修饰的实例变量是不可变的,这种变量一般和static联合使用,被称为常量* * 常量的定义语法格式:* 		public static final 类型.常量名=值;* * java规范中要求所有常量的名字全部大写,每个单词之间使用下划线连接*/public static final String GUO_JI="中国";
}

 

package com.lbj.javase16;
/*** 深入final* * final修饰的引用类型,该引用不可再重新指向其它的java对象* * 但是final修饰的引用,该引用指向的对象的属性是可以修改的**/
public class Test02 {public static void main(String[] args) {// TODO Auto-generated method stubfinal Customer c=new Customer("123",12);//c是final的,无法重新赋值//c=new Customer("LKKK",20);c.name="321";c.age=25;System.out.println(c.name);System.out.println(c.age);}}
class Customer{String name;int age;Customer(String name,int age){this.name=name;this.age=age;	}
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fopen吃内存吗 php,file_get_contents = PHP致命错误:允许的内存耗尽

我没有处理大文件的经验,所以我不确定该怎么办。我试图使用 file_get_contents 读取几个大文件;任务是使用preg_replace() 清洁和修补它们。我的代码在小文件上运行良好;但是,大文件(40 MB)触发内存耗尽错误:PHP Fatal…

倒计时小工具_这款高颜值的 APP 可以让小仙女/男神们的日子过得更精致

倒计时是大家平常都会用的功能,系统自带的工具或许也能满足一部分朋友的需求,但是对于生活精致,并且富有仪式感的小仙女和小男神们,一款普普通通的计时工具怎么能满足呢?今天推荐的这款应用——小时刻( App Store 搜索…

oracle 删除系统用户,Oracle数据库如何创建和删除用户

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1. 创建用户:SQL> create user user01 identified by user01;User created.但登录提示01045的错误,缺少CREATE SESSION权限。ERROR:ORA-01045: user USER01 lacks CREATE SESSION privilege; logon denie…

asp单元格合并后宽度没有合并_宅在家里跟着大牛从零开始学excel第五课-合并,边框,列宽行高...

接着上一课,我们制作的课程表,有人说了不好看,确实,我们就来补充和美化一下。首先我们要更改的就是字体,字体改成下图,字体大小选为18,样子就好看了很多了。仔细看上图,还却一点东西…

JAVA入门级教学之(package和import)

目录 JAVA入门级教学之(package和import) 1.包又称为package 2.怎么定义package? 3.包名的命名规范: 4.包名要求全部小写,包名也是标识符,必须遵守标识符的命名规范 5.一个包对应一个目录 6.使用了pa…

oracle数据库中分析函数大全,Oracle数据库的分析函数

over 连续的相加求各部门的薪水总和和全部总和 select name, salary, empsum(salary) over (order by emp) 连续求和sum(salary) over () 总和100*round(sal/sum(sal) over(), 5) 份额from company;sum() sum over() 求的是总和,sum over (order by ) 求的是连续的…

excel合并多个工作表_多个工作表或者多个工作簿的合并计算

哈喽,everybody,作为一个与excel打交道长达六年的职业老手,我会整理汇总一些十分有利于提高工作效率的小tip。也当作是我为自己知识点做的些许总结吧。今天我们就来聊聊如何快速合并多个工作表或者工作簿的这些事。话不多说,直接上…

JAVA入门级教学之(访问修饰符权限控制)

访问控制权限修饰符: 1.访问控制权限修饰符来控制元素的访问范围 public表示公开的,在任何位置都可以访问protected同包、本类、子类(出了包如果是子类没问题)缺省同包、本类(不能出包)private仅…

access字段属性设置下拉列表_CAD常用命令:ATTDEF(定义属性)

下面是本公众号文章分类目录,点击标题文字可打开分类文章列表:安装卸载 异常、退出 文件及输入输出 基本操作技巧 各种设置及相关问题 界面和显示相关问题 快捷键 视图设置和调整 图层 颜色 线型 字体、文字样式和文字输入 标注、引线和标注…

oracle定义转储目录,Oracle 12.1新特性:在线rename或relocate数据文件

在Oracle12.1之前的版本中要重命名数据文件或移动数据文件需要关闭数据库或把表空间/数据文件置为offline状态才可以,参考之前总结的要实现这一功能需要使用ALTERDATABASEMOVEDATAFILE语句,语法如下ALTER DATABASE MOVE DATAFILE ( filename | ASM_filen…

JAVA入门级教学之(super关键字)

目录 JAVA入门级教学之(super关键字) 1.super关键字用在构造方法中: 2.语法规则: 3.注意:super();的调用只能放在构造方法的第一行,和this();的调用规则一样 4.通过子类的构造方法去调用父类的构造方法…

lwip协议栈在linux运行,LwIP协议栈在uCOS II下的实现

1、概述:LwIP协议栈在设计时就考虑到了将来的移植问题,因此把所有与硬件、OS、编译器相关的部份独立出来,放在ucosii&LwIPsource etlwiparch目录下。因此LwIP在uCOS II上的实现就是修改这个目录下的文件,其它的文件一般不应该…

linux离线安装redmine_Feem:免流量跨平台文件传输工具,支持离线分享

Feem 是一款在文件传输领域打拼多年的产品,目前是基于 Wifi 局域网直连模式的文件传输服务,跨平台,在 Mac、PC、iOS、Android、Linux 皆有客户端。安装不同平台的客户端设备只要在同一无线网络,可以实现无提前配置式的自动配对&am…

JAVA入门级教学之(abstract抽象类)

目录 JAVA入门级教学之(abstract抽象类) 1.如何定义抽象类? 2.抽象类无法被实例化 3.虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的 4.抽象类中可以定义抽象方法 5.如果一个类…

linux 内核裁剪不当 死机,Linux編譯x86架構內核出現_stack_chk_guard未定義錯誤

背景android模擬器運行於virtualbox中,而virtualbox運行於x86架構的pc端,所以android及其Linux內核都編譯成x86架構。當virtualbox的vt未開啟的情況下android系統會出現各種問題,如arm庫游戲不能運行,桌面平凡掛死重啟。通過查看日…

a*算法流程图_光伏逆变器MPPT基本算法介绍李星硕

欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 905723370高可靠新能源行业顶尖自媒体在这里有电力电子、新能源干货、行业发展趋势分析、最新产品介绍、众多技术达人与您分享经验,欢迎关注我们,搜索微信公众号:电力电子技术…

JAVA入门级教学之(接口)

目录 JAVA入门级教学之(接口) 接口也是一种引用类型,可以等同看做类 1.如何定义接口,语法: 2.接口中只能出现: 3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的 4.接口中没有构造方…

java 线程状态_浅析Java中的线程状态

一、线程的5种状态众所周知,Java的线程状态有5种,分别对应上图中五种不同颜色,下面对这5种状态及状态间的转化做相应的解释: 1. 初始化状态:新建一个线程对象 2. 可运行状态:其他线程调用了该线程对象的sta…

Linux7添加syslog,请教linux下安装syslog的方法.是安装,不是配置

、安装JDK从sun网站上直接下载JDK:http://java.sun.com/j2se/1.4.2/download.html 提供了两个下载:1、RPM in self-extracting file (j2sdk-1_4_2_04-linux-i586.bin, 32.77 MB) 这个是自解压的文件,在linux上安装如下:# chmod ux…

如何在jieba分词中加自定义词典_Pyspark Word2Vec + jieba 训练词向量流程

摘要:用商品描述为语料库训练商品词向量为例,分享一下用pyspark自带word2vecjieba分词训练词向量的流程.工具:python,pyspark,jieba,pandas,numpy数据格式:自定义词典,语料库均为pyspark dataframe,停用辞典不大,直接使用txt.1 create spark我的pyspark参数设置如下:def create…