diff --git a/README.md b/README.md
index a54c7e3..8ee0926 100644
--- a/README.md
+++ b/README.md
@@ -31,6 +31,11 @@ stackoverflow-Java-top-qa
* [wait()和sleep()的区别](https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/difference-between-wait-and-sleep.md)
* [能否在一个构造器( `constructor` )中调用另一个构造器](https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/How-do-i-call-one-constructor-from-another-in-java.md)
* [ `finally` 代码块总会被执行么](https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/Does-finally-always-execute-in-Java.md)
+* [在java中声明数组](https://github.com/chungchi300/stackoverflow-java-top-qa/blob/master/contents/declare-array-in-java.md)
+
+> 随机
+
+* [为什么以下用随机生成的文字会得出 “hello world”?](https://github.com/chungchi300/stackoverflow-java-top-qa/blob/master/contents/why-does-this-code-using-random-strings-print-hello-world.md)
> 编程技巧
@@ -52,14 +57,16 @@ stackoverflow-Java-top-qa
* [如何测试 private 方法,变量或者内部类](https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/How_to_test_a_class_that_has_private_methods,_fields_or_inner_classes.md)
+> Android
+* [如何取得android唯一码?](https://github.com/chungchi300/stackoverflow-java-top-qa/blob/master/contents/is-there-a-unique-android-device-id.md)
+
+1,2,3
### 待翻译问题链接(还剩x问题)
- [Why is subtracting these two times (in 1927) giving a strange result?](http://stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times-in-1927-giving-a-strange-result)
- [Proper use cases for Android UserManager.isUserAGoat()?](http://stackoverflow.com/questions/13375357/proper-use-cases-for-android-usermanager-isuseragoat)
- [Creating a memory leak with Java [closed]](http://stackoverflow.com/questions/6470651/creating-a-memory-leak-with-java)
- [Why is char[] preferred over String for passwords?](http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string-for-passwords)
- [Why is printing “B” dramatically slower than printing “#”?](http://stackoverflow.com/questions/21947452/why-is-printing-b-dramatically-slower-than-printing)
-- [Is there a unique Android device ID?](http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id)
-- [Why does this code using random strings print “hello world”?](http://stackoverflow.com/questions/15182496/why-does-this-code-using-random-strings-print-hello-world)
- [How can I create an executable jar with dependencies using Maven?](http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven)
- [How to avoid Java code in JSP files?](http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files)
- [Why is executing Java code in comments with certain Unicode characters allowed?](http://stackoverflow.com/questions/30727515/why-is-executing-java-code-in-comments-with-certain-unicode-characters-allowed)
@@ -67,10 +74,8 @@ stackoverflow-Java-top-qa
- [“implements Runnable” vs. “extends Thread”](http://stackoverflow.com/questions/541487/implements-runnable-vs-extends-thread)
- [Convert a String to an enum in Java](http://stackoverflow.com/questions/604424/convert-a-string-to-an-enum-in-java)
- [Android SDK installation doesn't find JDK](http://stackoverflow.com/questions/4382178/android-sdk-installation-doesnt-find-jdk)
-- [Initialization of an ArrayList in one line](http://stackoverflow.com/questions/1005073/initialization-of-an-arraylist-in-one-line)
- [Java inner class and static nested class](http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class)
- ['Must Override a Superclass Method' Errors after importing a project into Eclipse](http://stackoverflow.com/questions/1678122/must-override-a-superclass-method-errors-after-importing-a-project-into-eclips)
-- [Declare array in Java?](http://stackoverflow.com/questions/1200621/declare-array-in-java)
- [Fastest way to determine if an integer's square root is an integer](http://stackoverflow.com/questions/295579/fastest-way-to-determine-if-an-integers-square-root-is-an-integer)
- [How to fix: Unsupported major.minor version 51.0 error?](http://stackoverflow.com/questions/10382929/how-to-fix-unsupported-major-minor-version-51-0-error)
- [What is reflection and why is it useful?](http://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful)
diff --git a/contents/declare-array-in-java.md b/contents/declare-array-in-java.md
new file mode 100644
index 0000000..8ae8846
--- /dev/null
+++ b/contents/declare-array-in-java.md
@@ -0,0 +1,32 @@
+##在java中声明数组
+
+###问题描述:
+你是如何在java中声明数组的。
+
+你可以进行用数组声明或者数组常量(注意:当你声明或者立即影响了变量,数组常量将不能再用来分配一个数组)
+对于原始类型:
+```
+int[] myIntArray = new int[3];
+int[] myIntArray = {1, 2, 3};
+int[] myIntArray = new int[]{1, 2, 3};
+```
+物件类,比如String类,也是相同的:
+```
+String[] myStringArray = new String[3];
+String[] myStringArray = {"a", "b","c"};
+String[] myStringArray = new String[]("a", "b", "c");
+```
+
+注意:
+1.数组常量
+```
+//for a function return type is int[],you cannot return
+{1,2,3}
+//but you can return
+new int[]{1, 2, 3};
+```
+
+[Stackoverflow链接:Declare array in Java?](http://stackoverflow.com/questions/1200621/declare-array-in-java#)
+
+
+
diff --git a/contents/is-there-a-unique-android-device-id.md b/contents/is-there-a-unique-android-device-id.md
new file mode 100644
index 0000000..7a0fbb8
--- /dev/null
+++ b/contents/is-there-a-unique-android-device-id.md
@@ -0,0 +1,115 @@
+##如何取得android唯一码?
+
+###问题
+每一个android装置都有唯一ID吗?如果有?怎么用java最简单取得呢?
+
+###回答1(最佳)
+
+如何取得android唯一码?
+好处:
+1.不需要特定权限.
+2.在99.5% Android装置(包括root过的)上,即API => 9,保证唯一性.
+3.重装app之后仍能取得相同唯一值.
+
+伪代码:
+
+```
+if API => 9/10: (99.5% of devices)
+
+return unique ID containing serial id (rooted devices may be different)
+
+else
+
+return unique ID of build information (may overlap data - API < 9)
+```
+
+代码:
+
+```java
+
+/**
+ * Return pseudo unique ID
+ * @return ID
+ */public static String getUniquePsuedoID() {
+ // If all else fails, if the user does have lower than API 9 (lower
+ // than Gingerbread), has reset their device or 'Secure.ANDROID_ID'
+ // returns 'null', then simply the ID returned will be solely based
+ // off their Android device information. This is where the collisions
+ // can happen.
+ // Thanks http://www.pocketmagic.net/?p=1662!
+ // Try not to use DISPLAY, HOST or ID - these items could change.
+ // If there are collisions, there will be overlapping data
+ String m_szDevIDShort = "35" + (Build.BOARD.length() % 10) + (Build.BRAND.length() % 10) + (Build.CPU_ABI.length() % 10) + (Build.DEVICE.length() % 10) + (Build.MANUFACTURER.length() % 10) + (Build.MODEL.length() % 10) + (Build.PRODUCT.length() % 10);
+
+ // Thanks to @Roman SL!
+ // http://stackoverflow.com/a/4789483/950427
+ // Only devices with API >= 9 have android.os.Build.SERIAL
+ // http://developer.android.com/reference/android/os/Build.html#SERIAL
+ // If a user upgrades software or roots their device, there will be a duplicate entry
+ String serial = null;
+ try {
+ serial = android.os.Build.class.getField("SERIAL").get(null).toString();
+
+ // Go ahead and return the serial for api => 9
+ return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
+ } catch (Exception exception) {
+ // String needs to be initialized
+ serial = "serial"; // some value
+ }
+
+ // Thanks @Joe!
+ // http://stackoverflow.com/a/2853253/950427
+ // Finally, combine the values we have found by using the UUID class to create a unique identifier
+ return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();}
+```
+###回答2
+好处:
+1.不需要特定权限.
+2.在100% Android装置(包括root过的)上,保证唯一性.
+
+坏处
+1.重装app之后不能取得相同唯一值.
+
+```java
+private static String uniqueID = null;
+private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
+
+public synchronized static String id(Context context) {
+ if (uniqueID == null) {
+ SharedPreferences sharedPrefs = context.getSharedPreferences(
+ PREF_UNIQUE_ID, Context.MODE_PRIVATE);
+ uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
+ if (uniqueID == null) {
+ uniqueID = UUID.randomUUID().toString();
+ Editor editor = sharedPrefs.edit();
+ editor.putString(PREF_UNIQUE_ID, uniqueID);
+ editor.commit();
+ }
+ }
+ return uniqueID;
+}
+```
+
+###回答3(需要有电话卡)
+
+好处:
+1.重装app之后仍能取得相同唯一值.
+
+代码:
+
+```java
+ final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
+ final String tmDevice, tmSerial, androidId;
+ tmDevice = "" + tm.getDeviceId();
+ tmSerial = "" + tm.getSimSerialNumber();
+ androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
+ UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
+ String deviceId = deviceUuid.toString();
+```
+
+谨记:要取得以下权限
+```
+
+```
+stackoverflow链接:
+http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id
\ No newline at end of file
diff --git a/contents/why-does-this-code-using-random-strings-print-hello-world.md b/contents/why-does-this-code-using-random-strings-print-hello-world.md
new file mode 100644
index 0000000..c546367
--- /dev/null
+++ b/contents/why-does-this-code-using-random-strings-print-hello-world.md
@@ -0,0 +1,64 @@
+##为什么以下用随机生成的文字会得出 “hello world”?
+
+###问题
+为什么以下用随机生成的文字会得出"hello world".
+有人能解释一下吗?
+
+```
+System.out.println(randomString(-229985452) + " " + randomString(-147909649));
+
+public static String randomString(int i)
+{
+ Random ran = new Random(i);
+ StringBuilder sb = new StringBuilder();
+ while (true)
+ {
+ int k = ran.nextInt(27);
+ if (k == 0)
+ break;
+
+ sb.append((char)('`' + k));
+ }
+ return sb.toString();
+}
+```
+###回答1(最佳)
+在JAVA 里面,随机类的实现不是真正的随机,是伪随机.
+就是说如果随机类的种子是一样的话,他们会生成同一组的数字。
+
+比如说这个问题:
+
+ new Random(-229985452).nextInt(27)
+
+首6个生成的数字一定是:
+
+ 8
+ 5
+ 12
+ 12
+ 15
+ 0
+
+
+而 `new Random(-147909649).nextInt(27)` 首6个生成的数字一定是:
+
+ 23
+ 15
+ 18
+ 12
+ 4
+ 0
+
+而把每一个数目字加 `
(which is 96),就会得到了相应的英文字母:
+
+ 8 + 96 = 104 --> h
+ 5 + 96 = 101 --> e
+ 12 + 96 = 108 --> l
+ 12 + 96 = 108 --> l
+ 15 + 96 = 111 --> o
+
+ 23 + 96 = 119 --> w
+ 15 + 96 = 111 --> o
+ 18 + 96 = 114 --> r
+ 12 + 96 = 108 --> l
+ 4 + 96 = 100 --> d
\ No newline at end of file