栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

深入理解String

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深入理解String

String类创建了几个对象?
  1. String str = “hello”;
    创建了一个对象
    jvm在编译阶段会判断常量池中是否有“hello”这个常量对象,如果有,str就直接指向这个常量的引用,如果没有就会在常量池中创建这个对象。
  2. String str = new String(“hello”);
    创建了两个对象
    jvm编译阶段会判断常量池中是否有“hello”这个常量对象,进而判断是否创建常量对象,然后运行阶段通过new关键字在java 堆上开辟一块儿空间来创建String 对象。
  3. String str = “hello” + “world”;
    创建了一个对象
    jvm编译阶段通过编译器优化后,会把字符串常量直接合并成“helloworld”,所以在常量池中只创建了一个对象。
  4. 如果String s1 = “hello”;
    String s2 = s1 + “world”;创建了几个对象呢?又是哪几个对象呢?
    创建了3个对象,变量+常量底层会先new 一个StringBuilder对象,调用其append方法进行字符串拼接,拼接完以后会返回一个新的对象“helloworld”。
    “hello”,StringBuilder对象,“helloworld”
  5. String str = “hello” + new String(“world”);
    创建了五个对象
    常量池对象"hello",“world”,new String(“world”)创建堆对象,还有一个堆对象“helloworld”,还有一个StringBuilder对象。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014845.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号