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 ...
随机推荐
- mybatis源码分析(4)----org.apache.ibatis.binding包
1. 我们通过接口操作数据库时,发现相关的操作都是在org.apache.ibatis.binding下 从sqSessin 获取getMapper() SqlSession session = s ...
- myBatis 切换数据源(spring事务)理解
1. mybatis (SqlSessionTemplate)的动态代理 a) sqlSession的结构 b)SqlSession 结构 public class SqlSessionTemplat ...
- C# winform 禁止窗体移动
#region 禁止窗体移动 public const int WM_SYSCOMMAND = 0x112; public const int SC_MOVE = 0xF012; protected ...
- Segger Real Time Terminal RTT JLINK 客户端软件 GUI 版本
- Spring构造方法注入类型歧义
在Spring框架中,当一个类包含多个构造函数带的参数相同,它总是会造成构造函数注入参数类型歧义的问题. 问题 让我们来看看这个客户 bean 实例.它包含两个构造方法,均接受3个不同的数据类型参数. ...
- windows系统上安装与使用Android NDK r8d(一)
什么是NDK? NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和 java 应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK 集成了交叉编译器,并 ...
- git ssh key配置
原文:https://blog.csdn.net/lqlqlq007/article/details/78983879 git clone支持https和git(即ssh)两种方式下载源码: 当使用 ...
- Javascript:拦截所有AJAX调用,重点处理服务器异常
背景 上篇文章http://www.cnblogs.com/happyframework/p/3241063.html介绍了如何以AOP的形式处理服务器异常,这让服务器端的编程逻辑变的非常整洁,本文介 ...
- Mysql -- 统计类用法
累加: update push_online a,(select msg_key, push_countfrom push_online)b set a.push_count=b.push_count ...
- firefox篇
QQ:1187362408 欢迎技术交流和学习 firefox篇(firefox): TODO: 一,firefox:使用总结例如以下: 运用filefox调试, 总结例如以下: 1.加入fire ...