`
zhaoshengxuan108
  • 浏览: 26000 次
  • 性别: 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基础知识点总结.docx

    无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的进步!!Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 ...

    JAVA面试基础知识题

    25、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递...

    Java面试题-基础和集合.docx

    其中,讨论了Java为什么不支持多继承、==和equals的区别、方法重载的条件、String为何设计成不可变、包装类的应用场景、Integer的高速缓存机制等多个方面。 通过面试题的逐一解答,读者可以了解到Java语言的一些...

    动力节点_Java基础视频教程93_String对象是不可变

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础...适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴,配套资料下载:http://www.bjpowernode.com/?csdn

    java基础知识下载

    //指定变量str1为String型,且赋初值为Hi c = ' A ' ; //给字符型变量c赋值'A' str = " bye " ; //给字符串变量str赋值"bye" x = 12 ; //给整型变量x赋值为12 y = 300; //给整型变量y赋值为300 } }

    超市收银程序--(JAVA课程设计-2011).doc

    其目的在于通过实践加深学生对面向对象程序" "设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方" "法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能" "力...

    AIC的Java课程1-6章

    大家看看他们教些什么内容吧 <br>他们学校的网址http://www.aicsws-sjtu.com/<br><br>此内容是Java第1到第六章的PPT,希望大家喜欢 <br>如果大家觉得好我继续发 <br>课程定位 “Java程序”课程覆盖SCJP...

    最新超市收银程序--(java课程设计-).doc

    其目的在于通过实践加深学生对面向对象程序" "设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方" "法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能" "力...

    新版Android开发教程.rar

    � A ndroid 在设计初期就考虑了与现其有业务的融合,改变以往从计算机为主改成从手机使用为导向。新 生应用如:G oogle 地图及其衍生应用、 GMail 、 GTalk 等。 � GPS 卫星导航功能,手机照相, MP3 ,蓝芽等均...

    java学习笔记 初学者必读

    2. 一•基础知识 2-4 2.1. 配置环境 2-4 2.2. Java中基本概念 2-5 3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}”、“ ” 3-5 3.3. 标识符 3-5 3.4. 数据类型 3-6 3.5. ...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    毕业设计电商网站源码-JAVA-:JAVA-

    毕业设计电商网站源码 推荐几个比较实用的阿里云服务,按需选择:1. 、2. 、3. 、4. (企业官网、电商网站,多种可供选择模板,代金券...String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?....

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    Java语言基础下载

    不可拆分的空格 431 HTML表格 439 表格 441 HTML列表 461 HTML图像 469 Img标签和src属性 469 HTML背景 475 内容总结 478 独立实践 479 第二十四章:HTML进阶 480 学习目标 480 知识要点 481 表单 481 HTML框架 488 ...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    为什么要重载? 168 7.5.3 给汽车加个重载的方法 169 7.5.4 测试一下 169 7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数...

    corejavaNoteBook

    2. 一•基础知识 2-4 2.1. 配置环境 2-4 2.2. Java中基本概念 2-5 3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}”、“ ” 3-5 3.3. 标识符 3-5 3.4. 数据类型 3-6 3.5. ...

    java面试笔试题大汇总

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时...

    java 面试常问的问题 如何回答

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

Global site tag (gtag.js) - Google Analytics