我们先看一道面试题:

  请问 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. java 随机数种子

    引子:需要实现每天随机获得一个礼包,且全服玩家随出来的都是同一个. 实现方案:以当前时间是一年的第几天作为random的种子,取1~礼包总个数范围内的随机值. public static int ge ...

  2. IDA resources - Script, Plugin, Project, Book, Tutorial

    https://www.hex-rays.com/forum/viewtopic.php?f=6&t=3322 List of scripts:http://www.openrce.org/d ...

  3. mysql-connector-odbc-8.0.11-winx64.msi安装失败

    mysql-connector-odbc-8.0.11-winx64.msi安装失败 提示需要Redistributable for Visual Studio 2015 去下载 vc_redist. ...

  4. MySQL MERGE存储引擎 简介

    MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询.构成一个MERGE数据表结构的各成员MyISAM数据表必须具有完全一样的结构.每一个成员数据表的数据列必 ...

  5. jq设置样式

    单个样式: $(this).css("color","red"); 多个样式: $(this).css({color:"red",backg ...

  6. Mac OSX 系统目录结构(转)

    摘要 在OS X的系统中,不再有Windows用户熟悉的C盘.D盘,这是因为OS X底层是Unix系统,其目录机构符合Unix系统的规范.MAC机器主板使用了Intel主导的EFI标准,硬盘分区格式采 ...

  7. [Linux] git send-email的使用

    1. git send-email is included in an individual package, named "git-email":$ sudo apt-get i ...

  8. Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”

    工作中遇到一个问题,A表中字段(DateTime1)的数据类型为DateTime,新建了一张表B的SMALLDATETIME1字段的数据来自A表的DateTime1 但在将A表字段DateTime1导 ...

  9. [AngularJS] Angular 1.3: ng-model-options updateOn, debounce

    <!DOCTYPE html> <html ng-app="app"> <head lang="en" > <meta ...

  10. boost::asio 之udp协议的使用

    write by http://blog.csdn.net/bojie5744 bj_末雨 udp sender #include "stdafx.h" #include < ...