Java 繼承與多型實驗

HJ_彼岸發表於2014-04-12


實驗講義

 

上機題目一:試以Point類為例,嘗試對Object類的clone()方法和equal()方法進行覆蓋。

上機題目二:現在輸入n個數字,以逗號分開、放入一個字串中,然後按升序和降序排序,並顯示排序結果。


第一個實驗的程式碼

package com.whj.exam2;

public class Text {
	public static void main(String[] args) throws CloneNotSupportedException 
	{
          Piont p=new Piont(8,6);
          Piont q=(Piont)p.clone();
             System.out.println(p);
             System.out.println(q);
             System.out.println(q==p);
             System.out.println(q.equals(p));
	}

}

package com.whj.exam2;
public class Piont {
      private int x;
      private int y;
	public int getX() {
		return x;
	}
	public int getY() {
		return y;
	}
	public Piont(int x, int y) {
		super();
		this.x = x;
		this.y = y;
	}
	@Override
	protected Object clone() throws CloneNotSupportedException {//異常化處理
		return new Piont(x,y);
	}
	@Override
	public boolean equals(Object obj) {
	if(((Piont)obj).x==this.x&&((Piont)obj).y==this.y)
	      return true;
	else 
		return false;
	}
	@Override
	public String toString() {
		return x+" "+y;
	}
	
      
}
第一個實驗主要是對object類中的equals(),clone(),tostring()類進行覆蓋,覆蓋中沒有改變返回值的型別,所以我們就對他進行強制轉換。

下面是第二個實驗
package com.whj.exam2;

import java.util.Arrays;

public class NumerTest {
	public static void main(String[] args) {
           String [] str=splitstr.split("8,6,12,19,11,17");//定義分離字串的類
           int []number=new int [str.length];
           for(int i=0;i<str.length;i++)
           {
        	   number[i]=Integer.parseInt(str[i]);//把字元轉化為整型數
           }
           Arrays.sort(number);//進行排序
           for(int i=0;i<str.length;i++)
           {
        	   System.out.println(number[i]);
           }
           System.out.println();
           for(int i=(str.length-1);i>=0;i--)
           {
        	   System.out.println(number[i]);
           }
	}

}
package com.whj.exam2;

import java.util.StringTokenizer;//StringTokenizer 這個類 用來分割字串

public class splitstr {
	public static String[] split(String str) {
		if(str==null||str.trim().equals(""))//trim()方法是去掉字串前後的空格;
		{
			return null;
		}
		StringTokenizer s1=new StringTokenizer(str,",");//標記分離的標準,遇到,就分離;(分隔符)
		String []s2=new String[s1.countTokens()];//計算在生成異常之前可以呼叫此 tokenizer 的 nextToken 方法的次數
		int i=0;
		while(s1.hasMoreTokens())//判斷s1物件裡的hasMoreTokens()方法是否有返回值(看有沒有下一個匹配的欄位)
		{
			s2[i]=s1.nextToken();//nextToken() 用於返回下一個匹配的欄位
			i++;
		}
		return s2;
	}

}
做第二實驗深刻感受到了 java語言與c語言的差別,java在寫程式的時候,先是看api裡面有沒有我們需要的類,然後再查詢裡面的方法,而不是一開始就自己動手去寫,用java還是有點不太適應,感覺java裡面的類和方法真的好多,還有好多都不熟悉,還要好好努力啊!!

相關文章