-
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表对应的整数来对待(度娘查询ASCII对照表)
------------------------------------------------------------------------------------------
-
整数类型(byte,short,int,long)
byte ~long - 数字类型赋值范围的规律 2^x 下个类型的x是2^x+1
整数类型都是首位(±)标记,其余位数都是用来存值
------------------------------------------------------------------------------------------
-
浮点数类型float & double
① 范围是由指数位来确定的;
② 精度是由尾数位确定的;
存储结构:
float: 1bit(符号位)+ 8bits(指数位) + 23bits(尾数位)
double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
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,这种情况下幂数完全满足要求,但是尾数已经不能表示出来了这么长的精度。
3.运算精度损失:二进制不能完美的表达十进制,就像十进制中10/3,计算的时候会有进制之间的转换,1 - 0.99 本来结果是0.01,但是由于精度损失结果会是0.010000000000000009
------------------------------------------------------------------------------------------
-
基础类型之间的转换
小转大:
随便转ex:byte->short->int->long
tips:float->double的时候会有精度损失
大转小:
可能会有精度损失 long->int->short->byte
浮点数转整数:
会被直接抹除小数部分。保留整数部分(舍去,不是四舍五入)
整数转浮点数:
会在整数后追加.0 --- 333 -> 333.0
-
-.-
新手第一次写博客,有错的地方各位大佬包容下,提提意见和建议,我会好好反思并修复bug