Line 193: | Line 193: | ||
==java finalize method == |
==java finalize method == |
||
* http://howtodoinjava.com/2012/10/31/why-not-to-use-finalize-method-in-java/ |
* http://howtodoinjava.com/2012/10/31/why-not-to-use-finalize-method-in-java/ |
||
+ | |||
+ | ==java enum == |
||
+ | * http://javahowto.blogspot.com/2008/04/java-enum-examples.html - a doc about enum |
||
+ | * http://www.mkyong.com/java/java-enum-example/ - an example of enum constructor |
Revision as of 12:52, 17 November 2013
doc & reference
- http://howtodoinjava.com/ - how to do in java. A very good guy who share lots of his experience
- http://www.mkyong.com/ - Another site which you can find java dev experience
- http://www.careercup.com/ - career cup. A site you can find interview questions.
Singleton
- http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization - singleton double check locking and lazy initialize
- http://en.wikipedia.org/wiki/Singleton_pattern#Lazy_initialization
static synchronized method
- difference between static synchronized method and non-static synchronized method
- The lock objects are difference between static synchronized method and non-static synchronized method. Static synchronized method lock object is class object (lock object: FooClass.class), non-static synchronized lock object is instance object (lock object: this).
public class Foo {
public static synchronized void methodA() {}
public synchronized void methodB() {}
}
It's roughly equals
public class Foo {
public static void methodA() {
synchronized(Foo.class) {
...
}
}
public void methodB() {
synchronized(this){
}
}
}
HashMap
- http://howtodoinjava.com/2012/10/09/how-hashmap-works-in-java/ - how HashMap work in java
- http://howtodoinjava.com/2012/10/09/working-with-hashcode-and-equals-methods-in-java/ - working with equals(), hashCode() in java
Java 5 new features
Generics
- Add compile time type safe
- Elimination drudgery class casting
old style:
List list = new ArrayList();
...
String s = (String)list.get(0);
new style:
List<String> list = new ArrayList<String>();
...
String s = list.get(0);
Enhance for Loop
- The new enhanced for loop provides a simple, consistent syntax for iterating over collections and arrays.
old style:
String[] arr = new String[]{"alpha", "beta"};
for (int i=0; i<=arr.length; i++) {
String t = arr[i];
System.out.println(t);
}
new style:
String[] arr = new String[]{"alpha", "beta"};
for (String s : arr) {
System.out.println(s);
}
- some limitation of enhance loop, some time we need index and iterator
example need index:
for (int i=0; i<numbers.length; i++) {
if (i !=0 && i != numbers.length - 1) {
System.out.println(",");
}
System.out.println(numbers[i]);
}
example need iterator:
for (Iterator<String> it = n.iterator(); it.hasNext(); ) {
if (it.next() < 0) it.remove();
}
Auto Boxing/ Auto un-boxing
- auto conversion between primitives and wrappers
Type safe Enums
- Enums are type safe.
- Enums are Serializable and Comparable by default
- Programmers doesn’t require to do extra work of implementing toString(), equals() and hashCode(). Enums provide implementation of these by default.
- Programmers can use Enums in switch-case statements.
- Enums are permitted to implement to interfaces.
old style:
public class Dialog {
public static final int SHORT = 0;
public static final int LONG = 1;
public static void show(int duration) {
if(duration == SHORT) ...
else if (duration == LONG) ...
}
....
Dialog.show(Dialog.LONG);
}
new style:
public class Dialog {
public enum Duration {LONG, SHORT};
public static void show(Duration e) {
if (e == Duration.SHORT) ...
else if (e == Duration.Long) ...
}
...
Dialog.show(Duration.Long);
}
Varargs
- Variable size argument lists for method
void orderCar(int modelNo, String... options) {}
orderCar(Benz.E_CLASS, "navigation", "hi pass");
public void foo(int i, String... strings) {
String[] someStrings = strings;
// rest of method body
}
Annotation (metadata)
- attach extra information about code
- compiler check
- code analysis
@Override
public boolean equals(Object obj)
@Deprecated
public doSomething() ...
@SuppressWarnings("deprecation")
public static void selfDestruct() {
Thread.currentThread().stop();
}
static import
- avoiding qualifying static members
formated output
- printf(), String.format();
System.out.printf("Hello %s %s, "world", "hi");
String s = String.format("The meaning of %s", "right");
a Iterator with predicate
- FilterIterator in commons cllection
https://github.com/yren/java-basic/blob/master/src/main/java/com/lokvin/basic/FilterIterator.java
java finalize method
java enum
- http://javahowto.blogspot.com/2008/04/java-enum-examples.html - a doc about enum
- http://www.mkyong.com/java/java-enum-example/ - an example of enum constructor