String str="i"与 String str=new String("i")一样吗?

  • 互动问答
  • 2020-02-18 15:13:54
  • 发表评论

    String x = "张三";

    String y = "张三";

    String z = new String("张三");

    System.out.println(x == y); // true

    System.out.println(x == z); // false

    为什么会输出上边的结果呢,String x = "张三" 的方式,Java 虚拟机会将其分配到常量池中,而常量池中没有重复的元素,比如当执行“张三”时,java虚拟机会先在常量池中检索是否已经有“张三”,如果有那么就将“张三”的地址赋给变量,如果没有就创建一个,然后在赋给变量;而 String z = new String(“张三”) 则会被分到堆内存中,即使内容一样还是会创建新的对象。

    本文标题:String str="i"与 String str=new String("i")一样吗?
    本文链接:https://www.shouma.net/post/265241.html
    作者授权:本文由 首码网 发布于 首码网
    版权声明:如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
    上一篇:java 中操作字符串都有哪些类?它们之间有什么区别? 下一篇:如何将字符串反转?

     发表评论:

    最新来访 免费收录
    最新留言