八大基本数据类型
| 名称 | 占用字节Bytes | 位数bits | 默认值 |
|---|---|---|---|
| byte | 1字节 | 8 | 0 |
| short | 2字节 | 16 | 0 |
| int | 4字节 | 32 | 0 |
| long | 8字节 | 64 | 0 |
| float | 4字节 | 32 | 0.0F |
| double | 8字节 | 64 | 0.0 |
| boolean | - | 1 | false |
| char | 2字节 | 16 | ‘\u0000’ 空字符 |
- 1个字节 = 8bits
自动类型转换
- 规则:由小字节向大字节自动转换
- byte->short(char)->int->long->float->double
int a = 10;
long b = a;
float c = a;
System.out.println(a); // 10
System.out.println(b); // 10
System.out.println(c); // 10.0
由大向小转换则需要强转
float a = 10.0f;
int b = (int) a;
System.out.println(a); // 10.0
System.out.println(b); // 10
封装类
| 名称 | 封装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |
自动拆装箱
-
拆箱
Integer a = 10; int b = a; -
装箱
int a = 10; Integer b = a;
基本数据类型和封装类的值可以相互传递。
Integer和int的比较
int a = 10;
Integer b = 10;
System.out.println(a == b);//true
- Integer会拆箱,转为int值与int进行比较
Integer和Integer的比较
Integer i1 = 10;
Integer i2 = 10;
System.out.println(i1 == i2); // true
System.out.println(i1.equals(i2)); // true
Integer i3 = new Integer(10);
System.out.println(i1 == i3); // false
System.out.println(i1.equals(i3)); // true
- Integer的值-128<= x<=127时,直接缓存在IntegerCache中,大于这个范围的时候,直接new Integer来创建Integer对象。
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = 128;
System.out.println(i1 == i2); // true
System.out.println(i1 == i3); // false
- 在IntegerCache缓存段时,获取的是同一个对象,所以结果为true;值超过127时则会创建新的对象,两个Integer的引用地址不一样结果为false
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i3 == i4); // false
System.out.println(i3.equals(i4)); // true
- 所以值超过128应该用equals()进行比较
本文介绍了Java中的八种基本数据类型(byte、short、int、long、float、double、boolean、char),包括它们的字节数、位数和默认值。讲解了自动类型转换规则,以及如何进行手动强转,并涉及封装类(如Byte、Integer等)的概念,拆箱与装箱以及Integer对象的缓存机制。
3783

被折叠的 条评论
为什么被折叠?



