Java基本数据类型与封装类的区别
2015-11-23 00:00
369 查看
摘要: Java基本数据类型与封装类的区别,已经封装类的缓存
Java的基本数据类型:int , double , float , long, byte , char ,boolean
对应的封装类:Integer , Double ,Float ,Long , Byte , Char ,Boolean
复杂类型和基本类型的内存模型本质上是不一样的,简单数据类型的存储原理是这样的:所有的简单数据类型不存在“引用”的 概念,简单数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面只有这八种数据类型是这种存储模型;而其他的只要是继承于Object类的复杂数据类型都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据 存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。
对基本数据类型封装之后,封装类有可以有方法和属性,然后就可以利用这些方法和属性来处理数据,比如Ingeter对象中有parseInt(String s),可以把字符串转换为int类型等。我们都知道有些类型的数据会有默认值,基本数据类型跟封装类型的默认值是不一样的,比如int 默认为0;但是Integer为null;因为封装类产生的是对象,而对象默认值为null。
对于封装过之后,每个类型都有对应的缓存:
Byte 全部缓存
Boolean 全部缓存
Integer <=127 缓存
Character <=127 缓存
Short -128~127 缓存
Long -128~127缓存
Float 没有缓存
Double 没有缓存
示例如下:
如果超过缓存范围,那么在比较的时候返回结果为true,如果是使用new的方式来得值,那么无论在什么范围都是false,即不是基本类型。
Java的基本数据类型:int , double , float , long, byte , char ,boolean
对应的封装类:Integer , Double ,Float ,Long , Byte , Char ,Boolean
复杂类型和基本类型的内存模型本质上是不一样的,简单数据类型的存储原理是这样的:所有的简单数据类型不存在“引用”的 概念,简单数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面只有这八种数据类型是这种存储模型;而其他的只要是继承于Object类的复杂数据类型都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据 存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。
对基本数据类型封装之后,封装类有可以有方法和属性,然后就可以利用这些方法和属性来处理数据,比如Ingeter对象中有parseInt(String s),可以把字符串转换为int类型等。我们都知道有些类型的数据会有默认值,基本数据类型跟封装类型的默认值是不一样的,比如int 默认为0;但是Integer为null;因为封装类产生的是对象,而对象默认值为null。
对于封装过之后,每个类型都有对应的缓存:
Byte 全部缓存
Boolean 全部缓存
Integer <=127 缓存
Character <=127 缓存
Short -128~127 缓存
Long -128~127缓存
Float 没有缓存
Double 没有缓存
示例如下:
如果超过缓存范围,那么在比较的时候返回结果为true,如果是使用new的方式来得值,那么无论在什么范围都是false,即不是基本类型。
相关文章推荐
- Java synchronized
- Java包 Package
- Java虚拟机类加载机制
- java内部类
- JAVA_SE基础——54.异常
- java提供的一些并发机制
- Java线程池技术
- 【Java学习笔记】——JDK与JRE的区别
- java多线程-1
- 配置Java_home和配置临时环境变量
- (spring-第9回【IoC基础篇】)BeanFactoryPostProcessor,实例化Bean之前的第二大利器
- JAVA中的“抽象接口”
- 关于Integer.IntegerCache
- java date类 时间
- JDK自带方法实现AES对称加密
- Spring MVC的启动过程
- SpringMVC之controller篇
- 基于spring-boot的rest微服务框架
- Java单向(非可逆)加密--MD5、SHA和HMAC
- SpringMVC—Struts2拦截器学习网址整理