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及以后,方法区又从堆内存中剥离出来了,但实现方式与之前的永久代不同,这时的方法区被叫做元空间,常量池就存储在元空间。

  • 相关阅读:
    数据库范式
    SQL基础
    JAVA流
    response.getWriter()和jsp中的out对象的区别
    JAVA排序(冒泡,直接选择,反转)
    Collections类常用方法
    JAVA集合
    JAVA面向对象(重载,重写 常用的 toString/equals)
    Java面向对象一(封装 继承 多态 类 对象 方法)
    JAVA基础
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/14890843.html
Copyright © 2011-2022 走看看