1、String为什么是final的

作者: 少天真 | 来源:发表于2019-03-28 16:28 被阅读0次

一、首先,我们得明白,final的定义。

1、final类作为java关键词, 可以修饰类、方法和变量,用于表达被它所修饰的内容一旦赋值就不可改变
2、final可修饰的变量可以分为静态变量(static修饰,也称类变量)以及实例变量(成员变量及局部变量)

a、给静态变量赋值有且只有2个时机:声明变量、静态代码块(静态变量赋值图)
b、给成员变量赋值有且只有3个时机:声明变量、非静态初始化代码块、构造器(成员变量赋值图)
c、局部变量只能手动初始化,如果没有初始化,有且只有一次机会进行赋值(局部变量赋值图)。
d、引用变量被final修饰之后,引用地址不变,指向对象的内容是可变的(final修饰引用数据变量图)
静态变量赋值图.png 成员变量赋值图.png 局部变量赋值图.png final修饰引用数据变量.png

3、当一个类被final修饰时,表名该类是不能被子类继承的。
4、父类的final方法是不能够被子类重写的,final方法是可以被重载的
5、当final变量是基本数据及String类型时,如果编译期间知道它的确切值,则编译器会把它当做常量(如下图)

image.png

java是值传递,这点在看有关final参数引用资料中提及了,这个看的有点模糊,以后研究

有关final的深入,还有多线程并发的情况,具体表现为final域重排序规则,暂时这个还没看懂,搁置。

相关文章

  • 第五讲 String,StringBuffer,StringBu

    1.String类型为什么用final修饰? String是典型的Immutable(不可变)类,final修饰意...

  • Java面试指南

    01、String 为什么是 final   1、String 类是一个不可变类,被 final 修改的类不能被继...

  • Java面试-基础问题整理

    1. String类为什么是final的。 答:申明为final的类是不能被继承的,这防止了String类被子类修...

  • 基础知识

    1、String类能不能被继承?为什么?答:不能因为string类是被final修饰的类,final修饰过的类不能...

  • 2021最新Java面试题(基础)

    1、String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继...

  • Java常见面试题

    1.String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继...

  • String、StringBuffer和StringBuilde

    String内部都是用final修饰,不能做改变。 String为什么要设计成final 1.线程安全2.支持字符...

  • 面经笔记

    String为什么是final? 1.安全性:因为final修饰的类是不可被继承和更改的,被final修饰的累的方...

  • 1、String为什么是final的

    一、首先,我们得明白,final的定义。 1、final类作为java关键词, 可以修饰类、方法和变量,用于表达被...

  • Java面试题疑难点

    1. java值传递和引用传递 String为什么是值传递而不是引用传递 答:String是final的

网友评论

    本文标题:1、String为什么是final的

    本文链接:https://www.haomeiwen.com/subject/ueqqbqtx.html