基本数据类型及其对应的包装类存在的意义

八种基本数据类型

1.整数

  1. byte 字节型1个字节
 8位,最大存储数据量是255,存放的数据范围是-128~127之间。

  1. short 短整型2个字节
16位,最大数据存储量是65536,数据范围是-32768~32767之间。
  1. int 整形4个字节(默认整数类型)
32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
  1. long 长整形8个字节
64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

2.浮点数

  1. float 浮点数4个字节
数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上F(f)。
  1. double 双精度 8个字节(默认小数数据类型)
64位,数据范围在4.9e-324~1.8e308

3.字符型

  1. char 一个字符两个字节(单引号)

4.布尔型

  1. boolean 只有两种读取true 和 false 一个字节 但是只占一位

数据类型之间的相互转换

  1. 自动类型 转换 精度小的数据类型可以转化为精度大的数据类型
//short(2个字节)转int(4个字节)
short s = 122;  
int i = s;
  1. 强类型转换 精度大的数据类型转化精度小的数据类型
long l = 5613265346;
 int i = (int) l;
  1. 字符和整形之间的转换
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.特点
  • 自动装箱:可以直接将基本类型数据赋值给其对应的包装器类型。
    自动装箱一定要类型严格匹配,包装器类型没有基本类型从小到大的转换。 在赋值的地方,都可以发生自动拆箱与装箱。
  • 自动拆箱:和自动装箱的过程相反,可以将包装器类对象赋值给一个基本类型。
    在自动拆箱的过程中,赋值号左边是基本类型,因此自动拆箱可以类型不严格匹配。

两者比较

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值