1. 静态工厂方法

静态工厂方法不必在每次调用它们的时候都创建一个新的对象;

  • Boolean.valueOf(boolean):

    public final class Boolean {public static final Boolean TRUE = new Boolean(true);public static final Boolean FALSE = new Boolean(false);public static Boolean valueOf(boolean b) {return (b ? TRUE : FALSE);}
    }

2. ArrayList 长度的动态拓展

  • 构造函数:

    // 底层数据结构,定长数组
    private transient Object[] elementData;public ArrayList(int initialCapacity) {super();if (initialCapacity < 0)throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity);this.elementData = new Object[initialCapacity];//属性指向新建长度为初始容量的临时数组
    }// 使用初始容量10构造一个空列表
    public ArrayList() {this(10);
    }/ *构造包含利用collection的迭代器按顺序返回的指定collection元素的列表* @param c 集合,它的元素被用来放入列表t* @throws NullPointerException 如果指定集合为 null*/
    public ArrayList(Collection<? extends E> c) {elementData = c.toArray(); //用Collection初始化数组elementDatasize = elementData.length;if (elementData.getClass() != Object[].class)elementData = Arrays.copyOf(elementData, size, Object[].class);
    }
  • 动态拓展 :

为了实现这一机制,java 引进了 Capacity 和 size 概念,以区别数组的 length。为了保证用户增加新的列表对象,java设置了最小容量(minCapacity),通常情况上,它大于列表对象的数目,所以 Capactiy 虽然就是底层数组的长度(length),但是对于最终用户来讲,它是无意义的。而size存储着列表对象的数量,才是最终用户所需要的。为了防止用户错误修改,这一属性被设置为privae的,不过可以通过size()获取。```
private void grow(int minCapacity) {// overflow-conscious codeint oldCapacity = elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1);//新容量扩大到原容量的1.5倍,右移一位相关于原数值除以2。if (newCapacity - minCapacity < 0)newCapacity = minCapacity;if (newCapacity - MAX_ARRAY_SIZE > 0)newCapacity = hugeCapacity(minCapacity);// minCapacity is usually close to size, so this is a win:elementData = Arrays.copyOf(elementData, newCapacity);
}
private static int hugeCapacity(int minCapacity) {if (minCapacity < 0) // overflowthrow new OutOfMemoryError();return (minCapacity > MAX_ARRAY_SIZE) ?Integer.MAX_VALUE :MAX_ARRAY_SIZE;//MAX_ARRAY_SIZE和Integer.MAX_VALUE为常量,详细请参阅下面的注解
}
```

Java 面试题 —— java 源码相关推荐

  1. 爆火的Java面试题-kafka源码解析与实战豆瓣

    1 基础 为什么 Java 中只有值传递? int 范围?float 范围? hashCode 与 equals,什么关系? String StringBuffer 和 StringBuilder 的 ...

  2. java线程实例题_java线程相关试题实例源码代码

    java线程相关试题实例源码代码. /** * 计算输出其他线程锁计算的数据 */ class ThreadA { public static void main(String[] args) { T ...

  3. 计算机毕业设计Java金融业撮合交易系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java金融业撮合交易系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java金融业撮合交易系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S ...

  4. 计算机毕业设计Java藏宝阁游戏交易系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java藏宝阁游戏交易系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java藏宝阁游戏交易系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S ...

  5. 计算机毕业设计Java宠物爱心驿站(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java宠物爱心驿站(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java宠物爱心驿站(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  6. 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档)

    计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S ...

  7. 计算机毕业设计Java个人财务管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java个人财务管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java个人财务管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  8. 计算机毕业设计Java宠物寄养管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java宠物寄养管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java宠物寄养管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  9. 计算机毕业设计Java住院管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java住院管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java住院管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  10. 计算机毕业设计Java高校迎新管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java高校迎新管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java高校迎新管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. ORACLE等待事件:direct path write
  2. 也谈Javascript的效率,createElement和innerHTML,为innerHTML平反
  3. Java数据结构和算法:图
  4. 三级计算机系统是什么情况,三级PC技术: 计算机的组成和分类
  5. Android之运行app提示The application could not be installed: INSTALL_FAILED_TEST_ONLY
  6. 2639-Bone Collector II (01背包之第k优解)
  7. 17 操作系统第四章 磁盘管理 磁盘的结构 磁盘调度算法 减少磁盘延迟时间的方法
  8. Android 系统(83)---屏幕尺寸
  9. ajax 异步加载 list集合数据
  10. Windows 平台下Myeclipse 10 中SVN 插件使用教程(TortoiseSVN)
  11. 设计模式学习笔记之二:观察者模式
  12. Centos下安装Mongodb
  13. div section article区分--20150227
  14. java mp4转码 h264_mp4格式的视频,编码方式mpeg4,转化为h264
  15. Json汉化-使用JavaScript和百度翻译API免费实现Json文件的汉化
  16. An工具介绍之3D工具
  17. 软件开发模式:瀑布与敏捷应用思考
  18. 解决mysql sum求和返回null问题或IFNULL应用
  19. 成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)
  20. 【论文翻译】Cluster Contrast for Unsupervised Person Re-Identification(2021)

热门文章

  1. Adobe AIR教程:面向iOS设备的原生扩展
  2. tensorflow 显存 训练_tensorflow手动指定GPU以及显存大小
  3. php mysql 获取排名,Mysql排序获取排名的实例代码
  4. java做h5小游戏服务端_神藏西游H5游戏源码服务端+客户端+搭建教程
  5. Java设计模式与实践
  6. Keras——Keras简介、安装及backend
  7. Linux C++11——多线程类thread
  8. Learn OpenGL(七)——OpenGL中使用着色器的基本步骤及GLSL渲染简单示例
  9. Qt之HTTP——发送HTTP请求
  10. Java 基础 引用数据类型 和 流程控制