于缓冲区
Java中的Integer缓冲区是一种缓冲器,用于缓存Integer对象。在Java中,整数是基本数据类型,而对象是由它们的包装器类来表示的。当需要频繁创建和销毁Integer对象时,使用缓冲区可以提高性能。
Java中的Integer缓冲区是在内部维护了一个缓存池,由其维护在范围-128到127之间所有的整数对象。当使用valueOf方法创建整数对象时,如果值在缓存池范围内,则直接从缓存池中返回该对象,否则创建新的对象。缓存池可以减少系统中创建的对象数量,节省了内存。
例如,下面的代码创建两个Integer对象,因为它们的值不在缓存池的范围内:
Integer a = new Integer(100); //创建新对象
Integer b = new Integer(100); //创建新对象
而下面的代码创建了两个引用同一个对象的Integer对象:
Integer c = Integer.valueOf(100); //从缓存池中返回对象
Integer d = Integer.valueOf(100); //从缓存池中返回同一对象
使用Integer缓冲区可以提高程序的性能和效率。但是,需要注意缓冲池的大小范围,如果值超出范围,则会导致新对象的创建,所以应根据具体情况进行缓存池的调整。Java中的Integer缓冲区是一种缓冲器,用于缓存Integer对象。在Java中,整数是基本数据类型,而对象是由它们的包装器类来表示的。当需要频繁创建和销毁Integer对象时,使用缓冲区可以提高性能。
Java中的Integer缓冲区是在内部维护了一个缓存池,由其维护在范围-128到127之间所有的整数对象。当使用valueOf方法创建整数对象时,如果值在缓存池范围内,则直接从缓存池中返回该对象,否则创建新的对象。缓存池可以减少系统中创建的对象数量,节省了内存。
例如,下面的代码创建两个Integer对象,因为它们的值不在缓存池的范围内:
Integer a = new Integer(100); //创建新对象
Integer b = new Integer(100); //创建新对象
而下面的代码创建了两个引用同一个对象的Integer对象:
Integer c = Integer.valueOf(100); //从缓存池中返回对象
Integer d = Integer.valueOf(100); //从缓存池中返回同一对象
使用Integer缓冲区可以提高程序的性能和效率。但是,需要注意缓冲池的大小范围,如果值超出范围,则会导致新对象的创建,所以应根据具体情况进行缓存池的调整。
原始笔记
发现问题
public class Test1 {
public static void main(String[] args) {
Integer num1 = new Integer(1);
Integer num2 = new Integer(1);
System.out.println(num1 == num2); // false
Integer num3 = 2;
Integer num4 = 2;
System.out.println(num3 == num4); // true
Integer num5 = 200;
Integer num6 = 200;
System.out.println(num5 == num6); // false
}
}
代码本质
public class Test1 {
public static void main(String[] args) {
Integer num1 = new Integer(1);
Integer num2 = new Integer(1);
System.out.println(num1 == num2); // false
Integer num3 = Integer.valueOf(2);
Integer num4 = Integer.valueOf(2);
System.out.println(num3 == num4); // true
Integer num5 = Integer.valueOf(200);
Integer num6 = Integer.valueOf(200);
System.out.println(num5 == num6); // false
}
}
valueOf方法