当前位置: 代码迷 >> 综合 >> Java基础数据类型详解
  详细解决方案

Java基础数据类型详解

热度:99   发布时间:2024-01-26 06:24:49.0
  • java关键字 - 基础数据类型

类型名 含义 范围 范围详情 数值位数 bit(位) 字节

boolean

布尔 true -  false true -  false  / 8 1

char

字符   0- 2^16-1 0~65535(放整数) 5 16 2

byte

字节   -2^8 - 2^7-1 -128~127 3 8 1

short

短整数  -2^15- 2^15-1 -32768~32767 5 16 2

int

整数 -2^31- 2^31-1 -2,147,483,648?~2,147,483,647 10 32 4

long

长整数 -2^63- 2^63-1

 -9,223,372,036,854,775,808

??~9,223,372,036,854,775,807

19 64 8

float

单精度浮点数 -2^128 ~ 2^128 -3.40E+38 ~ 3.40E+38 39 32 4

double

双精度浮点数 -2^1024~2^1024

 -1.79E+308 ~ 1.79E+308

309 64 8

 

 

 

 

 

 

 

 

 

 

  • 简说:字节,字符,编码集

一般 1字符 = x字节  (1字符占用几个字节由编码集决定) 1字节=8bit

ASCII码:
一个英文字母占一个字节,一个中文汉字占两个字节,一个ASCII码就是一个字节
UTF-8编码:
一个英文字符等于一个字节,一个中文等于三个字节
Unicode编码:
一个英文等于两个字节,一个中文等于两个字节
符号:英文标点占一个字节,中文标点占两个字节

------------------------------------------------------------------------------------------

  • 布尔类型(boolean)

 就是true和false 占用一个字节,比较简单

------------------------------------------------------------------------------------------

  • 字符类型(char)

  • 赋值

char a='a'; (任意单个字符,加单引号)

char a='中'; (任意单个中文字,加单引号)

char a=123;  (整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符)

tips:只能放单个字符(比较特殊的字符,可以存放+整数)

  • char运算

char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值

在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待

------------------------------------------------------------------------------------------

  • 整数类型(byte,short,int,long)

byte ~long - 数字类型赋值范围的规律 2^x  下个类型的x是2^x+1

整数类型都是首位(±)标记,其余位数都是用来存值

------------------------------------------------------------------------------------------

  • 浮点数类型float & double

① 范围是由指数位来确定的;

② 精度是由尾数位确定的;

存储结构:

 float:    1bit(符号位)+ 8bits(指数位)    + 23bits(尾数位)
double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)

浮点数(IEEE 754 标准)

float:

范围 -2^128 ~ -2^ -127 ∪ 2^-127 ~ 2^ 128 (指数位是8bit-2^8- 范围是-127~128)

-3.4028235E38 ≈ -3.4E+38(39size) ~ -1.4E-45 (46size) ∪ 1.4E-45 (46size)~ 3.4028235E38 ≈ 3.4E+38 (39size) 

精度 2^23 = 8,388,608 - 7位 所以精度只能保证到6-7位

double:

范围 -2^1024 ~ -2^ -1023 ∪ 2^-1023 ~ 2^ 1024 (指数位是11bit - 2^11- 范围是-1023~1024)

略………………

精度 2^52 = 4,503,599,627,370,496? - 16位 所以精度只能保证到15-16位

tips :IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。

精度损失:
当下面情况出现是则无法精确表示:
1.幂数不够表示了:这种情况往往出现在数字太大了,超过幂数所能承受的范围,那么这个数字就无法表示了。如幂数最大只能是10,但是这个数字用科学计数法表示时,幂数一定会超过10,就没办法了。
2.尾数不够表示了:这种情况往往出现在数字精度太长了,如1.3434343233332这样的数字,虽然很小,还不超过2,这种情况下幂数完全满足要求,但是尾数已经不能表示出来了这么长的精度。

------------------------------------------------------------------------------------------

  • 基础类型之间的转换

小转大:

随便转ex:byte->short->int->long

tips:float->double的时候会有精度损失

大转小:

可能会有精度损失 long->int->short->byte 

浮点数转整数:

会被直接抹除小数部分。保留整数部分(舍去,不是四舍五入)

整数转浮点数:

会在整数后追加.0  --- 333 -> 333.0

  • -.-

新手第一次写博客,有错的地方各位大佬包容下,提提意见和建议,我会好好反思并修复bug