java之final
我们先看一道面试题:
请问 final 的含义是什么?可以用在哪里?其初始化的方式有哪些?
首先我们回答一下这道题,然后再探究其所以然。
1、final 表示“最终的”、“不可改变的”,意指其修饰类不可以被继承或修饰的属性的值不可改变。
2、final 既可以修饰类,也可以修饰属性。
3、final 变量可以直接初始化值,也可以在构造方法中初始化值,但是二者只可选其一。
好了!现在我们已经知道了答案了,那咱们就来一一验证吧!
1、直接初始化属性值,类不可被继承:
package com.smbea.demo; import org.junit.Test; /**
* final 修饰属性并并直接初始化
* 此类不可被继承
* @author hapday
*/
public final class FinalDemo2 {
final int num = 9; @Test
public void finalTest() {
// this.num = 7; // 这一句之所以注释是因为报 The final field FinalDemo2.num cannot be assigned 的错误
System.out.println(this.num); // 输出结果:9
}
}
2、通过构造器为 final 的变量初始化:
package com.smbea.demo; /**
* final 修饰属性并通过构造器初始化
* @author hapday
*/
public class FinalDemo {
final int num ; public FinalDemo(int num) {
System.out.println("无参构造器");
this.num = num;
System.out.println(this.num);
} public static void main(String[] args) {
new FinalDemo(8);
}
}
我们先看一道面试题:
请问 final 的含义是什么?可以用在哪里?其初始化的方式有哪些?
首先我们回答一下这道题,然后再探究其所以然。
1、final 表示“最终的”、“不可改变的”,意指其修饰类不可以被继承或修饰的属性的值不可改变。
2、final 既可以修饰类,也可以修饰属性。
3、final 变量可以直接初始化值,也可以在构造方法中初始化值,但是二者只可选其一。
好了!现在我们已经知道了答案了,那咱们就来一一验证吧!
1、直接初始化属性值,类不可被继承:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.smbea.demo;import org.junit.Test;/** * final 修饰属性并并直接初始化 * 此类不可被继承 * @author hapday */public final class FinalDemo2 { final int num = 9; @Test public void finalTest() {// this.num = 7; // 这一句之所以注释是因为报 The final field FinalDemo2.num cannot be assigned 的错误 System.out.println(this.num); // 输出结果:9 }} |
2、通过构造器为 final 的变量初始化:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package com.smbea.demo;/** * final 修饰属性并通过构造器初始化 * @author hapday */public class FinalDemo { final int num ; public FinalDemo(int num) { System.out.println("无参构造器"); this.num = num; System.out.println(this.num); } public static void main(String[] args) { new FinalDemo(8); }} |
java之final的更多相关文章
- Java关键字final、static
一.final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final ...
- java中final的理解
final修饰变量表示变量初始化后就不能再改变. 一.对于基础类型来说,用final修饰后其值不可以改变. 1. final int a; a = 5; 2.final int a = 5; 二.对于 ...
- 【转】Java关键字final、static使用总结
转自:http://lavasoft.blog.51cto.com/62575/18771/ Java关键字final.static使用总结 一.final 根据程序上下文环境, ...
- java的final用法
转自:http://blog.163.com/maomaoyu_1012/blog/static/19060130520116269329894/ 1. 修饰基础数据成员的final ...
- Java关键字final、static使用总结
Java关键字final.static使用总结 一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...
- Java中final的作用
Java中Final可以被用于变量,方法,类.具体来说: 1, Final 变量 修饰主类型时,制定变量为常数,不希望被改变 修饰类类型时,表示变量的句柄不变,不能被指定指向新的变量 修饰参数时,参数 ...
- 转!Java关键字final、static使用总结
Java关键字final.static使用总结 一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可 ...
- Java关键字final、static使用总结(转)
Java关键字final.static使用总结 一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...
- (转)Java关键字final、static使用总结
一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. fin ...
- 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因
声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...
随机推荐
- Apache commons——Apache旗下的通用工具包项目
Apache Commons是Apache旗下的一个开源项目,包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动 这里是Apache commons的官方网站 下面是工具的简单介绍: ...
- set bin 集合
set: create table rr(zz char(4));create table test5 (rr set('美丽','态度好','温柔','善良'));insert into test5 ...
- 使用Vue.js和Axios从第三方API获取数据 — SitePoint
更多的往往不是,建立你的JavaScript应用程序时,你会想把数据从远程源或消耗一个[ API ](https:/ /恩.维基百科.org /维基/ application_programming_ ...
- 实施CMMI3的体会
公司从去年年底开始实施CMMI3,记得当初上培训课的时候,听着老师介绍过程管理,项目管理,工程过程,支持过程这四大类过程域的时候,全部门上下听得稀里糊涂,从未想到这个鬼东西还这么复杂,这么麻烦. 公司 ...
- Go:Hello World!
备注 结束了一周紧张的工作,周末像品茶一样玩味一下Go,本文主要记录学习Go的经历. Go是什么? 官方网站:http://golang.org/. 在Windows下安装Go 官方教程:http:/ ...
- 《Android传感器高级编程》
<Android传感器高级编程> 基本信息 原书名:Professional Android Sensor Programming 原出版社: Wrox 作者: (美)米内特(Greg M ...
- OpenCV学习(15) 细化算法(3)
本章我们学习一下Hilditch算法的基本原理,从网上找资料的时候,竟然发现两个有很大差别的算法描述,而且都叫Hilditch算法.不知道那一个才是正宗的,两个算法实现的效果接近,第一种算 ...
- 数学图形(1.38)anguinea曲线
个人觉得,这是一种变异的SIN曲线. #http://www.mathcurve.com/courbes2d/anguinee/anguinee.shtml vertices = t = from ( ...
- go语言基础之break和continue的区别
1.break和continue的区别 在循环里面有两个关键操作break和continue,break操作是跳出当前循环,continue是跳过本次循环. 2.break 备注:break可⽤于fo ...
- kvm安装windows系统
1.创建虚拟机镜像文件并指定大小(10G) [root@centos01 ~]# qemu-img create -f raw /opt/windows20031.raw 10G Formatting ...