文档章节

Java final关键字

bpmfdtnlgk
 bpmfdtnlgk
发布于 2017/03/21 15:26
字数 481
阅读 5
收藏 0

final,主要是指“无法改变,恒定不变的”。final关键字在Java中主要用来修饰 数据、方法、类

1、final数据

final可以修饰基本类型,当修饰基本类型时,表示基本类型的值永远不会被改变;当final用于对象的引用时,表示这个引用恒定不变,引用指向了一个对象就不可以再指向另一个对象,但是对象里面的值是可以被改变的。

  • 编译期常量 static final修饰,使用大写表示,各个单词之间使用下划线分隔
public class FinalData{
    private static Random random = new Random(47);
    private String id;
    public FinalData(String id){
        this.id = id;
    }

    private final int valueOne = 9;
    private static final int VALUE_TWO = 99;

    public static final int VALUE_THREE = 90;

    private final int i4 = random.nextInt(20);
    static final int VAL_5 = random.nextInt(20);

    private FinalValue v1 = new FinalValue(1);
    private final FinalValue v2 = new FinalValue(2);
    private static final FinalValue v3 = new FinalValue(3);

    public static void main(String[] args) {
        FinalData finalData1 = new FinalData("finalData1");
//        finalData1.valueOne++;//error,final cannot change
        int v2I = finalData1.v2.getI();
//        finalData1.v2 = new FinalValue(3);//引用不可以改变,final类型
        v2I++;
        finalData1.v1 = new FinalValue(4);
        System.out.println(v2I);
        System.out.println(new FinalData("2").i4);
        System.out.println(FinalData.VAL_5);
    }
}
  • 运行时常量 final修饰
  • final参数 final修饰参数,代表无法在方法中更改参数所指向的引用
void test(final Object o){
    o = new Object;//error,o被final修饰,无法指向新的引用,和final修饰对象相同
}

2、final方法

防止继承类对方法定义进行修改,使用final修饰方法,可以使方法行为不会改变,不会被子类覆盖。 类中所有的private方法,隐式的指定为final类型,因为无法访问private方法,即无法覆盖。

3、final类

类使用final修饰,表明该类不会被任何其他类继承。所以类中的方法也就隐式的指定为final类型,因为类无法被继承,方法肯定无法被覆盖。

© 著作权归作者所有

bpmfdtnlgk
粉丝 0
博文 8
码字总数 1976
作品 0
杭州
程序员
私信 提问
深入理解Java中的final关键字

final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再...

SkyWaiting
2014/01/04
247
2
Java学习资料-标识符、关键字

1、标识符 (1)Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则。 (2)Java标识符命名规则: 标识符由字母、下划...

晓阳
2015/01/05
198
0
深入理解Java中的final关键字

Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用...

longbadx
2014/01/07
141
2
《Java从小白到大牛精简版》之第4章 Java语法基础

《Java从小白到大牛》纸质版已经上架了!! 本章主要为大家介绍Java的一些基本语法,其中包括标识符、关键字、保留字、常量、变量、表达式等内容。 4.1 标识符、关键字和保留字 任何一种计算...

tony关东升
2018/06/26
0
0
JavaSE|Java中的关键字及其他术语

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darlingwood2013/article/details/89351149 JavaSE|Java中的关键字及其他术语 final 关键字 在Java中,final...

叶晚林
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
8
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
14
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3.1K
24
SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
46
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部