基本数据类型及包装类

基本数据类型

四类八种

1)四种整数类型(byte、short、int、long):    byte:8 位,用于表示最小数据单位,如文件中数据,-128~127    short:16 位,很少用,-32768 ~ 32767    int:32 位、最常用,-2^31-1~2^31  (21 亿)    long:64 位、次常用    注意事项:    int i=5; // 5 叫直接量(或字面量),即 直接写出的常数。    整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。    小于 32 位数的变量,都按 int 结果计算。    强转符比数学运算符优先级高。见常量与变量中的例子。
 
2)两种浮点数类型(float、double):    float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。    double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾    注意事项:    二 进 制 浮 点 数 : 1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方)    尾数:  . 1010100010   指数:1010   基数:2    浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X    float  的精度没有 long 高,有效位数(尾数)短。    float  的范围大于 long  指数可以很大。    浮点数是不精确的,不能对浮点数进行精确比较
 
3)一种字符类型(char):    char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。    注意事项:    不能为 0个字符。    转义字符:\n  换行  \r  回车  \t Tab 字符  \" 双引号  \\ 表示一个\    两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
 
4)一种布尔类型(boolean):true 真  和 false 假。
 
5)类型转换:         自动转换(小转大):byte-->short,char(byte不能自动转char)-->int-->long-->float-->double                  
强制转换(大转小):①会损失精度,产生误差,小数点以后的数字全部舍弃。②容易超过取值范围。
自动转换(低精度转高精度)  char特殊,byte不能自动转char
 
6)记忆:8位1字节:Byte(字节型)          16位2字节:short(短整型)、char(字符型)          32位4字节:int(整型)、float(单精度型/浮点型)          64位8字节:long(长整型)、double(双精度型)         
最后一个:boolean(布尔类型):
  • 如果 boolean 是 “单独使用”:boolean 被编译为 int 类型,占 4 个字节
  • 如果boolean 是以 “boolean 数组” 的形式使用:boolean 占 1 个字节,Java 虚拟机直接支持 boolean 数组,通过 newarray 指令创建 boolean 数组,然后通过 byte 数组指令 baload 和 bastore 来访问和修改 boolean 数组

包装类

包装类就是为了把基本数据类型包装成引用数据类型,并提供API进行更多的操作,让Object类可以进行统一管理

 

 装箱与拆箱

 基本数据类型转包装类  自动装箱

 包装类转基本数据类型 自动拆箱

 1 @Test
 2     public void bTest() {
 3         int a = 1;
 4         // 自动装箱 基本数据类型自动转包装类
 5         Integer b = a;
 6         // 1
 7         System.out.println(b);
 8         // 自动拆箱 包装类自动转基本数据类型
 9         int c = b;
10         // 1
11         System.out.println(c);
12     }

 

 基本数据类型和包装类之间的转换

 1 //基本数据类型转引用类型
 2         int num = 10;
 3         Integer in = new Integer(num);
 4         
 5 //包装类s转基本数据类型
 6         int nums = in.intValue();
 7         
 8 //字符串转int 
 9         String ss = "1001";
10         int s1 = Integer.parseInt(ss);
11         or
12         Integer.valueOf(str).intValue()
13                   转Integer     Integer转int
14         
15         
16 //int转字符串
17         String str=Integer.toString(i)
18         or
19         String.valueOf(i)
20 
21 //字符串转Integer
22         Integer  s2 = new Integer(ss);
23 
24 s2 = s2+1;// 1002  引用数据类+基本数据类  1.5支持    s2还是引用数据类型

 

包装类缓存池

Integer的缓存池其实就是IntegerCache.cache(数组),它在Integer进行类加载的时候初始化
区间[-128 ~127] 自动装箱时会从缓存里面拿
 
基本类型对应的包装类中,Byte、Short、Integer、Long和Character的缓存池都是[-128, 127],Boolean的缓存池比较特殊,只有true和false两个Boolean对象。

 

api示例

https://www.matools.com/api/java8

 

 

posted on 2023-02-10 17:53  or追梦者  阅读(11)  评论(0编辑  收藏  举报