java常用类解析一:System类、Object类、Arrays类、Cloneable接

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.数组类提供了排序功能,对基本数据类型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;}}

莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法

java常用类解析一:System类、Object类、Arrays类、Cloneable接

相关文章:

你感兴趣的文章:

标签云: