zoukankan      html  css  js  c++  java
  • 浅谈String类的种种性质(一)

     1 package testBlog;
     2 
     3 
     4 public class Test {
     5     
     6     public static void main(String[] args) {
     7         String a = "hello";
     8         String b = new String("hello");
     9         System.out.println(a==b);//结果是false
    10         System.out.println(a.equals(b));//结果是true
    11     }
    12 }

    由此可见,在String中,"=="符号比较的实际上是内存地址.由于使用了new,故开辟了新的堆内存空间,所以两个String a和b的内存地址是不一致的.

    因此,在String的比较中,使用equals最合适.

     1 package testBlog;
     2 
     3 
     4 public class Test {
     5     
     6     public static void main(String[] args) {
     7         String str = "hello";
     8         System.out.println("hello".equals(str));//结果是true
     9     }
    10 }

    这里出现了一个很有意思的现象,字符串"hello"直接调用了equals()方法.

    由此可见:字符串常量本质上是一个String类匿名对象.而String a = "hello";这样的语句,实际上是给一个匿名对象赋了一个名字(栈内存)而已.

  • 相关阅读:
    53. Maximum Subarray
    64. Minimum Path Sum
    28. Implement strStr()
    26. Remove Duplicates from Sorted Array
    21. Merge Two Sorted Lists
    14. Longest Common Prefix
    7. Reverse Integer
    412. Fizz Buzz
    linux_修改域名(centos)
    linux_redis常用数据类型操作
  • 原文地址:https://www.cnblogs.com/ssC2H4/p/8126648.html
Copyright © 2011-2022 走看看