内存级分析,基本数据类型,引用数据类型 比较是否相等
来源:互联网 发布:如何看端口是否打开 编辑:程序博客网 时间:2024/05/17 00:55
基本数据类型,引用数据类型 比较是否相等
int a = 50; int b= 50; Double c = 200.0; Double d = 200.0; Integer e = 10; Integer f = 10; Integer g = 200; Integer h = 200; int y = 200; String i = "abc"; String j = "a"+ "bc"; String k = new String ("abc"); String l = "a"; String m = "bc"; String n = l+m; System.out.println("a=b? 答案是 "+(a==b)); System.out.println("c=d? 答案是 "+(c==d)); System.out.println("e=f? 答案是 "+(e==f)); System.out.println("g=h? 答案是 "+(g==h)); System.out.println("g=y? 答案是 "+(g==y)); System.out.println("i=j? 答案是 "+(i==j)); System.out.println("i=k? 答案是 "+(i==k)); System.out.println("i=n? 答案是 "+(i==n));
代码亲测,结果如下:
a=b? 答案是 truec=d? 答案是 falsee=f? 答案是 trueg=h? 答案是 falseg=y? 答案是 truei=j? 答案是 truei=k? 答案是 false
i=n? 答案是 false
见解——1.基本数据类型见的比较:
1、 基本数据类型举例 int 如上: 内存给 a 的10在内存栈中分配一个内存空间, 再给 b 的 10 在内存栈中分配一个内存空间。比较时拿出a.b 的地址寻找到数值,直接比较数值大小。
2、Double 数据类型(注意大写),在内存堆中,分别分配内存空间存储200,在内存栈中分别存储地址指针。非基本数据类型,比较时比较内存地址,故为false。
3、Integer 数据类型, 再分配内存地址前执行一个算法(暂时这么理解),-128—127 之间的数值直接存在常量池中,e 在堆内存开辟一个新的内存空间, 调用常量池中存放的10 的内存地址,将 10 存放在新开辟的内存空间中, f 发现常量池中已经有了 10,且 已经被 e 引用过了,直接指向 e ,故 e 和 f 内存地址相同,故比较结果为:true。
4、 Integer 数据类型, 再分配内存地址前执行一个算法(暂时这么理解),-128—127 之间的数值直接存在常量池中,超过了,直接在内存堆中 new 一个新的内存地址,存放数据。g =200, 直接在内存堆中分配新的地址,h =200 同理, 比较时比较内存地址,由于在内存堆中开辟新的内存空间,故内存栈中存的内存地址一定不同,非基本数据类型,比较时比较内存地址,故为false。
5、h和y 的比较实际上是比较的数值大小,在比较时,对 Integer 进行 拆箱操作(Integer.valueOf()),取出 Integer 的数值然后进行比较。
6、String 自动数据存放在常量池中,执行i ,j 比较时,i = ”abc“,字符串”abc“加载到常量池中,j = "a"+"bc",java编译器直接执行操作,实际程序操作的是 j = "abc",常量池中
”abc “已经被 i 引用过, j 发现"abc"已经被 i 引用过了,就直接指向 i ,故 true。
7、i 引用了 常量池中的 "abc",在内存堆中存放, String k = new String ("abc");执行 new 这一操作,在内存堆中另外开辟一个内存空间,来存放字符串“abc”,不会在常量池中比较是否被引用过。 故 i 的内存地址 和 k 的内存地址不同(两个不同的内存空间内存地址一定不同)。
8、执行 l +m 操作,内存堆要事先分配一个内存空间,将执行操作后的结果进行存放,故 i 的内存地址 和 n的内存地址不同(两个不同的内存空间内存地址一定不同)。
- 内存级分析,基本数据类型,引用数据类型 比较是否相等
- 基本数据类型、引用数据类型相互之间的比较规范(相等运算符的使用)
- 字符串相等的比较方法,字符串的基本数据类型和引用数据类型。
- 基本数据类型&&引用数据类型内存变化
- 基本数据类型值传递和引用数据类型值传递比较
- Java中的基本数据类型和引用数据类型的内存模型
- java中的基本数据类型和引用数据类型内存中的位置
- Java中基本数据类型与引用数据类型分析
- java中的基本数据类型和引用数据类型的分析
- 基本数据类型与引用数据类型
- 基本数据类型和引用数据类型
- 基本数据类型和引用数据类型
- 基本数据类型和引用数据类型
- 基本数据类型和引用数据类型
- 基本数据类型和引用数据类型
- 基本数据类型和引用数据类型
- 数组存储引用数据类型内存分析图
- java中包装数据类型与基本数据类型比较相等的问题
- iOS-Webview及正则表达式
- 图的矩阵与邻接矩阵转换和遍历
- Android中Intent传递自定义对象类型的数据
- 结构型模式之桥接模式
- 图的遍历和二维矩阵动态分配内存
- 内存级分析,基本数据类型,引用数据类型 比较是否相等
- 排序算法综述
- GDOI'2016市选day2 —— 解密(code)
- 进制转换
- 算法经典文章收藏
- 顺序方法查找
- 关于网站主栏目多类别(或多子类)下的数据的准确显示
- 注释转换
- 折半查找