![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
kuku_Ming
乌龟一步步往上爬
展开
-
Java 内存分配策略
Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间主要分别是静态存储区(也称方法区)、栈区和堆区。 静态存储区(方法区):主要存放静态数据、全局 static 数据和常量。这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在。 栈区 :当方法被执行时,方法体内的局部变量(其中包括基础数据类型、对象的引用)都在栈上创建,并在方法原创 2017-03-31 11:09:00 · 160 阅读 · 0 评论 -
== 与equals的区别
== 与equals的主要区别是 == 常用于比较原生类型,而equals()方法用于检查对象的相等性。另一个不同的点是:如果== 和equals()用于比较对象,当两个引用地址相同,== 返回true。而equals()可以返回true或者false主要取决于重写实现。最常见的一个例子,字符串的比较,不同情况==和equals()返回不同的结果。equals()方法最重要的一点是,能够根据业务要求原创 2017-03-31 15:53:15 · 190 阅读 · 0 评论 -
java对象的强引用,软引用,弱引用和虚引用
1.强引用以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。2.软引用(SoftReference)如果一个对象只具有软引用,那就类似于可有可无的生活用品。如果内存转载 2017-03-31 16:41:04 · 92 阅读 · 0 评论 -
String和Vector源码的总结
关于String的源码的总结: String对象是不可变类型,返回类型为String的String方法每次返回的都是新的String对象,除了某些方法的某些特定条件返回自身。 String对象的三种比较方式:==内存比较:直接对比两个引用所指向的内存值,精确简洁直接明了。 equals字符串值比较:比较两个引用所指对象字面值是否相等。 hashCode字符串数值化比较:将字符串数值化。两个引用的ha原创 2017-04-01 15:09:32 · 125 阅读 · 0 评论 -
ArrayList和LinkedList源码对比总结
关于ArrayList的源码,给出几点比较重要的总结:ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的C原创 2017-04-01 15:10:43 · 118 阅读 · 0 评论 -
《Effective Java》学习笔记上
第2章 创建和销毁对象第1条:考虑用静态工厂方法代替构造方法静态工厂方法与构造方法的不同优点: 静态工厂方法有名称。当一个类需要多个带有相同签名的构造器时,就用静态工厂方法代替构造方法,并且慎重选择名称以便突出区别。 不用每次调用它们的时候都创建一个新对象。静态工厂方法能够为重复的调用返回相同的对象,有助于类总能严格控制在某个时刻那些实例不该存在。 可以返回原返回类型的任何子类型的对象。有更大的灵活原创 2020-03-10 15:28:40 · 133 阅读 · 0 评论