Java中toString、equals和System方法的使用

一  toString方法

toString方法在程序中使用的并不多,一般在代码调试的时候使用。如果i是基本数据类型,则i.toStirng()直接输出i的值。如果过i为引用类型,则输出的是i的地址,所以引用类型在时候toString方法时,一般要重写toString()方法。在myeclipse中source可以直接生成重写的方法。JDK中的API文档对toString的解释如下图所示:

public class Test2 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Student student = new Student();
		student.name = "王二";
		student.age = 18;
		System.out.println(student.toString());
	}

}
	
class Student{
	String name;
	int age;
//	@Override
//	public String toString() {
//		return "Student [name=" + name + ", age=" + age + "]";
//	}
	
	
		
	}

写了上述代码来验证toString方法,没重写后的toString方法输出的是:Student@3aae43b8(类名+@+地址的哈希地址值),下面把注释打开后,输出的是:Student [name=王二, age=18]。

二 equals方法

equals方法是object中的方法,它只能比较引用类型,比较的是两个引用是否指向同一个对象。“==”比较的是8个基本数据类型,也可以比较引用类型,比较的也是两个引用是否指向同一个对象。String类型和8个包装类的equals方法JDK已经帮我们重写过了,若比较其他引用类型时,需要重写此方法或者直接在source中生成。下面是API中对equals的解释:

 

public class Test2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Student student1 = new Student();
		Student student2 = new Student();
		student1.name = "王二";
		student1.age = 18;
		student2.name = "王二";
		student2.age = 18;
		System.out.println(student1.equals(student2));

	}
}
	
class Student{
	String name;
	int age;
        @Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
		
	}

为了验证,我们编写上述代码,输出结果是:false,下面我们书写override以下的内容重写equals方法,输出结果是:true.

三 system类

它是包含字段的方法,不能被实例化,要使用只能通过System.方法 这样的样式使用,它包含的全部方法都是静态的。API文档如下所示:

最常见的几种方法:

arrayCopy(src,srcpos,dest,destpos,length)方法,拷贝字符串。第一个参数是数组源,第二个参数是源数组的起始位置,第三个参数是目标数组,第四个参数是目标数组的位置,第五个参数是拷贝的长度。代码如下所示:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		
	    int[] src = {1,2,3,4,5};
	    int[] dest = new int[5];
	    System.arraycopy(src, 0, dest, 0, 5);
	    for (int i = 0; i < dest.length; i++) {
			System.out.print(dest[i]);
		}  

	}

输出为:12345

currentTimeMilliis()方法,以毫秒返回当前系统的时间(相对时间,相对1970-1-1 00:00:00),代码如下所示

public static void main(String[] args ) {
		// TODO Auto-generated method stub
		
	  long  Start = System.currentTimeMillis();
	    for (int i = 0; i < 100000; i++) {
			System.out.println(i);
		}
	   long end = System.currentTimeMillis();
	   
	   System.out.println(end - Start);
	   
	    

	}

最后输出的是执行循环使用的时间为:718毫秒。

exit(int status)方法为退出当前虚拟机,status为0正常退出,非0异常退出。

gc()方法为清理垃圾回收,一般用不到,系统会对垃圾进行回收清理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章