Java基本数据类型进阶

本文详细介绍了Java中的八种基本数据类型,包括它们的取值范围、默认值以及在内存中的存储方式。强调了整数型和浮点型在处理过程中可能遇到的精度损失和类型转换规则。此外,还探讨了布尔型的特点及其在逻辑运算中的作用。最后,总结了不同类型之间的转换原则,包括自动转换和强制转换的情况。
摘要由CSDN通过智能技术生成

一,八种数据类型取值范围以及默认值

byte—— -128~127                   所占字节——1

short—— -32768~32767          所占字节——2

int—— -2147483648~2147483647                   所占字节——4

long——        不用特殊记忆                               所占字节——8

float——        不用特殊记忆                               所占字节——4

double——    不用特殊记忆                               所占字节——8

boolean—— true,flase                                    所占字节——1

char—— 0~65535                                             所占字节——2

注意:char类型和short类型所占字节相同,表示种类总数一样,但char类型没有负数,可以表示更大类型的正整数

byte,short,int,——默认值为0,long——默认值为0L

boolean——默认值为false    (0表示false,1表示true)

char——默认值为\u0000  对应ascii表为空白(不是空格)

注意:八种基本数据类型默认值向0看齐

二,八种基本数据类型详解:

1.char类型中的转义字符  \

转义字符出现在特殊字符之前,会把特殊字符转换为普通字符;出现在普通字母之前,会把普通字母转化为特殊字符(有特殊功能)

例如:\n换行符,\t制表符,\' 普通单引号,\" 普通双引号,\\ 普通反斜杠

2.整数型

  --在Java语言中的整数型字面值被默认当成int类型来处理,例如1,16510,56498都为先默认为int型的数据,如果一个数特别大超出了int类型的范围,我们想要把这个整数一开始就当成long类型来处理,我们需要在这个数的后面加一个 l(小写的L)或者L,例如 56456118981L这个数一开始就为long型,就不是默认的int类型了

  --在Java中,大的数据类型赋给小的数据类型需要强制转换,强制转换要加强制转换符,例如:

byte a = 159;    159超出了byte类型的最大值127,所以我们需要进行强制转换,应写为:byte a =(byte) 159; 

再比如byte a = 5; 刚才说了在Java语言中所有的整数型字面值的默认类型为int型,int类型大于byte类型,所以我们需要进行强制转换,写为byte a = (byte) 5;   但因为 5 没有超出byte类型的最大值,在实际应用中我们不需要这样写,sun公司规定了byte,short,char类型,当字面值没有超出他们的范围时我们可以直接编译,不需要再进行数据类型的强制转换,计算机会自己完成。

  --当我们进行强制转换时,会发生精度损失,且损失较大。例如,原始数据:00000000 00000000 00000000 01101100,当它转换为byte类型变成01101100 会将int类型数据砍掉前面三个字节变成byte类型存储在计算机内部(计算机内部储存的二进制都为补码形式,显示时要翻译成原码)。精度损失的后果由程序员看来承担,所以要慎用强制类型转换

3.浮点型

float(单精度)四个字节

double(双精度,精度较高)八个字节,但是当数据涉及到财务类型时,double的精度是不够的,我们需要更高精度的数据类型,double的数据类型的高精度只是相对的。在基础SE库当中有更老精度的数据类型,只不过它属于引用数据类型,它是:java.math.BigDecimal

SE类库源码位置:C:\Program Files\Java\jdk1.8.0_192\src.zip(仅供参考)

SE类库字节码位置:C:\Program Files\Java\jdk1.8.0_192\jre\lib\rt.jar(仅供参考)

 --在java语言中,所有的浮点型字面值默认被当作double类型来处理,如例如 5.0 如果想要这个字面值被当作float类型来处理我们需要在他的后面加 f \ F,例如:float a = 5.0f;或者 float a =5.0F;

如果:float a = 2.0; 这样是无法通过编译的,因为大容量放到小容量里需要强制类型转换。所以我们需要写成:float a = (float) 2.0; 或者 float a = 2.0f; 或者 float a = 2.0F; 

注意:float和double存储数据时存储的都是近似值,因为我们生活中有些小数例如3.33333333...这样的无限循环小数,二进制无法表示并且计算机的空间是有限的,不可能无限开辟,所以只储存近似值。

4.布尔型

  --在Java中boolean只有两个值:flase和true,没有其他值。

在底层存储时boolean类型占一个字节,因为在实际存储时flase底层存储为0,true底层存储为1,1和0都只占一个字节.

布尔类型后面的开发中非常重要,常用在逻辑运算和控制语句中。

布尔类型赋值举例:boolean a = true;  boolean b = 1;该语句错误,类型不兼容,1为int型数据

三,八种基本数据类型之间的转换 

1.八种基本数据类型当中除了布尔类型boolean的其他七种数据类型都可以进行数据类型转换

2.小容量向大容量类型进行类型转换一般为自动转换,大容量转换为小容量需要进行强制类型转换,其中数据类型容量大小排序:

  byte < short (char) < int < long < float < double     

注意:浮点型数据不管占几个字节,都比整数型容量大

3.当整数型字面值没有超出byte,short,char的取值范围可以直接进行复制,规则在上面整数型有讲。

4.byte,short,char类型的数据进行混合运算时,全部换成int类型再进行运算

5.多种混合类型数据进行运算时先转换成容量最大的类型再进行计算

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值