# 位,字节, 字符
# 1. 位
数据存储的最小单位。每个二进制数字0或者1就是1个位,比特为 bit ,简称 b
# 2. 字节
8个位构成一个字节;即:1 byte (字节)= 8 bit(位);
Byte(字节),简称B。byte是基本数据类型,Byte是byte的包装类
1 KB
= 1024 B
(字节);
1 MB
= 1024 KB
; ( 2^20 B
)
1 GB
= 1024 MB
; ( 2^20 KB
)
1 TB
= 1024 GB
; ( 2^30 KB
)
# 3. 字符
a、A、中、+、*、の......
均表示一个字符;
字符 (汉字和汉字标点符号都算字符)
一般 utf-8 编码下,一个汉字 字符 占用 3 个 字节;
一般 gbk 编码下,一个汉字 字符 占用 2 个 字节;
# 4. 字符集
即各种各个字符的集合,也就是说哪些汉字,字母(A、b、c)和符号(空格、引号..)会被收入标准中;
# 5. 编码
ASCII
码:一个英文字母(不分大小写)占一个字节
的空间,一个中文汉字占两个字节
的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为 8 位二进制数,换算为十进制。最小值-128
,最大值127
。如一个ASCII
码就是一个字节
,0~127
(总共有128
个ASCII
码)。
UTF-8
编码:一个英文字符
等于一个字节
,一个中文(含繁体)
等于三个字节
。中文标点
占三个字节
,英文标点占一个字节
Unicode
编码:一个英文
等于两个字节
,一个中文
(含繁体)等于两个字节
。中文标点
占两个字节
,英文标点
占两个字节
# 基本数据类型范围
在 JAVA
中一共有八种基本数据类型,他们分别是: byte、short、int、long、float、double、char、boolean
byte
的取值范围为-128
~127
, 占用一个
字节 (-2^7
到(2^7)-1
)short
的取值范围为-32768
~32767
, 占用两个
字节 (-2^15
到(2^31)-1
)int
的取值范围为-2147483648
``2147483647``(``-2^31``(2^31)-1
) , 占用四个个
字节long
的取值范围为(-9223372036854774808
~9223372036854774807
), 占用8个字节
(-2^63
到(2^63)-1
)
可以看到 byte
和 short
的取值范围比较小,而 long
的取值范围太大,占用的空间多,基本上 int
可以满足我们的日常的计算了,而且 int
也是使用的最多的整型类型了。 在通常情况下,如果 JAVA
中出现了一个整数数字比如 35
,那么这个数字就是 int
型的,如果我们希望它是 byte
型的,可以在数据后加上大写的 B
: 35B
,表示它是 byte
型的。同样的 35S
表示 short
型, 35L
表示 long
型的,表示 int
我们可以什么都不用加,但是如果要表示 long
型的,就一定要在数据后面加 “L”
。
浮点型 float
和 double
是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同
-
float
3.402823e+38 ~ 1.401298e-45
(e+38
表示是乘以10
的38
次方,同样,e-45
表示乘以10
的负45
次方), 占用4个字节
-
double
1.797693e+308 ~ 4.9000000e-324
占用8个字节
.double
型比float
型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double
型的,如果要表示一个数据是float
型的,可以在数据后面加上“F”
。 浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。 -
boolean
型(布尔型) 这个类型只有两个值,true
和false
(真和非真)boolean t = true
;boolean f = false;
-
char
型(文本型) 用于存放字符的数据类型,占用2个字节
,采用unicode
编码,它的前128字节
编码与ASCII
兼容 字符的存储范围在\u0000~\uFFFF
,在定义字符型的数据时候要注意加' '
,比如'1'
表示字符'1'
而不是数值1
char c = ' 1 '
; 我们试着输出c
看看,System.out.println(c)
;- 结果就是
1
- 而如果我们这样输出呢
System.out.println(c+0)
; 结果却变成了49
。 如果我们这样定义c
看看char c = ' \u0031 '
; - 输出的结果仍然是
1
, - 这是因为字符
'1'
对应着 unicode 编码就是\u0031
,char c1 = 'h'
,c2 = 'e'
,c3='l'
,c4='l'
,c5 = 'o'
; System.out.print(c1);
System.out.print(c2);
System.out.print(c3);
System.out.print(c4);
Sytem.out.print(c5);
示例:
1 | public class PrimitiveTypeTest { |
1 | 基本类型:byte 二进制位数:8 |