java数据类型及其转换

7 篇文章 0 订阅
7 篇文章 0 订阅

基本数据类型
数据类型关键字取值范围默认值占用内存(单位:字节)
整型byte-128(-2^7) ~ 127(2^7-1)01
short-32768(-2^15) ~ 32767(2^15-1)02
int-2147483648(-2^31) ~ 2147483647(2^31-1)04
long-9223372036854775808(-2^63) ~ 9223372036854775807(2^63-1)0L8
浮点型float-3.401298e-38 ~ 3.402823e+380.0f4
double4.9000000e-324 ~ 1.797693e+3080.0d8
字符型char0-65535'u0000'2
布尔型booleantrue或falsefalse1
引用数据类型

基本概念:
引用数据类型建立在八大基本数据类型基础之上,它包括了包括数组、接口、类。除了八大类型以外的所有数据类型都是引用类型。

某些情况的说明:

包装数据类型也是引用类型,在Java中,包装类是一种特殊的类,用于将基本数据类型转换为对象。既然是类(即便它特殊),那自然也是引用类型。下面是java中的包装数据类型:

基本数据类型对应的包装数据类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

对于上面的表,不难发现,基本数据类型首字母小写,包装数据类型的首字母是大写的。包装数据类型的首字母之所以是大写,是因为它们都是Java中的类,而根据Java的命名规范,类的名称首字母需要大写。所以可以通过首字母是否大写来区分它和基本数据类型(区分部分单词相同但是含义不同的数据类型)。当然这也就说明了java是严格区分大小写的,要不然这数据类型不就乱套了。

而对于String,不难发现它其实也是一个类,所以它也是一个引用类型。


数据类型转换

在Java中,数据类型转换主要分为两种:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。

下面介绍这两种转换方式:

自动类型转换(隐式类型转换)

/* 整型之间的转换,从低级到高级因为范围兼容,不会发生数据丢失,所以java会进行自动转换。 */
byte b = 10;   // 范围最小的整数
short s = b;   // 自动类型转换,byte到short
int i = b;     // 自动类型转换,byte到int  
long l = i;    // 自动类型转换,int到long  

/* 浮点型之间的转换,从低级到高级可以自动转换 */
float f = l; // 自动类型转换,long到float  
double d = f; // 自动类型转换,float到double

和强制类型转换(显式类型转换)

/* 整型之间的转换,由于从高级到低级转换可能会丢失数据,所以Java要求显式地进行转。 */
double d = 3.24;  		//先定义一个高级数据类型
float f = (float) d;    // 强制类型转换,double到float
int i = (int) d;        // 强制类型转换,double到int,可能会丢失小数部分
byte b = (byte) i;      // 强制类型转换,int到byte,可能会溢出

从高级到低级可以使用双括号()内部写基本数据类型,进行由上到下的转换,当然转换过程中当心数据丢失,因为java不会因为强制转换类型中的数据丢失而报错。

举个例子:

例如:我先声明一个int类型的数据,然后给他赋值为300。之后将它强转为byte类型,由于byte的取值范围是-128(-2^7) ~ 127(2^7-1),所以肯定会发生数据丢失,而java会对它进行取模运算(即为求余),将300对256(byte类型的长度)取模后的结果给到byte。

而java也通过这种手段来解决强转类型时候可能会出现的错误。

int i = 300;  
byte b = (byte) i; // b的值将是44,因为300对256取模的结果是44

补充一点
在java中char其实也可以转化为int类型,这是由于java中char 类型本质上是一个小的整数类型,至于怎么进行转换,那就要参考ASCII码表了。这一点可能会在算数运算的时候用到。


编写不易,如有问题请指出,还望各位多多支持。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值