黑马程序员技术交流社区

标题: 对象个数问题 [打印本页]

作者: 胡元    时间: 2012-4-1 11:21
标题: 对象个数问题
integer i = 100,这个表达式有一个对象就是基本数据100
interger i = new interger(100)咋就成两个对象了呀,各位给点解释!
作者: 曹魁    时间: 2012-4-1 11:27
integer i = 100本来是一个对象,
new interger(100)相当于又新创建了一个!
而不是调用!
作者: 袁野    时间: 2012-4-1 11:40


自动装箱和享元设计模式(代码)
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);



作者: 曹魁    时间: 2012-4-1 11:42
本帖最后由 曹魁 于 2012-4-1 11:47 编辑

JDK1.5之前,要使用以下语句才能将int包装为一个Integer对象:

Integer integer = new Integer(10);


自动装箱运用的方法可以如下:
int i = 10;Integer integer = i;


作者: 张小庆    时间: 2012-4-1 16:29
你都说了,100是一个对象,你new完之后当然又有了一个啊
作者: 陈苓    时间: 2012-4-3 02:09
interger i = new interger(100)
一个是interger对象,一个是指向这个interger对象的引用对象。
作者: yangshang1    时间: 2012-4-3 07:02

public class TestInt {
public static void main(String[] args) {
        Integer a=new Integer(200);
        Integer a1=new Integer(200);//这不是两个对象吧
        Integer a2=200;
        Integer a3=new Integer(a2);//这才是两个对象吧
        System.out.println(a3);
}
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2