zoukankan      html  css  js  c++  java
  • Java 7 Pocket Guide 读书笔记

    【第一章】
    1. 类名是名词,遵循CamelCase命名法。
    2. 接口可以是形容词和名词,但是假如是形容词的话,必须以ableible结尾。
    3. 函数名以小写开头,必须带有动词
    4. 成员变量名,必须是名词小写无前缀
    5. 泛型一般用T,键值对的话用<K,V>
    6. 常量全大写,词与词间下划线隔开。
    7. 枚举型成员全大写
    8. 包名全小写可以含下划线
    9. 缩写的话,只有首字母是大写,其余全小写,例如Gps

    【第二章】
    1. 普通注释为//、/* ... */。
    2. Javadoc的注释是 /** ... */。
    3. 关键词包括但不限于: synchronized, native, final, finally, transient, volatile, default, instanceof, strictfp
    4. 变量名可以以$开头。
    5. 调用String.intern()方法可以把一个字符串塞到字符串池中。
    6. 回车符: MAC OS 9 之前是用 、MAC OS X以及Unix是用 、Windows用

    【第三章】
    1. Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.Nan, -0.0(接近0的很小的负数)
    2. Double也有上面的成员。
    3. 装箱类型: char<->Character、 boolean <-> Boolean、...。

    【第四章】
    1. 所有引用类型都是派生自java.lang.Object
    2. Annotation枚举类型也是引用类型。
    3. 数组很奇怪,如果没有赋初值,他的值默认是null(就算是局部变量也是的)。

    【第五章】
    1. 继承用 extends
    2. 接口用 implements
    3. 支持重载overload
    4. 支持越位重写,override),但是有条件:父方法不能是 final, private, static、重载受保护的方法不能加访问修饰符、重载之后访问权限不能变小、不能抛出新的Checked异常(这个明显违反OCP)
    5. 支持可变的函数参数列表(...),用法类似C#的params。
    6. 虚类和虚函数都要用abstract来修饰。
    7. 静态初始化块(static initializers)和C#中的静态初始化构造函数差不多,但是区别是Java的一个类可以有多个。语法是static {...}
    8. 枚举类型可以有成员变量,成员函数,和构造函数。
    9. Annotations通过@interface关键字来定义,annotation可以有参数,但是参数类型只允许为基本类型、String、Class、枚举类型等,并且参数不能为空。(比较复杂,详见这篇文章:http://www.cnblogs.com/phoebus0501/archive/2011/02/21/1960077.html

    【第六章】
    1. 增强的for循环:for (Item item : items) { ... }
    2. assert的判断表达式和输出信息之间用冒号分隔: assert( expression : "说明出错的情况" );。

    【第七章】
    1. Checked异常,意思是在编译时就能check的。所以是函数签名的一部分(慎用)
    2. Error不用于exception,他一般指致命错误,没必要try-catch了,比如OutOfMemory, StackOverflow, VirtualMachineError等。
    3. try-catch-finally捕捉。
    4. 自定义异常可以派生自Exception类。
    5. 异常有一些成员函数:getMessage()、toString()、printStackTrace()。

    【第八章】
    1. native关键字:JNI用的。用于和其他语言交互,比如C++。
    2. staticfp关键字:遵循IEEE 754-1985 floating point标准。
    3. synchronized关键字:thread safe。
    4. transient关键字:表示该成员不能被序列化。
    5. volative关键字:表示该成员的值不能被cache。

    【第10章】
    1. JAR是一个打包工具。

    【第11章】
    1. 各种GC: Serial、Parallel、Parallel Compacting、CMS、G1。
    2. 显式调用GC: System.gc()、Runtime.getRuntime().gc()。
    3. 每个类都有一个finalize()方法,gc在回收前,会调用这个方法,但是这个不是保证的。

    【第12章】
    1. NIO: New IO,Java7里面又出现个NIO 2.0。



    2. 序列化与反序列化,可以使用ObjectIn/OutputStream。
    3. Zip/Unzip:ZipIn/OutputStream。

    【第14章】
    1. 多线程1: 继承Thread类,实现run()方法,实例化即可运行。
    2. 多线程2: 继承Runnable接口,传给Thread的实例。 
    3. Thread有一些成员方法:getPriority(), getState(), isAlive(), join(), start(), isInterrupted(), notify(), wait(), activeCount(), sleep(), yield()。
    4. 线程池: ThreadPoolExecutor。
    5. 并发容器: ConcurrentHashMap, CxxSkipListMap, CxxSkipListSet, CxxMap, CopyOnWriteArrayList, CopyOnWriteArraySet, PriorityBlockingQueue, BlockingDeque, BlockingQueue。
    6. 同步原语: Semaphore, CountDownLatch, CyclicBarrer, Exchanger

    【第15章】
    1. 集合接口: List, Map, Queue, Set
    2. 集合实现: ArrayList, LinkedList, Vector, HashMap, Hashtable, LinkedHashMap, TreeMap, PriorityQueue, HashSet, LinkedHashSet, TreeSet。
    3. 集合方法: addAll(), max(), min(), reverse(), shuffle, copy, rotate, swap, fill, binarySearch, sort, fill, replaceAll() newSetFromMap()。
    4. 比较器: Comparator接口。

    【第16章】
    1. 语法: interface List <E> extends Collection<E> {...}

    【第17章】
    1. 运行脚本语言: new ScriptEngineManager().getEngineByExtension("js").eval("xxx");
    2. 运行脚本语言中的函数: Invocable.invokeFunction("foo", params...);
    3. Ruby也是可以执行的。

    【第18章】
    1. Jelly可以把XML变成可运行的java代码。
    2. Spring是一个创建java程序的框架。
    3. JGoodies是Java界面库。http://www.jgoodies.com
    4. http://commons.apache.org/: 可重用的java组件。
  • 相关阅读:
    solaris如何启动ssh服务
    网页实现插入图片—css与html的区别
    Python与RPC -- (转)
    Python中的异常处理 -- (转)
    Python的异常处理机制 -- (转)
    HTML 学习
    链表练习 链表反转 链表插入..
    php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
    PHP队列的实现 算法
    利用redis List队列简单实现秒杀 PHP代码实现
  • 原文地址:https://www.cnblogs.com/puncha/p/3876859.html
Copyright © 2011-2022 走看看