Java中 == 和 equalse()
来源:互联网 发布:js window.scrolltop 编辑:程序博客网 时间:2024/06/03 21:03
==和equals()的区别
1. Java中数据类型有两种:基本数据类型和引用数据类型
基本数据类型的值存储在内存的栈中;引用数据类型存储的是对象的地址,该地址指向的内存空间存储的才是我们需要的内容,比如字符串,对象等存储在内存的堆中。
2. 关于==:
比较的是内存地址。当==比较的是基本数据类型变量时,判断它们是否来自同一个内存地址,由于基本类型变量值是存储在栈里面的,当两个变量有同一个值时,其实它们只用到了一个内存空间,所以比较的结果是true。
当==比较的是引用数据类型变量时,判断的也是内存地址,如果两个引用的地址信息相同,指向的就是同一个对象,得到的结果就是true。
例如:
例子1:
String s1 = "123";
String s2 = "123";
s1==s2 值为true
例子2:
String s1 = "123";
String s2 = new String("123");
s1==s2 的结果是false
例子1中:java中有字符串缓冲池的概念,通俗的说,就是程序在运行的时候会创建一个字符串缓冲池,里面放了字符串对象,在声明String变量的时候,程序首先会在这个String缓冲池中寻找相同的对象,如果有相同对象,就将已有的地址赋值给引用;如果没有就创建新的内存地址,因此缓冲池里原来有的字符串的那个变量和新申请的变量,其实指向的是同一个内存空间。因此例子1里面s1和s2用到的都是同一个内存空间的“123”。所以此时==的结果是true。
例子2中:由于s2用new 关键字重写申请了空间,没有用到缓冲池里的原有的变量,所以它们内存地址不相同,所以结果为false。
3.关于equalse()
equalse()方法是Object类的基本方法之一,在Object类中的equalse()方法是对两个对象的地址值进行比较的,但是当String、Math、Integer等封装类在使用equalse()方法是已经覆盖了Object类的equalse()方法,所以每个类都有自己的equalse()方法,是比较两个对象的内容是否一样。所以上面的例子如果换成是equalse()比较的话,结果都是true。
1. Java中数据类型有两种:基本数据类型和引用数据类型
基本数据类型的值存储在内存的栈中;引用数据类型存储的是对象的地址,该地址指向的内存空间存储的才是我们需要的内容,比如字符串,对象等存储在内存的堆中。
2. 关于==:
比较的是内存地址。当==比较的是基本数据类型变量时,判断它们是否来自同一个内存地址,由于基本类型变量值是存储在栈里面的,当两个变量有同一个值时,其实它们只用到了一个内存空间,所以比较的结果是true。
当==比较的是引用数据类型变量时,判断的也是内存地址,如果两个引用的地址信息相同,指向的就是同一个对象,得到的结果就是true。
例如:
例子1:
String s1 = "123";
String s2 = "123";
s1==s2 值为true
例子2:
String s1 = "123";
String s2 = new String("123");
s1==s2 的结果是false
例子1中:java中有字符串缓冲池的概念,通俗的说,就是程序在运行的时候会创建一个字符串缓冲池,里面放了字符串对象,在声明String变量的时候,程序首先会在这个String缓冲池中寻找相同的对象,如果有相同对象,就将已有的地址赋值给引用;如果没有就创建新的内存地址,因此缓冲池里原来有的字符串的那个变量和新申请的变量,其实指向的是同一个内存空间。因此例子1里面s1和s2用到的都是同一个内存空间的“123”。所以此时==的结果是true。
例子2中:由于s2用new 关键字重写申请了空间,没有用到缓冲池里的原有的变量,所以它们内存地址不相同,所以结果为false。
3.关于equalse()
equalse()方法是Object类的基本方法之一,在Object类中的equalse()方法是对两个对象的地址值进行比较的,但是当String、Math、Integer等封装类在使用equalse()方法是已经覆盖了Object类的equalse()方法,所以每个类都有自己的equalse()方法,是比较两个对象的内容是否一样。所以上面的例子如果换成是equalse()比较的话,结果都是true。
0 0
- Java中 == 和 equalse()
- 集合中hashcode()和equalse()、Comparable、队列
- hashcode 和equalse
- java程序的加载过程和equalse比较11
- HashMap 内部 equalse 和hashcode 内部实现, 实际上是调用Key Value的 内部的equalse hashcode
- 乱写 hashcode equalse
- equalse函数的作用
- 重写equalse()重写hashCode()
- Java中equals()方法和==的区别
- Java中“==”和equal()的区别
- java中"=="和equals()的区别
- Java中equals()方法和“==”的区别
- java中“==”和“equal()”的区别
- Java中equals和==的区别 (详解)
- java中==和equals()方法的区别
- Java中equals()和==的区别
- (笔记)java中equals和==的区别
- Java中equals()和==号的区别
- 有关安全以及其他常用工具的词语解释
- 2.5其实他们都是“图”
- SimpleLink MCU SDK用户指南(1)
- 关于main(int argc, char* argv[])的理解
- 一个程序员的所思所想
- Java中 == 和 equalse()
- 第16章 多线程-1
- BeanUtils.copyProperties()使用
- Android UI绘制流程(二)
- 实验四-dpcm编码
- hihoCoder 1066 : 无间道之并查集
- SELECT语句语法格式
- 09 WebGL通过uniform变量修改点的颜色
- 指针与数组