12 2013 档案
摘要:枚举实现工厂方法:
阅读全文
摘要:1.default:存在还是必要的。万一枚举发生了变化,可能这部分代码无法顾及到。除非做相应的assertionError处理2. valueOf
阅读全文
摘要:虽然可以把枚举作为switch的参数,但实际并非这么用的
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:要理清线程安全的使用场景。
阅读全文
摘要:hashCode定位存储位置,冲突加链表。
阅读全文
摘要:HashMap的底层机制:
阅读全文
摘要:shuffle方法的使用:
阅读全文
摘要:1.
阅读全文
摘要:indexOf查找依据equals是否相等。
阅读全文
摘要:二分查找必须要有一个前提:
阅读全文
摘要:1.2.Comparable接口是作用于类本身,来表明类本身是可以按CompareTo这种约定排序。Comparator接口是一个为你生成一个单独的排序工具提供的约定。即可以创建一个实现这种约定的排序工具类,最终将这个工具类的实例告知sort方法。==回头补上Comparator的所有属性排序方法,同时只用写一个工具类,而不是一个属性排序就写一个工具类的方法。
阅读全文
摘要:否则容易由于size不一致,引发异常。eg:此时原列表长度为 4.子列表抛出异常。异常原因:子列表 发现此时 当前长度 与预期不一致,于是抛异常了。
阅读全文
摘要:删除一个列表100个元素中的位置为20~30的元素。因为subList是原列表的一个视图,删除视图即删除原数据。
阅读全文
摘要:因为subList是对原列表的一个视图上的操作。所以,subList上的操作也会影响到原List列表。于是 c.equals(c2);c1 就not euqals c
阅读全文
摘要:ArrayList,Vector都实现了List接口,继承了抽象类AbstractList,equals方法时在AbstractList中实现的。
阅读全文
摘要:ArrayList的add方法的实现是采用 System.arraycopy方法LinkedList是一个双向链接,对于插入操作,比ArrayList的效率要高50倍以上。删除操作,linkedList的效率也很高,比ArrayList快40倍以上但修改元素操作,ArrayList的效率高些。
阅读全文
摘要:对于ArrayList遍历时,建议采用下标方式,比for(X x: xList)方式要高很多效率。而对于linkedList这些已经建立了前后的 迭代关系的,则用for ..each语法相对会高效。
阅读全文
摘要:运行时报错简单说: asList返回的List无法实现动态增加和消除。
阅读全文
摘要:
阅读全文
摘要:1. 快速查找,直接遍历方法2.先排序,后取值注意此时可能要先clone原数组内容,否则排序了可能影响了之前的数据。3.有重复的可能要去重Treeset
阅读全文
摘要:好处在于,避免动态内存的口冲分配问题(1.5倍扩充),减小开销,因为扩充后需要重新预约空间和数据的搬移工作。但前提在于能大概知道需要多少的存储空间,从而避免浪费。
阅读全文
摘要:Arrays.copyof(obj,length);该方法是一个浅拷贝,容易导致新拷贝出来的obj和原来的obj是一样的地址,从而修改新obj的内容对原obj有影响。
阅读全文
摘要:如果要按拼音排序:而对于一些复杂的汉字的排序,是后来补充上去的。由于Java使用的是unicode编码,中文的unicode字符集是来源于gb18030,gb18030又是从gb2312发展起来的。所以完整排序比较困难。
阅读全文
摘要:这个深有体会。能够使用编码的地方,请尽量指定,以维持一致性。
阅读全文
摘要:Pattern pattern = Pattern.compile("\\b\\w+\\b");Mathcher mather = pattern.mathcer(str);
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:eg:replaceAll(A,regex)第二个参数是正则匹配
阅读全文
摘要:原因:
阅读全文
摘要:因为会经常覆写equals方法,其目的是根据业务规则判断两个对象是否相等。建议45:覆写equals方法时,不要识别不出自己public boolean equals(Object obj){ if(obj instanceof Person){ Person p = (Person)obj; return name.equalsIgnoreCase(p.getName().trim());}}如果name本身含有空格,那样会导致不相等了。 违背了自反省建议46:equals应该考虑null情况对称性问题上述name容易为null输入。建议47:传递性不要用instanceof来...
阅读全文
摘要:拷贝clone() 与new的区别?浅拷贝实现clone()方法的时候,如果用默认的super.clone()方法会调用Object类的默认拷贝,缺陷:不会把所有的属性全部拷贝一份,拷贝规则:(1)基本类型,拷贝其值(2)对象:拷贝引用地址,新拷贝的对象和原有对象共享该实例变量,不受访问权限控制。(3)String字符串:拷贝的是引用,但有点特殊,在修改时,会从字符串池中重新生成新的字符串。原有的字符串内容保持不变,故可以认为String是一个基本类型。为了实现深拷贝:在clone()方法的重载时,在设置属性时new一个对象出来。这样拷贝出来的和原来的不会共有一份引用。建议44.推荐使用序列化
阅读全文
摘要:public final class Math{ privateMath(){}}但Java反射可以绕过private.因此可做如下修改,抛出异常:public class UtilClass{ private UtilClass(){ throw new Error("Don't instantiate me!");}}
阅读全文
摘要:38.使用静态内部类提高封装性1.封装性2.限制性。静态内部类不持有外部类的引用。对静态内部类的访问做了限制。3.生命周期,不依赖于外部类。39.使用匿名类的构造函数eg:List l1 = new ArrayList();List l2 = new ArrayList(){};//匿名类List l3 = new ArrayList(){ {} {} {} {} }//匿名类,构造代码块40.匿名类的构造只能以构造代码块的形式出现,不能直接有构造函数。41.内部类实现多重继承eg:interface Father{ public int strong();}class FatherI...
阅读全文
摘要:1. 构造代码块会被加入到每一个构造函数中2.例外情况:当构造函数中又调用了this()构造函数的话,则不会再调用,即此时实际上只调用了一次构造代码块。eg:class Base(){{ System.out.println("Constructor");} Base(){} Base(String i){ this();}}
阅读全文
摘要:容易引起循环和堆栈运行溢出。class Father{ Father(){new Other();}}class Son extends Father{ Son(){}}class Other(){ Other(){ new Son();}}
阅读全文
摘要:通过这个例子,可以分析一下 父类 子类的变量的初始化过程:publicabstractclassServer{publicfinalstaticintDEFAULT_PORT=40000;publicServer(){intport=getPort();System.out.print(port);}protectedabstractintgetPort();}publicclassSimpleServerextendsServer{privateintport=100;publicSimpleServer(intport){this.port=port;}protectedintgetPor
阅读全文
摘要:覆写是针对非静态方法,不能针对静态方法。publicclassBase{publicstaticvoiddoSth(){System.out.println("Base:Sth");}publicvoiddoAnyth(){System.out.println("Base:Any");}}publicclassSubextendsBase{publicstaticvoiddoSth(){System.out.println("Sub:Sth");}publicvoiddoAnyth(){System.out.println("
阅读全文
摘要:publicclassClient{publicstaticinti=1;static{i=100;}publicstaticvoidmain(String[]args){System.out.println(i);}}//i = 100publicclassClient{static{i=100;}publicstaticinti=1;publicstaticvoidmain(String[]args){System.out.println(i);}}//i = 1奇怪,为啥能通过编译呢?静态变量是类加载时被分配到数据区的,它在内存中只有一个拷贝,不会被分配多次,后面的所有赋值操作都是值改变
阅读全文
摘要:建议31:在接口中不要存在实现代码publicinterfaceIB{publicstaticfinalISs=newIS(){publicvoiddoSth(){System.out.println("我在接口中实现了");}};}publicinterfaceIS{publicvoiddoSth();}publicclassClient{publicstaticvoidmain(String[]args){IB.s.doSth();}}//结果打印出,我在接口中实现了IB接口中声明了一个静态常量s,其值是一个匿名内部类,实现了接口IS.这是一种不好的实现,接口是一种契约
阅读全文
摘要:《你的知识需要管理》这本书中精要地阐述了知识需要学习、管理和转化成价值,以及如何更好地发挥价值的一些方法和经验。简要下来有如下几点:1. 需要学习知识2. 需要对知识进行分类和便于查阅3. 要系统地对自己的专业领域逐步精通,通过各种逐层深入的渠道来达到专家水准。4. 要扩充积累自己的人脉和交流5.提升自己的分享能力5.多多总结6.强调方法7.要将学到的知识运用到实际中,并转化为价值8.要学会更好地利用知识,通过不同的方式,变换、创新来发挥知识的更大的价值。
阅读全文
摘要:1. sh script.shchmod a+x script.sh./script.sh2. #!/bin/sh3. 定义变量var = valueecho $var4. 获得变量值的长度length = ${#var}5.算数操作let, (()),[]let result = no1 + no2let no1++let no1--result = $[ $no1 + 5]result =$((no1+5))6. /dev/null7. 2 > &18. cmd < file9.array_var = (1,2)10. alias11. datestart = $(da
阅读全文
摘要:项目中有这样一段代码:List aList = this.xxService.getList();List bList = this.xxService.getOtherList();aList.removeAll(bList);发现无法实现删除。后来发现 原来removeAll在实现时,会比较两个对象的所有域是否相同。除非自己实现了hashCode,equals方法来明确只要哪些项相等就认为相等才可以删除。很想看看removeAll的源码。。。
阅读全文
摘要:1. 读写字节流avaiable方法流打开要记得用close()关闭2. 字节流和字符流字节流, XXIn/OutStream字符流,抽象类 Reader/Writer的子类3.FileInputStreamFileOutputStreamSystem.getPropert("user.dir")组合流。目的:利用有些流的缓冲、数字特性等。常用:FileInput/OutputStreamBufferedInput/OutputStream4 文件输入输出字符流有读写 编码设定字节流没有5 UTF8编码0~7F. 0a6...a080~7FF. 110a10..a06 10
阅读全文
摘要:1. Thread.sleep(long millis)休眠给定的毫秒数2.Rnnable接口run()方法或者extends Threadrun()start()方法3.join()等待终止指定的线程stop()已过时的方法终止线程。suspend()resume()setPriorityyieldsetDaemon();守护线程4条件使得 已经获得锁对象,时候发现条件不满足时,则先放弃锁,阻塞,让别的对象获得锁并来激活这个条件满足。5synchronized在方法体之前加上这个修饰public synchronized void method(){ // methodbody}等价于pu.
阅读全文
摘要:1. Logger层次和配置2. 泛型意味着编写的代码可以被很多不同类型的对象所重用。3 .extendseg: T extends ComparableT extends A & B4. 虚拟机没有泛型,擦除。5. 通配符?? extends A6. super===============7.集合8. 迭代器接口获得下个元素。 next()判断是否有下一个元素 hasNext()Collection c =..Interator iter = c.iterator()while(iter.hasNext()){ String ele = iter.next();}//删除iter.
阅读全文

浙公网安备 33010602011771号