Java对象池原理分析
来源:互联网 发布:两个字符串相似度算法 编辑:程序博客网 时间:2024/06/05 16:07
大家都知道,对于java中的String类型,运行下面两条语句,都能创建一个abc字符串对象。
String str1 = "abc";
String str2 = new String("abc");
但二者的原理却不同,上面一个语句是到字符串常量池中去取abc字符串,如果存在,直接返回引用,而如果不存在,则新建一个abc字符串,然后返回引用。而第二个语句不去检查该字符串是否已经存在于常量池中,直接去新建一个abc字符串,并返回引用。
下面,我模拟一个带对象池的Dog类,以展示对象池的机制和原理。String的对象池并不完全与之相同。
package com.js.Sth;/** * 对象池原理 * @author js */import java.util.HashSet;public class PoolTest {public static void main(String[] args) {//对象池中取Dog dog1 = Dog.newInstance("lele", 30);Dog dog2 = Dog.newInstance("lele", 30);//所以dog1==dog2//重新创建,所以dog1!=dog3Dog dog3 = new Dog("lele", 30);System.out.println(dog1==dog2);System.out.println(dog1==dog3);}}class Dog{private String name;private int age;//对象池private static HashSet<Dog> pool = new HashSet<Dog>();public Dog(String name,int age){this.name = name;this.age = age;}public static Dog newInstance(String name,int age){//循环遍历对象池for(Dog dog:pool){if(dog.name.equals(name)&&dog.age==age){return dog;}}//如果找不到值相同的对象,则创建一个Dog对象//并把它添加到对象池中返回该对象】Dog dog = new Dog(name, age);pool.add(dog);return dog;}}
阅读全文
0 0
- Java对象池原理分析
- JAVA对象之克隆-原理分析
- Java对象池技术的原理及其实现 --Java对象的生命周期分析
- Apache commons-pool对象池原理分析
- Apache commons-pool对象池原理分析
- Apache commons-pool对象池原理分析
- Apache commons-pool对象池原理分析
- Apache commons-pool对象池原理分析
- JAVA 线程池原理分析
- Java对象池技术原理及其实现
- java 线程池的原理分析
- Java线程池--原理及源码分析
- 分析Java线程池执行原理
- Java线程池执行原理分析
- Java 线程池执行原理分析
- Java多线程--线程池的原理分析
- Java注解原理分析
- Java NIO原理分析
- Android bootloader(LK)启动流程
- opentack学习,版主帖子不错
- iOS第三方登录之Twitter(登录,获取用户信息)含demo
- linux awk命令详解
- java类加载器
- Java对象池原理分析
- 牛客网---2016---去哪儿寻找Coder
- GridView 鼠标移动变色
- redis Jedis存取list对象和map
- HTTP协议标准
- 【Swift】架构学习
- JavaWeb之JDBC
- jquery实现页面滑动到固定位置显示某个divhttp://blog.csdn.net/doudou_demo/article/details/47829249
- HTML_DOM事件