# 位,字节, 字符

# 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 (总共有 128ASCII 码)。

UTF-8 编码:一个 英文字符 等于 一个字节 ,一个 中文(含繁体) 等于 三个字节中文标点三个字节 ,英文标点占 一个字节

Unicode 编码:一个 英文 等于 两个字节 ,一个 中文 (含繁体)等于 两个字节中文标点两个字节英文标点两个字节

# 基本数据类型范围

JAVA 中一共有八种基本数据类型,他们分别是: byte、short、int、long、float、double、char、boolean

  • byte 的取值范围为 -128 ~ 127 , 占用 一个 字节 ( -2^7(2^7)-1 )
  • short 的取值范围为 -3276832767 , 占用 两个 字节 ( -2^15(2^31)-1 )
  • int 的取值范围为 -2147483648 ``2147483647``(``-2^31`` (2^31)-1 ) , 占用 四个个 字节
  • long 的取值范围为( -9223372036854774808 ~ 9223372036854774807 ), 占用 8个字节-2^63(2^63)-1

可以看到 byteshort 的取值范围比较小,而 long 的取值范围太大,占用的空间多,基本上 int 可以满足我们的日常的计算了,而且 int 也是使用的最多的整型类型了。 在通常情况下,如果 JAVA 中出现了一个整数数字比如 35 ,那么这个数字就是 int 型的,如果我们希望它是 byte 型的,可以在数据后加上大写的 B35B ,表示它是 byte 型的。同样的 35S 表示 short 型, 35L 表示 long 型的,表示 int 我们可以什么都不用加,但是如果要表示 long 型的,就一定要在数据后面加 “L”

浮点型 floatdouble 是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同

  • float 3.402823e+38 ~ 1.401298e-45e+38 表示是乘以 1038 次方,同样, e-45 表示乘以 10 的负 45 次方), 占用 4个字节

  • double 1.797693e+308 ~ 4.9000000e-324 占用 8个字节 . double 型比 float 型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是 double 型的,如果要表示一个数据是 float 型的,可以在数据后面加上 “F” 。 浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。

  • boolean 型(布尔型) 这个类型只有两个值, truefalse (真和非真) boolean t = trueboolean 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class PrimitiveTypeTest {  
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();

// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();

// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();

// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();

// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();

// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();

// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:java.lang.Character");
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647

基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807

基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38

基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308

基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535
Edited on Views times