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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LuckyQS 中级黑马   /  2013-12-31 14:13  /  1021 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 LuckyQS 于 2014-1-2 09:32 编辑

Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1 == i2);//true
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i3 == i4);//false
我想问一下自动装箱时为什么数值在byte范围内容内时,会指向同一个对象。
张老师说这是享元模式,不明白什么是享元模式?请大神解释一下。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
因为在byte范围内的数值用的比较频繁,为了避免重复多次创建对象占用大量内存,故而使用享元设计模式,分配一块内存给byte范围内的数值,当重复使用到这个范围内数值进行装箱时,只需在内存内创建一遍对象就行了,节省内存。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
享元模式(英语:Flyweight Pattern)简单的来说就是---->有很多小的对象,其中他们有很多的属性相同,这时就把他们变成一个对象,把不同的属性变成方法的参数,称之为外部状态;相同的属性称之为这个对象的内部状态。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
享元模式就是那些经常用调用的数据放到内存中,然后调用的时候他们就会调用这一个,这个里面的是一些比较写的数据,就是byte里面包括的,数据大了,就不行了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马