zoukankan      html  css  js  c++  java
  • new String()理解

    public static void main(String[] args){

    String a=new String("ddy");
    String b=new String("ddy");
    System.out.println("a:"+a.hashCode());
    System.out.println("b:"+b.hashCode());
    System.out.println("equals:"+(a.equals(b)));
    System.out.println("a==b:"+(a==b));

    }

    输出为:

    a:99321
    b:99321
    equals:true
    a==b:false

    String a = new String("段丁阳")创建了两个对象,一个是在常量池中,一个是在堆内存中,常量池的为"ddy";堆内存中为new String();而该对象又指向在常量池中的字符串常量。

    而a==b比较的正是new String()的内存地址,a的new String()与b的new String()内存地址显然是不同的,所以a==b返回false

    但是a.hashCode与b.hashCode相等,hashCode并不能代表内存地址

     String a = "aa";与String a = new String("aa");最根本的区别是:
    String a = "aa";创建了一个字符串变量。a 是指向栈中的"aa";
    而String a = new String("aa");创建的是一个对象。a 是指向堆中"aa"的地址。

  • 相关阅读:
    资源与锁
    资源与锁
    Leetcode-Rotate List
    Leetcode-Unique Paths II
    Leetcode-Unique Paths
    Leetcode-Minimum Path Sum
    Leetcode-Sqrt(x)
    Leetcode-Set Matrix Zeroes
    Leetcode-Search a 2D Matrix
    Leetcode-Combinations
  • 原文地址:https://www.cnblogs.com/vincent4code/p/4932623.html
Copyright © 2011-2022 走看看