zoukankan      html  css  js  c++  java
  • Java中创建String的两种方式差异

    我们知道创建一个String类型的变量一般有以下两种方法:

    String str1 = "abcd";
    String str2 = new String("abcd");

    那么为什么会存在这两种创建方式呢,它们在内存中的表现形式各有什么区别?

    方法1:

    String a = "abcd";
    String b = "abcd";
    
    System.out.println(a == b);      // true
    System.out.println(a.equals(b)); // true

    解析:
    用""创建的a,b两个字符串,==和equals比较返回都为true,这是因为a,b都指向了方法区的同一个字符串。所以,当同样的一个字符串用""重复创建时只在方法区创建一次。

    方法2:

    String c = new String("abcd");
    String d = new String("abcd");
    
    System.out.println(c == d);      // false
    System.out.println(c.equals(d)); // true

    解析:
    用new创建的c,d两个字符串,equals为true很简单因为equals永远比较的是值,而==为false说明两个字符串的引用不一样。用new创建的字符串每次都会在JVM堆中创建,所以c,d都对应堆中的两个不同的字符串。
    关于这两道题中的""和new创建的字符串在内存中的表现形式可以看下图就明白了。

  • 相关阅读:
    jQuery 元素操作
    jQuery 文本属性值
    jQuery 属性操作
    jQuery 效果
    sass入门学习篇(二)
    sass入门学习篇(一)
    CSS3 基础知识[转载minsong的博客]
    js倒计时,秒倒计时,天倒计时
    webstorm快捷键收集【转发】
    placeholder各种浏览器兼容问题
  • 原文地址:https://www.cnblogs.com/rinack/p/9735520.html
Copyright © 2011-2022 走看看