`
109735215
  • 浏览: 33152 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【JAVA菜鸟的扎实功底进行时】(二) String s = new String("xyz") 创建了几个String Object?

 
阅读更多

String s = new String("xyz") 创建了几个String Object?

String s = new String("xyz") 创建了几个String Object?

两个!

"xyz "作为一个常量字符串首先被创建,它被保存在“串池”中。所谓串池,简单讲就是从程序运行开始,你创建的所有常量字符串被统一保存的地方。在串池中已经存在 "xyz "这个串的情况下,如果你需要一个内容相同的串,你不需要再次创建一个,而是直接用这个就可以,这样当然是为了节省空间。注意,一个字符串是无法被修改的,所以在程序的不同地方用不同变量引用同一个常量串没有任何危险,因为你只能读取它而不能修改它。
当然,使用new String也创建了一个对象, "xyz "作为传入构造方法的实际参数,其含义就是:我要创建一个串,它的内容和串池中的 "xyz "内容一致!

首先你要理解constant pool, 这是一个特殊的共享区域,literate, Class这些可以在内存中共享的不经常改变的东西,都可以放在这里。 如果你用了String s = new String( "xyz "); 那么,会有两个String被创建,一个是你的Class被CLassLoader加载时,你的 "xyz "被作为常量读入,在constant pool里创建了一个共享的 "xyz " 然后,当调用到new String( "xyz ")的时候,会在heap里创建这个new String( "xyz ");

但是如果你把String s = new String( "xyz ").intern(); 那么具体过程变成,现在heap里创建一个String, 然后调用intern()方法,发现constant pool里存在 'xyz ',然后就会返回constant pool内对象的引用,稍后heap里的就not reachable了,会被gc,最终VM里只有一个 "xyz

所以一个在heap中,一个在String常量池

分享到:
评论

相关推荐

    java菜鸟教程_JAVA菜鸟教程_

    【Java菜鸟教程】是针对初学者精心编写的教程,旨在帮助新手快速掌握Java编程语言的基础知识。本教程全面覆盖了Java的核心概念和技术,是学习Java编程的理想起点。 首先,Java是一种面向对象的编程语言,由Sun ...

    Java菜鸟专用很好

    "Java菜鸟专用很好"这个标题暗示了Java是适合初学者入门的语言,而描述中的“菜鸟一用就会”进一步强调了其易于理解和学习的特性。 Java语言的发展历史始于1991年,由James Gosling领导的Green小组为数字家电开发了...

    runoob菜鸟教程的java教程

    Java编程语言是一种高级编程语言,由Sun Microsystems公司(现为...菜鸟教程中的Java教程是一个很好的学习资源,它从基础知识讲起,逐步深入,对于初学者而言,通过实例和实践来掌握Java编程是一条有效的学习路径。

    从Java菜鸟到专家的资料

    这份名为“从Java菜鸟到专家的资料”的压缩包文件包含了丰富的学习资源,旨在帮助初学者逐步成长为Java领域的专家。以下是对各个文件的详细解读: 1. **J2EE研究文集.chm**:这个文件专注于Java企业级应用开发,...

    java菜鸟文件.........

    以下是一些关于"java菜鸟文件"中的核心知识点,这些都是Java初学者应该掌握的基础概念和原则: 1. **Java语言特性**:Java是一种面向对象的编程语言,它具有平台独立性(通过JVM运行)、自动内存管理(垃圾回收机制...

    JAVA菜鸟面试题库

    根据给定文件的信息,我们可以提炼出以下几个核心知识点: ### 一、JAVA面试题库的特点 - **内容选择性**:该题库旨在减轻面试者的负担,因此剔除了过时的知识点以及那些出现频率较低的问题。 - **答题策略**:...

    JAVA菜鸟级入门教程.pdf

    JAVA菜鸟级入门教程

    JAVA初学者笔记 使用JAVA理解逻辑基础-菜鸟入门(简单易懂)

    【JAVA初学者笔记:理解逻辑基础】 在编程领域,Java是一种广泛应用的高级编程语言,尤其适合初学者。本文将从基础出发,帮助你理解和掌握Java编程的基本概念。 首先,了解什么是程序。程序是一系列有序指令的集合...

    java 正则表达式大全 菜鸟也能玩转

    ### Java正则表达式大全:菜鸟也能玩转 在Java编程语言中,正则表达式是一种强大的工具,用于处理字符串的搜索、替换等操作。它能够帮助开发者更加灵活地进行文本处理工作。本文将深入介绍Java中的正则表达式基础...

    Java培训教程 菜鸟到高手

    "Java培训教程 菜鸟到高手"是一套旨在帮助初学者全面掌握Java编程技能的教程。这个教程的目标是通过系统性的学习,将新手逐步引领至高级开发者水平。 首先,Java基础知识是学习的起点。包括Java的历史、特性以及为...

    java菜鸟学习第一步-java基础语法

    本文将从Java的起源、特点、文件说明、语法等方面对Java基础语法进行详细介绍。 Java的起源 Java语言的前身是Oak语言,由Sun公司开发,目的是为家用电子产品开发一个分布式系统。起初,开发团队计划使用C++语言,...

    java菜鸟教程

    为了编写和运行Java程序,通常需要以下几个步骤:安装Java开发工具包(JDK),配置环境变量(例如JAVA_HOME和PATH),以及选择合适的集成开发环境(IDE),如IntelliJ IDEA、Eclipse或NetBeans。这些IDE提供了代码...

    Java菜鸟进阶宝典

    【Java菜鸟进阶宝典】是一份专为Java初学者准备的综合学习资源,涵盖了从基础知识到高级技术的广泛内容,旨在帮助新手快速提升技能,成为熟练的Java开发者。这份资料包包含了多个主题,覆盖了Java开发的核心领域,如...

    WPF Image Base64String 互转 Demo

    它将每3个8位字节的数据转化为4个6位的字节,并使用64个字符(包含大小写字母、数字及两个特殊符号+和/)来表示这6位的值,最后可能还需要添加一个或多个等于号(=)作为填充。 在WPF中,Image对象是用于显示图像的...

    java 菜鸟快递面试题 java 菜鸟快递面试题

    java 菜鸟快递面试题

    java 发送带模板的邮件工具类

    在上述代码中,我们首先设置SMTP服务器的属性,然后创建一个`Session`对象以进行身份验证。接着,我们构建`MimeMessage`对象,并填充发件人、收件人、主题等信息。关键步骤是使用`replaceTemplateVariables`方法替换...

    [网盘]java程序员由菜鸟到笨鸟.pdf

    ### Java程序员成长之路——从菜鸟到笨鸟 #### 一、引言 《Java程序员由菜鸟到笨鸟》是一本由曹胜欢编写的书籍,旨在帮助初学者掌握Java编程的基础知识,并逐步进阶至更高级的应用场景。本书不仅适合初学者作为...

    Java菜鸟入门手册

    ### Java菜鸟入门手册知识点概述 #### 一、Java基础知识 1. **Java环境配置**: - **Windows环境下的配置**:安装Java Development Kit (JDK) 后,需要设置环境变量,包括`JAVA_HOME`、`Path`等,确保命令行工具...

    Java 菜鸟 成长日记

    本文将基于《Java 菜鸟 成长日记》中提到的知识点,详细阐述Java Web开发中关于Servlet的核心概念、生命周期、容器以及实例化和初始化的过程。 首先,Servlet是一种Java类,它继承自httpServlet类,用于在服务器端...

    GridView菜鸟级使用总结

    ### GridView菜鸟级使用总结 #### 一、简介 在ASP.NET Web开发中,`GridView` 控件是非常常用的一个数据展示控件,它可以帮助开发者轻松地将数据库中的数据以表格的形式展示出来。对于初学者而言,掌握`GridView`...

Global site tag (gtag.js) - Google Analytics