自动装箱和享元设计模式(代码)
public class AutoBox {
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer aobj = new Integer(3); // 早起的写法,
Integer iobj = 3; // 自动装箱,1.5的新特性
System.out.println(iobj + 7); // 自动拆箱
String name1 = new String("aaa");
String name2 = new String("aaa");
System.out.println(name1 == name2); // flase ,每个引用都有一个new,所以地址值不同
Integer a = 10;
Integer b = 10;
System.out.println(a == b); // true
Integer a1 = 135;
Integer b1 = 135;
System.out.println(a1 == b1); // flase
// 为什么结果不相同那???????????????
// 对于基本数据类型的整数要装箱成基本数据类型的整数,数字在一个字节之内 -128--127 之间(因为他们的使用频率高)
// 一旦被包装成Integer对象就被缓存起来,当下次用的时候先看缓存中有没有,有就拿出来用,节省内存空间
// 这样就可以成为一种设计模式,享元设计模式
// 例:在word文档中,每一个字母都有一个字符,有很多重复的字母,这样我们就可以定义26个字符就可以了
// sdfqqqs...s和s的区别就是 位置不同,s有个显示的方法 ,s.display(int x, int y)
//
// 享元设计模式的定义
// 如果有很多很小的对象,他们有很多相同的点,那么久可以把他们变成一个对象,
// 不同的东西变成外部的属性,作为方法的参数传入
Integer num1 = Integer.valueOf(3); // 返回一个表示指定的 int 值的 Integer 实例。
Integer num2 = Integer.valueOf(3);
System.out.println(num1 == num2);
|