【java】由equals和==的区别引出的常量池知识
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和==的区别引出的常量池知识的更多相关文章
- java中equals和==的区别 (转)
java中equals和==的区别 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...
- 【转】Java中equals和==的区别
[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...
- Java内存分配之堆、栈和常量池
Java内存分配主要包括以下几个区域: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 3. 堆:存放用new产生的数据 4. 静 ...
- Java内存分配之堆、栈和常量池(转)
摘录自http://www.cnblogs.com/SaraMoring/p/5687466.html Java内存分配主要包括以下几个区域: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类 ...
- Java笔记——equals和==的区别
摔在这里几次,还是记下来吧. 原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html -------------- ...
- java笔记---equals和==的区别
摔在这里几次,还是记下来吧.原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html --------------- ...
- Java 中 Equals和==的区别(转)
另外一篇参考: https://blog.csdn.net/striverli/article/details/52997927 在谈论equals和==的区别前,我们先简单介绍一下JVM中内存分配的 ...
- Java中equals和==的区别?为什么重写equals方法后,一定要重写hashCode方法?
首先明确一点,equals是方法,==是操作符. 1. 如果比较的是基本数据类型: 只讨论==,因为equals是不存在的,因为java中基本数据类型不能调用method的. 2. 如果比较的是引用类 ...
- java中equals和==的区别详解
java中的数据类型,可分为两类: 1.基本数据类型. byte,short,char,int,long,float,double,boolean这八大原始数据类型他们之间的比较,使用“==”,比较的 ...
随机推荐
- C调Lua
转自:http://foredoomed.org/blog/2013/12/07/integrate-c-with-lua/ 我们在用C写程序的时候,很多情况下需要用到List,Map等集合,但是C是 ...
- 程序员的恶性循环:加班->没空学习->老是写同等水平代码->无法提升代码质量->老是出BUG->老是需要修改->加班->...
程序员的恶性循环:加班->没空学习->老是写同等水平代码->无法提升代码质量->老是出BUG->老是需要修改->加班->...
- Linux常用命令_(进程管理)
进程管理:ps.top.kill 指令名称:ps语法:ps [选项]-a显示所有终端机下执行的程序.-e显示所有程序.-f显示UID,PPIP,C与STIME栏位.功能描述:查看系统中运行的进程.范例 ...
- c#日记
//返回一个指定类型的对象,该对象的值等于指定对象的值 object obj1 = Convert.ChangeType(dw[findRowIndex][cna ...
- SU suwind命令学习
- .net 日期格式转换
DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25dt.ToFileTime().ToString();//127756416 ...
- POJ2226 Muddy Fields(二分图最小点覆盖集)
题目给张R×C的地图,地图上*表示泥地..表示草地,问最少要几块宽1长任意木板才能盖住所有泥地,木板可以重合但不能盖住草地. 把所有行和列连续的泥地(可以放一块木板铺满的)看作点且行和列连续泥地分别作 ...
- ubuntu桌面进不去,我跪了
ubuntu12.04 输入密码正确,但仍然跳回到登陆界面,实在受不了啊! 不知道bug再哪里,但是有个方法真是屡试不爽啊.. ctrl+alt+f1切换到字符界面 /home/xxx/.Xautho ...
- ural 1221. Malevich Strikes Back!
1221. Malevich Strikes Back! Time limit: 1.0 secondMemory limit: 64 MB After the greatest success of ...
- BZOJ1175 : [Balkan2007]The stairways of Saharna
杨氏图表,维护若干个单调不下降队列. 每次新加入一个数时,先考虑第一个队列: 如果可以放在最后,则放在最后. 否则找到最小的可以替换的替换掉,再将替换的数放入第二个队列,以此类推. 最后$ans_i= ...