Java数据类型

八大基本数据类型+引用数据类型

基本数据类型

整型:byte、short、int、long

浮点型:float、double

布尔型:boolean

字符型:char

对应的包装类为Byte、Short、Integer、Long、Float、Double、Character、Boolean

引用数据类型

包括类、接口、数组、枚举、注解、字符串

基本数据类型详解

基本类型存储大小初始化默认值取值范围
byte1字节(8位)0-128~127
short2字节(16位)0-32768~32767
int4字节(32位)0-2^31~2^31-1
long8字节(64位)0L-2^63 ~ 2^63 - 1
float4字节(32位)0.0f/
double8字节(64位)0.0d/
char2字节(16位)‘\u0000’/
boolean1字节(8位)falsetrue/false

 浮点型变量精度不高,解决办法:用BigDecimal类替换浮点型变量

BigDecimal(double val) : double类型的数据作为参数,交给BigDecimal对象【不用,因为double本身不精确】
BigDecimal(String val) : String类型的数据作为参数,交给BigDecimal对象【用这个】
注:double->String 直接拼接一个字符串""就行。

基本数据类型和引用数据类型的区别

1、存储方式:基本数据类型直接存储值,而引用数据类型存储的是对象的引用(内存地址)

2、内存分配:基本数据类型在栈上分配内存,而引用数据类型在堆上分配内存。栈上分配速度较快,但内存空间小,堆反之。

3、默认值:基本数据类型会有自己的默认值,而引用数据类型的默认值为null,表示没有引用指向任何对象

4、复制操作:基本数据类型进行复制时,会复制该变量的值。而引用数据类型进行复制时,只会复制对象的引用,两个变量指向同一个对象

5、参数传递:基本数据类型作为方法的参数传递时,传递的是值的副本,不会修改原始值。而引用数据类型作为方法的参数传递时,传递的是对象的引用,可以修改对象的属性或状态

6、比较操作:基本数据类型使用==进行比较时,比较的是值是否相等。而引用数据类型使用==进行比较时,比较的是引用是否指向同一个对象,如果要比较对象的内容是否相同,需要使用equals()方法

基础数据类型的转换

自动类型转换:【小->大】byte-short-int-long-float-double

强制类型转换:【大->小】小类型 变量名 = (大类型)值、

注意:自增/自减运算符、复合赋值运算符底层做了优化,内部自动强制类型转换; 如:++, --, +=, -=

包装类型

为什么需要

因为Java是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。比如,在集合类种,我们是无法将int、double等类型放进去的。因为集合的容器要求元素是Object类型。

为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

基本类型直接存储数据值,在栈上分配内存,占用固定的内存空间,。

包装类型是对象动态分配内存,在堆上创建,包含额外的信息,例如方法和字段,同时也占用更多的内存空间。

自动装箱和自动拆箱

包装类是对基本类型的包装,所以把基本数据类型转换成包装类的过程就是装箱;反之,把包装类转换成基本数据类型的过程就是拆箱

如:int的自动装箱都是通过Integer.valueOf()方法来实现的,Integer的自动拆箱都是通过Integer.intValue()来实现的。

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值