基本数据类型及其对应的包装类存在的意义
2019-04-17 17:20
134 查看
Java--基本数据类型及其对应的包装类存在的意义
八种基本数据类型
1.整数
- byte 字节型1个字节
8位,最大存储数据量是255,存放的数据范围是-128~127之间。
- short 短整型2个字节
16位,最大数据存储量是65536,数据范围是-32768~32767之间。
- int 整形4个字节(默认整数类型)
32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
- long 长整形8个字节
64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
2.浮点数
- float 浮点数4个字节
数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上F(f)。
- double 双精度 8个字节(默认小数数据类型)
64位,数据范围在4.9e-324~1.8e308
3.字符型
- char 一个字符两个字节(单引号)
4.布尔型
- boolean 只有两种读取true 和 false 一个字节 但是只占一位
数据类型之间的相互转换
- 自动类型 转换 精度小的数据类型可以转化为精度大的数据类型
//short(2个字节)转int(4个字节) short s = 122; int i = s;
- 强类型转换 精度大的数据类型转化精度小的数据类型
long l = 5613265346; int i = (int) l;
- 字符和整形之间的转换
char ch = 'a'; System.out.println((int)a); //结果为97 char ch = 48; System.out.println(ch); //结果为 0
ASCLL表的转换 字符 a-z ~ 97-122 字符 A-Z ~ 65-90 字符0 - 9 为48 - 57
看到这儿很简单,我感觉每个人都会。BUT请继续向下看
基本数据类型为什么存在?
意义
- 首先ava是强类型语言,Java对于数据类型的规范会相对严格。java供了八种基本类型都有如上的八种。
- Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。
- 数据类型在计算机语言里面,是对程序所处理数据的抽象,它存在的意义是为了方便虚拟机为不同的数据分配更合适的空间。
- 实例对象存储在堆中,通过栈的引用来使用这些对象,对于经常用到的一系列类型如int等简单的小的变量时,运用基本类型直接存储带栈中就非常方便。
存储
- 首先基本数据类型存储在栈中
- Java 虚拟机每调用一个 Java 方法,便会创建一个栈帧。这种栈帧有两个主要的组成部分,分别是局部变量区,以及字节码的操作数栈。
- 局部变量区等价于一个数组,并且可以用正整数作为索引且占用一个数组单元。 long、double例外值需要用两个数组单元来存储。boolean、byte、char、short 这四种类型,在栈上占用的空间和 int 是一样的,和引用类型也是一样的。
- 当我们将一个 int 类型的值,存储到这些类型的字段或数组时,相当于做了一次隐式的掩码操作。
-当我们把 0xFFFFFFFF(-1)存储到一个声明为 char 类型的字段里时,由于该字段仅占两字节,所以高两位的字节便会被截取掉,最终存入“\uFFFF”。
数据加载
- Java 虚拟机的算数运算几乎全部依赖于操作数栈
- 需要将堆中的数据加载到栈中当作成int数据类型进行运算
八种基本数据类型的包装类
1.对应表
byte Byte
int Integer
short Short
long Long
float Float
double Double
boolean Boolean
char Character
2.包装类型为什么存在?
- Java是一个面向对象的语言,基本类型并不具有对象的性质。将基本类型包装成对象以后,扩大了基本类型所具有的操作,更是JAVA面向对象的体现
使用集合类型Collection时使用包装类型而非基本类型,使得它具有了对象的性质,添加了属性和方法
- 所有的基本类型都有一个与之对应的类,这些类称为包装器类。对象包装器类是不可改变的,即一旦构造类包装器类,就不允许更改包装在其中的值。同时,对象包装器类还是final,因此不能定义它们的子类。
- 每个包装器类都有两个构造函数
3.特点
- 自动装箱:可以直接将基本类型数据赋值给其对应的包装器类型。
自动装箱一定要类型严格匹配,包装器类型没有基本类型从小到大的转换。 在赋值的地方,都可以发生自动拆箱与装箱。
- 自动拆箱:和自动装箱的过程相反,可以将包装器类对象赋值给一个基本类型。
在自动拆箱的过程中,赋值号左边是基本类型,因此自动拆箱可以类型不严格匹配。
两者比较
相关文章推荐
- Java基本数据类型与对应的包装类(动力节点java学院整理)
- HashSet中包装类及其对应的基本类型重复数据问题
- JavaScript语法入门系列(三) 基本数据类型及其对应对象类型
- 基本数据类型及其包装类(一)
- 基本数据类型及其包装类(一)
- java基本数据类型及其所对应对象的自动装箱,new,valueof操作研究
- Java基础学习总结(122)——Java八种基本数据类型的包装类及其装箱拆箱详解
- java入门篇(14) 基本数据类型及其对应的包装类
- Java 基本数据类型的包装类及其数据类型转换
- j2se学习中的一些零碎知识点5之StringBuffer类,八种基本数据类型对应的包装类型和自动装
- 基本数据类型及其包装类(二)
- java基础基本数据类型对象包装
- 基本数据类型的包装类型作为参数传递,以及其他引用类型作为参数传递,以及List中值的交换的一些问题
- JDK源码解析基础篇-8种基本数据类型的包装类及相关讨论
- 基本数据类型的包装类
- 我的php学习笔记(二)php基本数据类型、基本语法和基本运算类型及其应用
- 基本的数据类型分析----java.lang.Number类及其子类分析
- Java中基本数据类型与对应的包装类和引用数据类型
- java 基本数据类型的包装类
- 基本数据类型及其包装类