equals和==的区别,百度查到的结果大都是:equals比较的是值,==比较的是引用地址。

    String str1 = "abc";
    String str2 = "abc";
    System.out.println(str1.equals(str2));     //true
    System.out.println(str1==str2);            //true

    String str3 = new String("abc");
    String str4 = new String("abc");
    System.out.println(str3.equals(str4));    //true
    System.out.println(str3==str4);           //false

str1和str2都存储在常量池中,所以他们的地址是相同的。

除字符串String使用常量池外,还有j基本数据类型使用了常量池,另外基本数据类型的包装类Byte、Short、Integer、Long、Character、Boolean也使用了常量池,但仅限于小于128的值。

    int i1 = 1;
    int i2 = 1;
    System.out.println(i1==i2);            //true

    int i3 = 128;
    int i4 = 128;
    System.out.println(i3==i4);            //true

    Integer int1 = 1;
    Integer int2 = 1;
    System.out.println(int1==int2);        //true

    Integer int3 = 128;
    Integer int4 = 128;
    System.out.println(int3==int4);        //false

【java】由equals和==的区别引出的常量池知识的更多相关文章

  1. java中equals和==的区别 (转)

    java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...

  2. 【转】Java中equals和==的区别

    [转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...

  3. Java内存分配之堆、栈和常量池

    Java内存分配主要包括以下几个区域: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 3. 堆:存放用new产生的数据 4. 静 ...

  4. Java内存分配之堆、栈和常量池(转)

    摘录自http://www.cnblogs.com/SaraMoring/p/5687466.html Java内存分配主要包括以下几个区域: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类 ...

  5. Java笔记——equals和==的区别

    摔在这里几次,还是记下来吧. 原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html -------------- ...

  6. java笔记---equals和==的区别

    摔在这里几次,还是记下来吧.原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html --------------- ...

  7. Java 中 Equals和==的区别(转)

    另外一篇参考: https://blog.csdn.net/striverli/article/details/52997927 在谈论equals和==的区别前,我们先简单介绍一下JVM中内存分配的 ...

  8. Java中equals和==的区别?为什么重写equals方法后,一定要重写hashCode方法?

    首先明确一点,equals是方法,==是操作符. 1. 如果比较的是基本数据类型: 只讨论==,因为equals是不存在的,因为java中基本数据类型不能调用method的. 2. 如果比较的是引用类 ...

  9. java中equals和==的区别详解

    java中的数据类型,可分为两类: 1.基本数据类型. byte,short,char,int,long,float,double,boolean这八大原始数据类型他们之间的比较,使用“==”,比较的 ...

随机推荐

  1. Web service project中导入的库JAX-RS(Java EE 6.0新产品)

    JAX-RS是JAVA EE6 引入的一个新技术. JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(R ...

  2. linux su和sudo命令的区别(转)

    一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...

  3. AndroidManifest.xml相关知识

    AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest  ...

  4. DedeCMS让{dede:list}标签支持weight权重排序

    1.找到"根目录\include\arc.listview.class.php"文件. 2.修改代码:在文件第727行处添加按weight排序判断代码(红色部分为新添加代码). / ...

  5. Aqua Data Studio中文乱码

    使用Aqua Data Studio 查询数据时,如果表中的数据有中文时,会显示乱码,如下图: 解决方法很简单,只能更改字体即可,步骤如下: 更改字体后,显示的结果如下:

  6. jquery优化01

    查找: children:     find(selector), children(selector): parent:       parent(), parents(selector), clo ...

  7. 什么是C#编程语言明明白白学C#

    什么是C#编程语言明明白白学C# C#是微软公司发布的一门面向对象的编程语言.它作为一门语言,则具备语言的四个要素.并且,它符合编程语言的四个要素的特性.同时,它作为面向对象的编程语言,可以解决各种复 ...

  8. Linux基础命令(1)

    使用Ctr + Alt + F1(2,3,4,5,6)进入终端. 使用Ctr + Alt + F7回到界面. date 显示系统日期 cal 2015 显示2015年的日历表 reboot 重启 sh ...

  9. BZOJ4158 : [POI2007]Railway

    论文题. 随便取个关键点,求出最短路树. 求出所有关键点组成的虚树,将两端都在虚树上的边保留. 对剩下的边求出最小生成树即可得到一组可行解. #include<cstdio> #inclu ...

  10. (转)Linq学习笔记

    写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...