1. 程式人生 > >第六次實驗:包與介面以及常用工具類的使用

第六次實驗:包與介面以及常用工具類的使用

實驗目的

瞭解 Java 中包(package)和介面(interface)的作用,掌握包和介面的設計方法。掌握Math類,String類和StringBuffer類的使用。 

二、實驗要求

1.   瞭解 Java 系統包的結構,建立並使用自定義包。

2.   掌握介面的定義與使用。

3.    掌握Math類的使用。

4.    掌握String類和StringBuffer類的使用

三、實驗內容

(一)建立並使用自定義包

1.自定義包的宣告方式

       <package>  <自定義包名>

    宣告包語句必須新增在源程式的第一行,表示該程式檔案宣告的全部類都屬於這個包。

2.建立自定義包 Mypackage

在存放源程式的資料夾中建立一個子資料夾 Mypackage。例如,在“D:\java\javacode”資料夾之中建立一個與包同名的子資料夾 Mypackage(D:\java\javacode\Mypackage),並將編譯過的 class 檔案放入到該資料夾中。 注意:包名與資料夾名大小寫要一致。

3.在包中建立類

1)      編寫程式KY6_1.java,在源程式中,首先宣告使用的包名 Mypackage,然後建立KY6_1類,該類具有計算今年的年份,可以輸出一個帶有年月日的字串的功能。

2)      原始碼如下。

   package Mypackage;                    //宣告存放類的包

   import java.util.*;                          //引用 java.util 包

   public class KY6_1 {   

       private int year,month,day;

       public static void main(String[] args){}

       public KY6_1 (inty,int m,int d) {

            year = y;

           month = (((m>=1) & (m<=12)) ? m : 1);  

           day = (((d>=1) & (d<=31)) ? d : 1);

       }     

       public static int thisyear() {

            return Calendar.getInstance().get(Calendar.YEAR);//返回當年的年份

       }

       public int year() {

            return year;//返回年份

       }

       public String toString(){

                returnyear+"-"+month+"-"+day;//返回轉化為字串的年-月-日

       }

     }

3)      編譯KY6_1.java 檔案,然後將KY6_1.class 檔案存放到 Mypackage 資料夾中(D:\java\javacode\Mypackage)。注意:先不執行程式KY6_1.class!

 

     4.編寫一個需要使用到包 Mypackage 中的KY6_1 類的程式KY6_2.java。

1)       編寫 KY6_2.java 程式:給定某人姓名與出生日期,計算該人年齡,並輸出該人姓名,年齡,出生日期。程式使用了KY6_1 的方法來計算年齡。

2)       原始碼如下。

  import Mypackage.KY6_1; //引用 Mypackage 包中的KY6_1 類

  public class KY6_2  

  {

        private String name;

        private KY6_1 birth;

            public static void main(String args[])

        {

            KY6_2 a = newKY6_2("張馳",1990,1,11);

            a.output();

        }

        public KY6_2 (Stringn1, int y, int m, int d)

        {                          //初始化變數與物件

                     name = n1;

            birth = newKY6_1(y, m, d);

        }

        public int age()                                   //計算年齡

        {

            returnbirth.year() - KY6_1.thisyear(); //返回當前年與出生年的差即年齡

        }

        public void output()

        {

           System.out.println("姓名 : "+name);

           System.out.println("出生日期: "+birth.toString());

           System.out.println("今年年齡 : "+age());

        }

    }

3)       編譯KY6_2.java 程式並執行程式KY6_2.java

4)       在實驗報告中寫出該程式的執行結果。

5)       程式執行的結果有沒有問題?問題出在哪裡?請在實驗報告中指出。

這段程式碼有問題:

public int age()                                   //計算年齡

        {

            returnbirth.year() - KY6_1.thisyear(); //返回當前年與出生年的差即年齡

        }

應該改為:return KY6_1.thisyear() -birth.year()  ;

(二)使用介面技術

定義兩個介面,其中各包括一個抽象方法分別用來完成兩個數的加法和減法操作,然後建立一個類KY6_3來實現這兩個介面中的抽象方法。編寫程式KY6_3.java,將源程式寫在實驗報告中。

package Mypackage;

interface Add{     

       public abstract int_add(int x,int y);

}

interface Sub{     

       public abstract int_sub(int x,int y);

}

public class KY6_3 implements Add,Sub {

       public int _add(intx,int y) {

              return x+y;

       }

       public int _sub(intx,int y) {

              return x-y;

       }

       public static voidmain(String args[]) {

              KY6_3 object=newKY6_3();

              System.out.println(object._add(10,3));

              System.out.println(object._sub(10,3));

       }

}

(三)Math類的使用

 1.利用下面的關鍵程式碼編寫一個完整的程式KY6_4.java,理解Math類的使用。
 System.out.println (Math.abs(-5.8));         
 System.out.println (Math.ceil(3.2));             
 System.out.println (Math.floor(3.8))               
 System.out.println (Math.round (3.8));           
 System.out.println (Math.round(3.2));        
 System.out.println (Math.min (3, 2));           
 System.out.println (Math.max (Math.PI, 4));       
 System.out.println (Math.log(7.0));        
 System.out.println (Math.pow (7,2));               
 System.out.println (Math.exp(0.4));               
 System.out.println ("e is:"+Math.e);         
 System.out.println ("π is:"+Math.PI);        
 System.out.println(Math.random());        


 2.將程式的執行結果寫在實驗報告中。

執行結果:

5.8

4.0

3.0

4

3

2

4.0

1.9459101490553132

49.0

1.4918246976412703

e is:2.718281828459045

π is:3.141592653589793

0.2669608404414274

(四)String類與StringBuffer類的使用

 1.利用下面的關鍵程式碼編寫一個完整的程式KY6_5.java,理解String類與StringBuffer類的使用。
        String s=new String("This is andemo of the String method.");
        System.out.println("Length:"+s.length());
        System.out.println("SubString:"+s.substring(11,15));
      StringBuffer sf=newStringBuffer("Hello World!");
        sf.append(" Hello Java!");
        sf.insert(12," And");
        System.out.println(sf);
        System.out.println(sf.charAt(0));
        sf.setCharAt(0,''h'');
        System.out.println(sf.charAt(0));
        System.out.println(sf);

2.將程式的執行結果寫在實驗報告中。

執行結果:

Length: 37

SubString: demo

Hello World! And Hello Java!

H

h

hello World! And Hello Java!

四、思考題

1.   算術運算應該使用什麼類?

ava.math.*類中:

Math.sqrt() : 計算平方根

Math.cbrt() : 計算立方根

Math.pow(a, b) :計算a的b次方

Math.max( , ) : 計算最大值

Math.min( , ) : 計算最小值

Math.abs() : 取絕對值

Math.ceil(): 天花板的意思,就是逢餘進一

Math.floor() : 地板的意思,就是逢餘舍一

Math.rint(): 四捨五入,返回double值。注意.5的時候會取偶數

Math.round(): 四捨五入,float時返回int值,double時返回long值

Math.random(): 取得一個[0, 1)範圍內的隨機數

2.   Java語言中如何表示字串?

賦值:

String s1 ="fdsfd";

String s2 = newString("fdsdfds");

String s3 = newString(s2);

獲取長度

int size =s1.size();

比如說定義字元變數是用CHRA型別或是已經給一個字串變數賦值,那麼要怎麼才能計算出這個字串的長度呢。

首先要定義一個字串。如下:

String s=newString()

然後用String本身的方法來確定該字串的長度:s.length();