package test;public class SystemDemo {public static void main(String[] args) {String[] s = new String[] { "liu" };String[] s2 = new String[] { "hai" };String[][] a = { s, s2, s, s, s, s2, s2, s };String[][] b = new String[10][10];/* * System類包含一些有用的類欄位和方法,是final類,無法被繼承,構造方法是private,不能建立System對象。 * 所有public屬性和方法都是final static */// 1.數組複製,採用本地方法複製,實現了深拷貝System.arraycopy(a, 1, b, 0, 5);System.out.println(b[0][0]);// 2.已經過去的毫米數,從1970-1-1開始System.currentTimeMillis();// 3.提示虛擬機器進行記憶體回收,通過調用Runtime.getRuntime().gc();實現System.gc();// 4.返回系統內容System.getenv();// 5.返回當前的系統屬性。System.getProperties();// 6.可用於計數已過去的時間System.nanoTime();// 7.0表示正常退出,調用Runtime.getRuntime().exit(0);System.exit(0);// 8.返回給定對象的雜湊碼,該代碼與預設的方法 hashCode() 返回的代碼一樣,無論給定對象的類是否重寫 hashCode()。System.identityHashCode(null);}}
package test;public class ObjectDemo {/* * 1.Object沒有public 的靜態屬性和方法 * 2.public final native Class<?> getClass()返回運行時類資訊, * 3.toString 返回類名+@+雜湊碼值 * 4.其中wait和notify方法是final的,不可繼承 * 5.equals方法只比較對象的引用,hashCode方法返回雜湊碼值。 * 6.重寫equals方法要重寫hashCode,因為相同的對象(通過equals比較返回true) * 必須返回相同的雜湊碼。 * 7.finalize方法是一個protected空方法 * 8.protected native Object clone()返回一個副本,對象必須實現Cloneable介面 */}
package test;import java.util.Arrays;public class ArraysDemo {/* * 1.數組類提供了排序功能,對基礎資料型別 (Elementary Data Type)length<7採用直接插入排序,否則採用快速排序 如果數組元素時對象,採用合并排序 * 2.提供二分尋找法實現,注意二分尋找時先對數組進行排序,否則返回一個不確定值 */public static void main(String[] args) {int[][] a = { { 1, 2 } };int[][] b = { { 1, 2 } };System.out.println(Arrays.toString(a));// 3. 多維陣列的toStringSystem.out.println(Arrays.deepToString(a));System.out.println(Arrays.hashCode(a));System.out.println(Arrays.deepHashCode(a));System.out.println(Arrays.equals(a, b));// 4. 多維陣列的比較System.out.println(Arrays.deepEquals(a, b));// 5. 並沒有實現多維陣列的複製int[][] c = Arrays.copyOf(a, 1);// 6.填充數組Arrays.fill(a[0], 5);// 在此改變a的值影響到了數組c的值System.out.println(Arrays.deepToString(c));System.out.println(Arrays.equals(a, c));System.out.println(Arrays.deepEquals(a, c));}}
package test;public class DeepCloneDemo {public static void main(String[] args) {B b = new B(2, new A(1));B b1 = (B) b.clone();System.out.println(b == b1);System.out.println(b.equals(b1));System.out.println(b.getClass() == b.getClass());System.out.println("改變b的副本b1前:y=" + b.getY() + ",x=" + b.getA().getX());b1.setY(5);b1.getA().setX(100);System.out.println("改變b的副本b1後:y=" + b.getY() + ",x=" + b.getA().getX());System.out.println("深複製成功!!!");}}class A implements Cloneable {private int x;// 為了實現深複製public Object clone() {A a = null;try {a = (A) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return a;}public A(int x) {this.x = x;}public int getX() {return x;}public void setX(int x) {this.x = x;}}class B implements Cloneable {private int y;private A a;// 覆蓋Object中clone方法// protected native Object clone() throws CloneNotSupportedException;// 注意到protected,這裡把許可權改為了publicpublic Object clone() {B b = null;try {b = (B) super.clone();// 實現深複製,沒有這條語句只是複製了a的引用b.a = (A) a.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return b;}public B(int y, A a) {this.y = y;this.a = a;}public int getY() {return y;}public A getA() {return a;}public void setY(int y) {this.y = y;}public void setA(A a) {this.a = a;}}