`
geeksun
  • 浏览: 965267 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

String为什么被定义成final类型?

 
阅读更多

String被定义成final类型,这是众人周知。可是为什么要定义成final类型呢?

一个解释是 main()方法的需要,main(String[] args)的参数String[] args如果是非final类,而又有类继承了String类,在运行main()时,传入String[]参数,这时的继承就没什么意义。

还有一个解释是性能的需要,说如果类定义成final,所有的方法都是内联,性能会比非final类提高50%。

还有说是安全性的需要,Java设计出于安全性的考虑,不变的数据对于线程安全是有用的。

 

 



继续讨论见: http://stackoverflow.com/questions/2068804/why-is-string-final-in-java

分享到:
评论

相关推荐

    final修饰符与类型转化

    例如,如果你定义了一个关键算法的方法,并不希望子类改变其行为,就可以将其声明为`final`。 - `final`变量:一旦给`final`变量赋值,就不能再次更改。这包括实例变量和局部变量。对于实例变量,必须在构造器中...

    Java 多线程与并发(6-26)-关键字- final详解.pdf

    * final域为基本类型:final域为基本类型时,访问顺序是:首先访问final域,然后访问非final域。 * final域为引用类型:final域为引用类型时,访问顺序是:首先访问final域,然后访问非final域。 三、final的实现...

    字符串String的定义与使用、字符串String与基本数据类型的相互转换

    2、String 类是 final 类型的类,所以 String 类不能被其他类继承,即没有子类; 字符串String的使用: String 常量 :和别的数据类型不一样,String类型的常量 和 对象一样,也拥有自己的 引用和实体,这些引用和...

    java中final类型等的应用

    使用`new String(byte[] bytes, String charsetName)`方法将字节数组解码为字符串。 #### 2.2 字节序标记(BOM)的作用 - **作用**:字节序标记(BOM)用于标识文件的字节顺序,以便正确地解析文件内容。 - **示例**...

    jdk中String类设计成final的原由

    在Java的JDK中,`String`类被设计为`final`的主要原因在于效率和安全性。首先,让我们深入了解这两个方面。 1. **效率**: - **字符串池**:Java中的`String`类广泛用于存储和操作文本。为了提高性能,Java引入了...

    浅谈为什么Java里面String类是不可变的

    那么,为什么 Java 语言的设计者要把 String 类型设计成不可变对象呢?下面,我们将深入探讨字符串不可变性的原因和优点。 不可变对象的定义 不可变对象指的是对象创建之后,对象的内部状态以及对象的内存指针地址...

    Java中的final关键字

    在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来定义不可变性和唯一性。这个关键字可以应用于变量、方法和类,分别赋予它们不同的特性。以下是对`final`关键字在不同场景下使用的详细介绍: 1....

    Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释.doc

    - 如果要访问方法中的局部变量,则该局部变量必须被声明为final。 2. **final修饰符** - 在Java中,final关键字可以用于修饰变量、方法和类。 - 当用于变量时,表示该变量不可变。 - final局部变量可以在局部...

    Kotlin+变量定义+函数定义+数组+实例

    在Kotlin中,一个Java方法可以被这样定义: Java: ```java public boolean testString(String name) { // ... } ``` Kotlin: ```kotlin fun testString(name: String): Boolean { // ... } ``` 3. 静态变量和...

    final修饰类

    例如,Java中的`String`类就是`final`的,确保其不可被修改且无法有子类来改变其字符串处理逻辑。 **final 修饰方法** `final`修饰的方法不能被子类中的方法覆盖(Override)。这通常用于那些关键的、核心的方法,...

    java中final和static的区别

    3. final 修饰类(但不包括抽象类):该类不能被继承,所以类中的方法默认就是 final 方法(如:String 类)。 4. final 修饰方法(但不包括抽象方法、构造方法):该方法不能被子类覆写,但是该方法可以被子类继承...

    day11【final、权限、内部类】1

    在引用类型变量中,final 关键字可以用于限制变量的指向对象的地址不能被改变,但不影响对象内部的成员变量值的修改。例如: ```java public class FinalDemo2 { public static void main(String[] args) { final...

    Java中的String为什么是不可变的共7页.pdf.z

    2. **实现原理**:`String`类在Java中被声明为`final`,这意味着不能有任何子类。同时,它的`char`数组(用于存储字符串)被声明为私有的,并且没有提供修改数组内容的方法。所有看起来像修改`String`的操作,如`...

    深入了解java 中的String

    在Java中,`String` 类被声明为 `final` 类型,这意味着它不能被继承。这主要是出于两个原因考虑:一是为了确保字符串对象的不可变性,从而可以在整个系统中安全地共享这些对象;二是为了优化性能,由于字符串常被...

    day11【final、权限、内部类】.pdf

    比如,`String`类和`Math`类都是被`final`修饰的,它们提供了不可变的实现。 - **final修饰方法**:被`final`修饰的方法不能被子类重写。这样做可以确保方法的行为不会在子类中被改变,保证方法行为的一致性。 - ...

    static与final的异同

    在Java编程语言中,`static`和`final`都是关键字,它们用于定义不同的特性,但同时也有一些相似之处。下面我们将详细探讨这两个关键字的区别和用法。 首先,`static`关键字是用来声明类级别的变量或方法,这意味着...

    static、final、abstract和interface使用总结

    在Java编程语言中,`static`、`final`、`abstract`和`interface`是四个非常重要的关键字,它们分别代表不同的特性,用于定义类、变量和方法的行为。下面是对这些关键字的详细解释: 1. **static(静态)** - **...

    static、this、super、final的JAVA用法

    final 变量一旦被初始化后不能被修改,final 方法不能被重写,final 类不能被继承,例如: public class FinalTest{ public static void main(String[] args){ final int x = 10; // x = 20; // 不能修改 final ...

    深入解析Java编程中final关键字的作用

    当一个类被声明为final时,这意味着这个类不能被其他类继承。例如: ```java public final class FinalClass {} ``` 这样的设计旨在防止类的扩展,保证类的行为不会被改变。例如,Java中的`String`类就是final...

    定义一个Document类,包含成员变量name,从Document派生出Book类,增加PageCount变量。编写主函数

    - 如果父类的方法被声明为`final`,则不能在子类中重写该方法。 - **示例**:虽然本示例中没有显示方法重写,但在实际开发中,可以根据需求重写Document类中的方法。 ### 4. 主函数的使用 主函数是程序的入口点,...

Global site tag (gtag.js) - Google Analytics