java高新技术-基本数据类型拆装箱及享元设计模式

享元设计模式

public static void main(String[] args) {
        Integer iObj = 3;  //自动装箱
        System.out.println(iObj + 12); //自动拆箱

        Integer i1 = 13;
        Integer i2 = 13;
        System.out.println(i1 == i2); //true 享元设计模式(flyweight) -128~127

    }

对于基本类型的整数要装箱成为Integer对象的时候,如果这个数字在1个字节之内(-128~127),要包装成Integer对象的时候,就把这些对象缓存起来放在一个池里边,下次再进行整数包装时先看池里有没有,如果有直接从池里边拿,这样节省了内存空间。系统认为这个小的整数使用频率比较高,会反复出现。

如果每次出现都包装成一个对象,那么内存中的对量会越来越多,但是这个对象本来就不怎么改变的,没必要每个都搞成一个对象,这就是享元设计模式。

如下也是相等的

Integer i3 = Integer.valueOf(3);
Integer i4 = Integer.valueOf(3);
System.out.println(i3 == i4);  //true
时间: 2025-01-02 16:43:59

java高新技术-基本数据类型拆装箱及享元设计模式的相关文章

黑马程序员_Java基本数据的自动拆装箱及享元设计模式视频学习笔记

装箱:把基本数据类型装成java类(被托管?). 拆箱:把java类拆成基本数据类型(取消托管?). java新版本增加了自动装箱拆箱的特性,使得java基本类和基本数据类型可以无需转换直接参与计算.如: Integer iObj = 3 //自动装箱. system.out.println(iObj + 12);//自动拆箱. 在较早版本中不支持自动装箱拆箱,以上两句语句是错误的.  知识点1: 在装箱时,将基本数值类型装成java类Integer对象, 如: Integer i1 = 13:

一文读懂什么是Java中的自动拆装箱

基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化. Java基本类型共有八种,基本类型可以分为三类: 字符类型char 布尔类型boolean 整数类型byte.short.int.long 浮点数类型float.double. Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变.

JAVA笔记8__内部类/链表的实现/包装类、享元设计模式/包、访问修饰符

/** * 内部类:在一个类的内部中定义的类 * 1. class Outer{ * class Inner{} * } * 2. class Outer{ //方法内部类 * public void doSomething(){ * class Inner(){} * } * } * 2*:1.方法内部类只能在定义该内部类的方法中实例化 * 2.方法内部类对象不能使用该内部类所在方法的非final局部变量 * (原因:局部变量随着方法调用的结束而消失,而new出来的内部类对象的作用域是可以在方

设计模式第8篇:享元设计模式

一.享元设计模式要解决的问题 享元设计模式是一种结构设计模式,当我们要创建同一个类的大量对象时,可以考虑享元设计模式.由于每一个对象都会消耗内存空间,享元设计模式通过共享对象达到降低内存消耗. 二.享元设计模式的要点 1.需要创建的对象数量特别巨大. 2.对象创建占用内存大且耗时. 3.对象属性可以分为内部属性和外部属性,对象的外部属性应由客户端程序定义. 为了使用享元设计模式,我们需要将对象属性分为内部属性和外部属性,内部属性使该对象保持唯一性,外部属性由客户端程序定义并通常用来执行一些不同的

二十一、享元设计模式

1. 享元设计模式介绍 享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,用来缓存可共享的对象,达到对象共享.避免创建过多对象的效果. 定义: 使用共享对象可有效地支持大量的细粒度对象. 2. 享元设计模式使用场景 如果一个系统中存在大量的相同或者相似的对象,由于这类对象的大量使用,会造成系统内存的消耗,可以使用享元模式来减少系统中对象的数量. 对象的大部分状态都可以外部化,可这些外部状态传入对象. 3. 享元设计模式UML类图 角色介绍 FlyWeight:享元对象抽象基

自动装箱与拆箱引发的享元设计模式

[java] view plain copy /** * 自动装箱与拆箱 */ public class Autoboxing { public static void main(String[] args) { Integer num1 = 20;          //自动装箱 int num2 = new Integer(20);     //自动拆箱 System.out.println(num2 == num1);   //true //-128~127之间的同一个Intege对象相比

浅谈java中的自动拆装箱

Java在jdk1.5之后推出的一个新特性:自动拆装箱. 该特性不是jvm认可的,而是编译允许 public class Integerdemo03 {     public static void main(String[] args) {         /**          * 编译器在编译下列代码时补充了代码          * Integer n= Integer.valueOf(1);          * 自动装箱          */         int a=100;

java中的自动拆装箱

一:是什么 java的自动拆装箱,是从jdk1.5之后被引入的,java中的类型分为基本类型和引用类型,而自动拆装箱,可以让基本类型和对应的包装类,无缝转换.先拿最基本的来看. public class UntoBoxing { public static void main(String[] args) { int i = new Integer(1); Integer i2 = 10; } } 二:为什么 先说结论:自动拆装箱是编译器的功劳,相当于一个语法糖,在编译成class字节码文件期间

享元设计模式 -- 线程的不安全性

这篇博客主要分析了下享元模式的线程不安全行,因为网上没找到相关的博客, 享元模式的学习参考: http://www.cnblogs.com/chenssy/p/3330555.html http://www.cnblogs.com/rush/archive/2011/10/01/2197785.html 今天看了下享元的设计模式, 概念如下: 所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用.系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用. 共享模式是支持大量