java基础
ZOHASP
真实的自己,做认真的事情,感悟人生,游历世界吧。。。
展开
-
static用法详解
如果一个类成员被声明为static,它就能够在类的任何对象创建之前被访问,而不必引用任何对象。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,例如:声明一个static的变量原创 2017-07-12 13:53:00 · 1132 阅读 · 0 评论 -
HashMap、HashTable和ConcurrentHashMap的区别
#HashMap HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable转载 2017-05-12 16:48:02 · 422 阅读 · 0 评论 -
java transient关键字
transient的作用和使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方转载 2017-07-17 13:55:34 · 246 阅读 · 0 评论 -
java的final关键字
Java中的final关键字非常重要,它可以应用于类、方法以及变量。将变量,方法和类声明为final代表了什么?使用final的好处是什么?final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。 final关键字的含义 final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了原创 2017-07-17 13:10:26 · 208 阅读 · 0 评论 -
LinkedList源码(1)
在使用List的 时候经常是ArrayList和LinkedList他们两个各有千秋,根据自己的业务使用情况来使用,现在咱们看看LinkedList的底层是如何实现各种操作的。 首先咱先看看他的继承和实现类:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E原创 2017-07-20 14:48:58 · 289 阅读 · 0 评论 -
ArrayList源码(3)
前两篇写了add和remove相关的源码,现在剩下的是零散的一些和Itr、SubList、ListItr几个相关的代码,这些应用次数也多但是其中相似的代码较多。 先说零散的几个: trimToSize()是减少存储使用的字符序列 ,如果缓冲区大于必要保持其当前的字符序列,那么它可能会调整大小,以成为更加节省空间.public void trimToSize() { modCount++;原创 2017-07-19 14:19:21 · 231 阅读 · 0 评论 -
ArrayList源码(2)
现在接着说ArrayList的另外一个常用方法remove(). remove同样也是存在两个方法 1.public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if原创 2017-07-18 18:49:12 · 282 阅读 · 0 评论 -
ArrayList源码(1)
ArrayList继承了AbstractList并实现了List接口。 三种初始化的方法:第一种:规定List长度的参数public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("I原创 2017-07-18 16:40:45 · 211 阅读 · 0 评论 -
static特殊用法--Java包静态导入
静态导包就是Java包的静态导入,用import static代替import静态导入包是JDK1.5中的新特性。 一般我们导入一个类都用 import com…..ClassName;而静态导入是这样:import static com…..ClassName.;这里的多了个static,还有就是类名ClassName后面多了个. ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方转载 2017-07-12 14:21:52 · 213 阅读 · 0 评论 -
static{}静态块
static{}静态块会在类被加载的时候执行一次,一般用来初始化静态变量和调用静态方法。 1、static{}语句块执行的时机,类被加载的准确含义 用Class.forName()显示加载的时候;实例化一个类的时候,如将main()函数的内容改为:Test t=new Test();//这种形式其实和1相比,原理是相同的,都是显示的加载这个类,读者可以验证Test t=new Test(原创 2017-07-12 14:18:06 · 321 阅读 · 0 评论 -
java volatile
volatile是共享变量“可见性”关键字,当该变量在一处更改后,在其他线程里读到的是这个修改后的值。它是轻量级的synchronized,Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度,执行开销更小。 我记着在一次面试里让我写一个并发的程序,我使用volatile来进行计数操作,面试官问我为什么用这个?解释原创 2017-07-18 14:39:26 · 211 阅读 · 0 评论