值类型数据和引用类型数据
来源:互联网 发布:淘宝如何入驻拼多多 编辑:程序博客网 时间:2024/05/20 10:11
1.java 中有8种基本数据类型:
boolean,char,byte,short,int,long,float,double
对应的封装类:
Boolean,Character,Byte,Short,Integer,Long,Float,Double
前者属于值类型数据,后者属于引用类型数据,引用类型数据存于堆或常量池中.值类型数据存在于常量池中,声明存在于栈中.
2.值类型数据比较的时候会隐式转换为高阶的数据类型,然后再比较:
System.out.println(1==1);//true
System.out.println(1.0 == 1);//true
3.值类型数据和引用类型数据进行比较的时候,引用类型数据会自动拆箱为值类型数据
System.out.println(1 == new Double(1.0));//true
new Double 先拆箱为double x = 1.0.然后比较.
4.引用类型数据比较的是地址:
System.out.println(new Double(1.0) == new Double(1.0));//false
1>不同类型的封装类之间不能比较,因为不兼容,不能直接转换.
(Integer)(new Double(1.0)) //编译报错
(Double)(new Integer(1))//编译报错
2>父类和封装类可以互相转换,且转换后的对象只能调用它们公共的属性和方法
(Number)(new Double(1.0))//Number是一个抽象类
(Integer)(new Object())//只能调用notify(),wait()等方法
(Number)(new Object())//只能调用notify(),wait()等方法
(Object)(new Integer(1))//只能调用notify(),wait()等方法
5.String不是封装类,它的值存在于字符串池中,也就是常量池.低阶的值的封装类对象也存在于常量池,所以下面的都是对的.
String a = "abc",b= "abc";
Integer i = 127 ,j = 127;
a == b ,i == j;// true true
所以Integer k = new Integer(127);//在堆中.跟i,j比较并不相等.这是两个引用类型数据的
比较.并且一个地址在常量池,一个在堆中.
所以判断的时候,先看两个比较的个体.最终比较的值,还是对象(地址).
- 值类型数据和引用类型数据
- 值类型和引用类型和数据大小排名
- 值类型与引用类型数据运算
- 引用地址和基本类型数据
- Effective C# 原则6:区别值类型数据和引用类型数据
- 值类型和引用类型
- 值类型和引用类型
- 值类型和引用类型
- 值类型和引用类型
- 引用类型和值类型
- 值类型和引用类型
- 值类型和引用类型
- 值类型和引用类型
- 值类型和引用类型
- 值类型和引用类型
- 值类型和引用类型
- 引用类型和值类型
- 值类型和引用类型
- SpringMVC——返回JSON数据&&文件上传下载
- 实训项目——银行储蓄系统
- 指针(二)
- 【特征检测】BRIEF特征点描述算法
- 解决Win7访问Win2003和WinXP局域网共享很慢问题
- 值类型数据和引用类型数据
- Flex与servlet交互
- 大数据带来六种全新商业模式
- hdu 4122 单调队列
- 关于公司scf使用bug之二
- 2012年5月SAT香港真题解析
- WINCE蓝牙服务器获得被其他设备连接信息
- mac隐藏显示文件夹
- 1045. Favorite Color Stripe (30) -LCS允许元素重复