java的基本数据类型

java基本数据类型

图片来源自百度
众所周知java中的内置数据类型有8种:byte(字节型)、short(短整型)、int(整型)、long(长整型)、float(单精度浮点类型)、double(双精度浮点类型)、char(字符型)、boolean(布尔)

每种数据类型都有他们的封装类,通过分装类的方法以及属性处理数据。下面是一些基本数据类型的一些基本信息

数据类型关键字封装类占用字节默认值取值范围备注
字节型byteByte180-128 ~ 127
短整形shortShort2160-32768 ~32767
整型intInteger4320-2147483648 ~ 2147483647
长整型longLong8640-9223372036854775808 ~ 9223372036854775807
单精度浮点型floatFloat4320.01.4E-45 ~ 3.4028235E38在值的后面需要添加 f 或者 F (float类型标识)
双精度浮点型doubleDouble8640.04.9E-324 ~ 1.7976931348623157E308
字符型charCharacter216/u00000 ~ 65535默认值是一个空格 ,取值范围我转成了int类型的
布尔类型booleanBoolean18falsetrue、false

这里出现了一个字节(byte,对没有看错就是那个字节型)跟位(bit)
数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位( 源自百度—byte)。这里不做多的解释了,我也解释不清( ̄~ ̄)

表格里面为什么要标注float要写标识呢,倘若写了个浮点类型的 3.52 会自动默认为double类型的数值,这里就又涉及到了基本数据类型的一个等级了,你没有听错,基本数据类型也有等级:byte = short = char 低于 int 低于 long 低于 float 低于 double
其中若级别小于int,进行计算的时候,最终的数据类型会自动转换为int,如果高于int,最终数据结果会取其中最高的一个,由低级别转到高级别,是属于自动类型转换又称为隐式转换,这点是由系统自动转换的。想要高级转低级可以使用 (类型) 表达式 方式进行强制转换

/**
* 强制转换语法为     
*           (类型) 表达式
* 这里是double强制转换成int
*/
double d = 2.32
int doubleToInt = (int) d;
//输出 doubleToInt  结果为 2



/**
* 下面是一些数据转换
*/
 int i = 5;
 float f = 256.14f;//不写f会报错,默认为double类型数值
 double d = f;
 float fa = i;
 //输出  i= 5   d= 256.1400146484375   fa=256.14   fb = 5.0
 //为什么会出现double的小数点多出那么多位
 //是因为float为四个字节,double为八个字节,float--->double时候会补位,如果这里补位不出现误差的话应该可以实现,如果不想要补位怎么办呢
 double da = Double.parseDouble(String.valueOf(f)) 
 //输出 da = 256.14    这里先将float转换成String 再由String 转成Double类型

对于强制转换会有丢失精度或者溢出的问题,可以由高精度数字进行计算。这是一些基本数据类型的信息以及自动类型转换。

高精度数字

BigInteger跟BigDecimal,这两个是包装类,但是没有基本数据类型,需要以创建对象的方式进行操作。跟基本数据类型的操作相似,但是是以方法调用。常用方法如下

//声明
BigDecimal bigDecimal1 = new BigDecimal("22.95");
BigDecimal bigDecimal2 = new BigDecimal("35.25");
bigDecimal1.add(bigDecimal2);//高精度数字的加法    结果  58.20
bigDecimal2.subtract(bigDecimal1);//减法     结果 12.30
bigDecimal1.multiply(bigDecimal2 );//乘法    结果 808.9875
bigDecimal2.divide(bigDecimal1);//除法   这个地方我运行会报错
//java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result
//这个问题是因为没有精确到小数点后几位,JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,
//定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常
//正确做法如下
bigDecimal2.divide(bigDecimal1,2);//BigDecimal有三个divide方法,一参二参三参,此处不在细说

这是比较 常用的方法中的几个。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值