zoukankan      html  css  js  c++  java
  • Java面试题(三):==和equals比较

    1. ==和equals比较

    ==对比的是栈中的值,是判断两个变量或者实例是不是指向同一个内存空间

    而equals是判断两个变量或者实例指向同一个内存空间的值是不是相同

    object中equals中默认也是采用==,通常会重写

    object:

    String:

    从上面代码可以看出,String类中被复写的equals()方法其实是比较两个字符串的内容。

    public class StringDemo {
        public static void main(String[] args) {
            String str1 = "Hello";
            String str2 = new String("Hello");
            String str3 = str2; //引用传递
            
            System.out.println(str1 == str2); //false
            System.out.println(str1 == str3); //false
            System.out.println(str2 == str3); //true
            System.out.println(str1.equals(str2)); //true
            System.out.println(str1.equals(str3)); //true
            System.out.println(str2.equals(str3)); //true
        }
    }

    str1 == str2,因为new String("Hello")是重新开辟了一个地址,和str1地址不同,所以结果为false。

    基本数据类型存放位置有所改动:

    JDK1.6及以前,常量池在方法区,这时的方法区也叫做永久代;
    JDK1.7的时候,方法区合并到了堆内存中,这时的常量池也可以说是在堆内存中;
    JDK1.8及以后,方法区又从堆内存中剥离出来了,但实现方式与之前的永久代不同,这时的方法区被叫做元空间,常量池就存储在元空间。

  • 相关阅读:
    leetcode 18 4Sum
    leetcode 71 Simplify Path
    leetcode 10 Regular Expression Matching
    leetcode 30 Substring with Concatenation of All Words
    leetcode 355 Design Twitte
    leetcode LRU Cache
    leetcode 3Sum
    leetcode Letter Combinations of a Phone Number
    leetcode Remove Nth Node From End of List
    leetcode Valid Parentheses
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/14890843.html
Copyright © 2011-2022 走看看