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

Java 基础知识 - String 为什么是不可改变的

    博客分类:
  • Java
阅读更多

       String字符串不可改变,查阅了很多资料,本人感觉《Java经典实例(第二版)》.达尔文著书中说的很好,在这本书中对String字符串不可改变的问题做如下论述:

       字符串的不变性是Java虚拟机的一个基本特征。Java是一种基于多线程的语言,并且还要提供良好的安全性。Java的Applet被禁止访问很多的本地资源。假设这样一种情况:线程A启动了线程B。线程A创建了一个包含文件名的字符串,命名为s,同时,为该字符串另设引用s2。这时,将s传给需要权限的某种方法。假如已经载入该方法(例如:它存在于Java的Applet运行环境中),它一定会使用Java虚拟机的SecurityManager对象。由SecurityManager对象认可对指定文件的访问,如果获得认可,该方法就可以通过I/O系统打开文件。就在这两项工作之间的瞬间,线程B修改了s2所引用的字符串,使其引用一个系统文件。如果是这样的话,那么Java的整个安全机制就成了天方夜谭了。实事上,这是无法做到的。虽然你可以分配任何新的String对象引用给s,但对s所引用的字符串却没有任何影响。此外,如果s只是该String对象的唯一引用,那么这将有利于垃圾回收。

 

分享到:
评论

相关推荐

    java基础知识-java基础知识

    Java基础知识是编程学习的重要组成部分,尤其是对于Java语言来说。Java是一种广泛使用的面向对象的编程语言,以其平台独立性、强大的库支持和高效性能著称。本篇文章将深入探讨Java基础知识中的关键概念,包括字符串...

    Java核心技术-卷1(基础知识-原书第10版)

    《Java核心技术-卷1(基础知识-原书第10版)》是一本深入浅出的Java编程指南,专为Java编程爱好者和初学者设计。这本书详细介绍了Java语言的基础概念和核心特性,帮助读者掌握Java编程的基本技能。以下是该书涵盖的...

    java基础String类选择题练习题

    - **知识点**:解释为什么`String`类是不可变的(immutable),以及不可变性带来的好处。 - **例题**:选择题中可能会问到关于字符串池的概念以及如何利用这一点来提高程序性能。 #### 2. 字符串比较 - **知识点**...

    Java基础知识-复习资料(重点讲解).pdf

    【Java基础知识概述】 Java是一种广泛使用的面向对象的编程语言,以其强类型、平台无关性和安全性闻名。本复习资料主要涵盖了Java的基础知识,包括语言特性、数据类型、变量、运算符以及访问控制等核心概念。 1. *...

    lesson03-01 Java类基础知识--Java类结构.ppt

    Java 类基础知识是学习Java编程的核心内容,而Java类结构则是构建程序的基础框架。在这个主题中,我们将深入探讨Java类的各个重要方面。 首先,我们来理解什么是Java类。类是面向对象编程的基本构造块,它定义了一...

    java基础知识点汇总

    这个 String 类提供了数值不可改变的字符串。而这个StringBuffer 类提供的字符串进行修改。 ### 5. 运行时异常与一般异常的区别 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中...

    java总结大全--包括所有java基础知识点.pdf

    - `String`对象在Java中是不可变的,创建`String`对象时,其内容一旦确定就不能改变。 3. **引用传递**: - 在Java中,方法参数传递是按值传递的,但对于对象引用,传递的是对象的引用地址而不是对象本身。因此,...

    JAVA基础知识点(全面,基础)

    综上所述,Java基础知识点包括String类的使用、接口与继承的概念、I/O流的操作以及反射的应用。掌握这些基础知识是成为一名合格Java开发者的前提,也是进一步学习Java高级特性和框架的基础。通过深入理解和实践,...

    Java基础知识点 - 内容比较全面

    下面将详细讲解标题和描述中提及的一些核心Java基础知识。 1. **Java中的引用概念**:在Java中,引用是对象的一个指针,它指向内存中的对象实例。有强引用、软引用、弱引用和虚引用四种类型,分别对应不同的内存...

    java基础总结-经典

    ### Java基础总结——核心知识点详解 #### 一、Java概述 - **起源与发展**:Java 语言最初由 Sun 公司的 James Gosling 等人在 1991 年开发,当时命名为 Oak,目的是为了控制有线电视交换盒和个人数字助理(PDA)等...

    2021 - JAVA秋招基础知识点面试题

    标题:“2021 - JAVA秋招基础知识点面试题”的知识点总结 1. JDK与JRE的区别: JDK是Java开发工具包,它包含了JRE和一些其他工具,如编译器javac和调试工具等。JRE是Java运行环境,仅用于运行Java程序。简单来说,...

    JAVA基础知识精华总结.rar

    5. **字符串处理**:String类是Java中的特殊类,它不可变且拥有丰富的字符串操作方法。理解字符串池和字符串连接的性能影响是必要的。 6. **输入/输出流**:Java的I/O系统支持处理文件、网络通信和其他数据源。...

    JAVA基础知识问答大全

    ### JAVA基础知识问答详解 #### 1. final, finally, finalize的区别 在Java中,`final`, `finally`, 和 `finalize` 这三个关键字虽然只相差一个字母,但它们的用途和作用却大相径庭。 - **final**:此关键字主要...

    JAVA学习基础知识

    String类是Java中处理文本的重要类,它是不可变的。String类提供了丰富的操作字符串的方法。 9. **数组** 数组是一种存储固定数量同类型元素的数据结构,Java支持一维、二维及多维数组。 10. **集合框架** Java...

    完整版Java全套入门培训课件 Java基础 02-Java基础语法1(共35页).rar

    这份“完整版Java全套入门培训课件 Java基础 02-Java基础语法1(共35页).rar”文件是为初学者设计的,旨在帮助他们掌握Java编程的基础知识。以下是对Java基础语法的详细讲解: 1. **Java简介**: - Java是由Sun ...

    Java类库复习——java.lang.String

    其内部使用了字符数组来存储字符串内容,而且为了实现不可变性,所有改变字符串的操作都会返回一个新的`String`对象。在`String`的源码中,可以学习到如何设计一个高效且安全的不可变类。 总的来说,`String`类是...

    java基础知识面试题

    本文将围绕 Java 基础知识面试题展开,涵盖 String、StringBuffer、StringBuilder 的区别、==和 equals 的区别、String 常量池等知识点。 一、String、StringBuffer、StringBuilder 的区别 String、StringBuffer、...

    《剑指offer》Java-String、StringBuffer 和 StringBuilder 的区别.pdf

    了解这些基础知识对于优化Java程序性能至关重要,特别是在处理大量字符串拼接操作时。如果在多线程环境下,应优先考虑使用StringBuffer,而在单线程环境中,StringBuilder通常是更好的选择,因为它具有更高的性能。...

Global site tag (gtag.js) - Google Analytics