Java-02: Basic
数据类型
基本数据类型
- 整数类型:byte/8, short/16, int/32, long/64
- 浮点类型:float/32, double/64
- 字符类型:char/16
- 布尔类型:boolean/1
包装类型
包装类型让基本数据类型拥有了对象的特性,方便它们参与到面向对象的编程中,尤其是在集合框架、泛型以及需要表示 null 值时。
java
Integer i = 10; // 装箱
int j = i; // 拆箱
// 集合
ArrayList<Integer> numbers = new ArrayList<>(); // 不能使用ArrayList<int>
numbers.add(1);
// 泛型
Map<String, Integer> map = new HashMap<>(); // 键值对都要使用包装类型
// 方法参数
public void print(Integer i) {
System.out.println(i);
}
// 返回值
public Integer add(int a, int b) {
return a + b;
}
// 表示 null 值
Integer i = null;
// 与字符串互相转换
String str = "123";
Integer i = Integer.parseInt(str);
String str2 = i.toString();
// 网络编程和IO操作
Socket socket = new Socket("localhost", 8080);
File file = new File("test.txt");
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(file);
// ORM
User user = userDao.findById(1);
缓存池
缓存池:为了优化性能和节省内存,Java 为一些常用的值(如 -128 到 127)提供了一个缓存池,当需要这些值时,可以直接从缓存池中获取,而不是重新创建。
缓存池范围:
- Byte、Short、Integer、Long:默认缓存范围是 -128 到 127。
- Character:缓存范围是 0 到 127(ASCII码)。
- Boolean:缓存 true 和 false 两个实例。
java
public class CachePoolExample {
public static void main(String[] args) {
// Integer 缓存池示例
Integer i1 = 100; // 自动装箱,100在-128到127范围内
Integer i2 = 100; // 自动装箱,从缓存池中获取
Integer i3 = 200; // 自动装箱,200超出-128到127范围,会创建新对象
Integer i4 = 200; // 自动装箱,200超出范围,会创建新对象
System.out.println("i1 == i2: " + (i1 == i2)); // true,因为都是从缓存池中获取的同一个对象
System.out.println("i3 == i4: " + (i3 == i4)); // false,因为创建了两个不同的对象
// Boolean 缓存池示例
Boolean b1 = true;
Boolean b2 = true;
System.out.println("b1 == b2: " + (b1 == b2)); // true,Boolean缓存了true和false
// Character 缓存池示例
Character c1 = 'a'; // 'a'的ASCII码是97,在0到127范围内
Character c2 = 'a';
Character c3 = '中'; // '中'的ASCII码超过127
Character c4 = '中';
System.out.println("c1 == c2: " + (c1 == c2)); // true
System.out.println("c3 == c4: " + (c3 == c4)); // false
// 正确比较包装类型的值应该使用 equals() 方法
System.out.println("i3.equals(i4): " + i3.equals(i4)); // true
}
}
new Integer(123) 与 Integer.valueOf(123) 的区别: new Integer(123) 会创建一个新的对象,而 Integer.valueOf(123) 会从缓存池中获取一个对象
javaInteger i1 = new Integer(123); Integer i2 = Integer.valueOf(123); System.out.println(i1 == i2); // false Integer i3 = Integer.valueOf(123); Integer i4 = Integer.valueOf(123); System.out.println(i3 == i4); // true
String
wip