A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡元 中级黑马   /  2012-4-1 11:21  /  2322 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

integer i = 100,这个表达式有一个对象就是基本数据100
interger i = new interger(100)咋就成两个对象了呀,各位给点解释!

6 个回复

倒序浏览
integer i = 100本来是一个对象,
new interger(100)相当于又新创建了一个!
而不是调用!

点评

并没有创建新的对象 这个和字符串对象不一样,这是1.5的新特性自动装箱,  发表于 2012-4-1 11:35
回复 使用道具 举报


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

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

Integer integer = new Integer(10);


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

回复 使用道具 举报
你都说了,100是一个对象,你new完之后当然又有了一个啊
回复 使用道具 举报
interger i = new interger(100)
一个是interger对象,一个是指向这个interger对象的引用对象。
回复 使用道具 举报

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);
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马