第六次實驗:包與介面以及常用工具類的使用
實驗目的
瞭解 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();