我们先看一道面试题:

  请问 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的更多相关文章

  1. Java关键字final、static

    一.final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final ...

  2. java中final的理解

    final修饰变量表示变量初始化后就不能再改变. 一.对于基础类型来说,用final修饰后其值不可以改变. 1. final int a; a = 5; 2.final int a = 5; 二.对于 ...

  3. 【转】Java关键字final、static使用总结

    转自:http://lavasoft.blog.51cto.com/62575/18771/   Java关键字final.static使用总结   一.final        根据程序上下文环境, ...

  4. java的final用法

    转自:http://blog.163.com/maomaoyu_1012/blog/static/19060130520116269329894/ 1.         修饰基础数据成员的final ...

  5. Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  6. Java中final的作用

    Java中Final可以被用于变量,方法,类.具体来说: 1, Final 变量 修饰主类型时,制定变量为常数,不希望被改变 修饰类类型时,表示变量的句柄不变,不能被指定指向新的变量 修饰参数时,参数 ...

  7. 转!Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可 ...

  8. Java关键字final、static使用总结(转)

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  9. (转)Java关键字final、static使用总结

    一.final  根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. fin ...

  10. 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因

    声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...

随机推荐

  1. CentOS下的RPM包制作教程收集(rpmbuild)

    http://www.jinbuguo.com/redhat/rpmbuild.html(中文手册) https://www.linuxidc.com/Linux/2016-09/134955.htm ...

  2. Cwrsync_rsync windows_windows下的rsync

    1.官网已不允许免费下载cwrsync的server了,我就先给出下载地址: http://files.cnblogs.com/files/assassin1994/cwRsync_4.0.5_ser ...

  3. PSCollectionView瀑布流实现

    [-] 一基本原理 二具体实现 相关数据结构 视图更新方式 relayoutViews方法 removeAndAddCellsIfNecessary方法 select方法 重用数据块视图机制 三使用方 ...

  4. dubbo知识点理解2

    作者:网易云链接:https://www.zhihu.com/question/45413135/answer/226794957来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  5. SpringMVC杂记(1) 使用阿里巴巴的fastjson

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. Ext面板

    <HTML> <HEAD> <TITLE>面板</TITLE> <link rel="stylesheet" type=&qu ...

  7. 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案

    导入的一个外部的spring boot项目,运行启动类,出现错误:找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 解决方案: 将所有错误处理完成后,再 ...

  8. EntityFramework:我想我需要和 Session.Save 语义一样的方法

    背景 EntityFramework 中 DbSet.Add 方法不会导致立即执行 insert 语句,这在长事务中非常有用,不过多数用例都是短事务的,为何我需要一个立即执行 insert 语句的方法 ...

  9. webBrowser捕获Alert内容(C#)

    1.引用using mshtml;  //Microsoft HTML Object Library2.[ComVisible(true)] //放到类的上边 public partial class ...

  10. 突破技术管理,IT人中年危机变契机

    突破技术管理,IT人中年危机变契机 中生代技术 Yesterday 作为一个老技术人,今天不聊技术,就聊点技术人员职业发展的事情:对技术管理岗位的认知,比如技术总监. 先贴一张技术人员职业发展路线图, ...