1. 程式人生 > >類和物件作業及答案

類和物件作業及答案

類和物件作業

一、 填空題

  1. 類是組成Java程式的基本要素,類體有兩部分構成:一部分是變數的定義,另一部分是 的定義。
  2. 執行Person p = new Person();語句後,將在___________中給Person物件分配空間,並在棧記憶體中給引用變數p分配空間,存放Person物件的引用。
    3._______是一種特殊方法,它的名字必須與它所在的類的名字完全相同,並且不書寫返回值型別,在建立物件例項時由new運算子自動呼叫。
  3. 區域性變數的名字與成員變數的名字相同,若想在該方法內使用成員變數,必須使用關鍵字 。
  4. 使用關鍵字 來呼叫同類的其它構造方法,優點同樣是以最大限度地程式碼的利用程度 ,減少程式的維護工作量。
  5. 用關鍵字 修飾的成員變數是類變數,類變數是指不管類建立了多少物件,系統僅在第一次呼叫類的時候為類變數分配記憶體,所有物件共享該類的類變數。
  6. 使用static修飾的變數稱為靜態變數,靜態變數可以有兩種訪問方式,分別是類名.靜態變數名和_______________________。
  7. 在一個類檔案中的關鍵字package,import,class出現的可能順序是______________________________。
    9.______關鍵字作為Java原始檔的第一條非註釋性語句,指明該原始檔定義的類所有的包。
    10._______包是Java語言的核心類庫,它包含了執行Java程式必不可少的系統類,使用該包下的類和介面不需要使用import匯入。

二、 選擇題

  1. 在Java中,以下程式編譯執行後的輸出結果為( )。(選擇一項)
    public class Test {
    int x, y;
    Test(int x, int y) {//一個帶參構造器
    this.x = x;
    this.y = y;
    }
    public static void main(String[] args) {
    Test pt1, pt2;
    pt1 = new Test(3, 3);
    pt2 = new Test(4, 4);
    System.out.print( pt1.x+pt2.x);
    }
    }

    A 6
    B. 34
    C. 8
    D. 7

  2. 分析如下Java程式的程式碼所示,則編譯執行後的輸出結果是( )。(選擇一項)
    public class Test {
    int count=9;
    public void count1(){
    count=10;
    System.out.println(“count1=”+count);
    }
    public void count2(){
    System.out.println(“count2=”+count);
    }
    public static void main(String[ ] args) {
    Test t=new Test();
    t.count1();
    t.count2();
    }
    }

    A count1=9;
    count2=9;
    B. count1=10;
    count2=9;
    C. count1=10;
    count2=10;
    D. count1=9;
    count2=10;

  3. 以下語句中關於Java構造方法的說法錯誤的是( )。(選擇一項)

    A. 構造方法的作用是為建立物件進行初始化工作,比如給成員變數賦值
    B. 一個Java類可以沒有構造方法,只能提供1個構造方法
    C. 構造方法與類同名,不能書寫返回值型別
    D. 構造方法的第一條語句如果是super(),則可以省略,該語句作用是呼叫父類無引數的構造方法

  4. 在Java中關於靜態方法,以下說法中正確的是( )。(選擇兩項)

    A 靜態方法中不能直接呼叫非靜態方法
    B. 非靜態方法中不能直接呼叫靜態方法
    C. 靜態方法可以用類名直接呼叫
    D. 靜態方法裡可以使用this

  5. 下列選項中關於Java中類方法的說法錯誤的是( )。(選擇二項)

    A 在類方法中可用this來呼叫本類的類方法
    B. 在類方法中呼叫本類的類方法時可直接呼叫
    C. 在類方法中只能呼叫本類中的類方法
    D. 在類方法中呼叫例項方法需要先建立物件

三、 判斷題

  1. 類可以看成一類物件的模板,物件可以看成該類的一個具體例項。( )
  2. 如果沒有為類中的某些成員賦初始值,Java會為類成員賦予固定的初始值,如數值變數的值為0,布林變數的值為true//false,未初始化的引用為null。( )
  3. Java中所有的變數,不管是成員變數還是區域性變數,在使用前都必須進行初始化。( )
  4. 在Java中物件可以賦值,只要使用new關鍵詞呼叫構造器建立該類的一個例項,( )
  5. System.out.println(“Hello java!”)中out是System類的一個靜態成員變數。( )
  6. 構造方法用於建立物件,一般不允許有任何返回值,因此需要在構造方法返回型別處標註為void。( )
  7. Java語言為所有的Java程式自動匯入包“java.lang”,因此Java程式可以直接用“java.lang”中的類和介面。( )

四、 簡答題

  1. 面向過程和麵向物件的區別。(5分)
  2. 類和物件的關係
  3. 構造方法的作用和特徵
  4. this關鍵字的作用和用法
  5. 簡述static關鍵字的作用。
    提示:從static可以修飾變數,方法,程式碼塊,內部類四個方面來回答。(5分)

五、 編碼題

  1. 請定義一個交通工具(Vehicle)的類其中有: 屬性: 速度(speed)、 體積(size)等,方法:移動(move())、設定速度(setSpeed(int speed))、加速 speedUp()、減速 speedDown()等。最後在測試類 Vehicle 中的 main()中例項化一個交通工具物件並通過方法給它初始化 speed,size 的值並且通過打印出來。另外呼叫加速、減速的方法對速度進行改變。

  2. 編寫 Java 程式用於顯示人的姓名和年齡。定義一個人類Person。 該類中應該有兩個【】私有]屬性: 姓名 (name) 和年齡 (age) 。定義構造方法用來初始化資料成員。再定義顯示(display()) 方法將姓名和年齡打印出來。在 main 方法中建立人類的例項然後將資訊顯示。

  3. 定義一個圓類——Circle,在類的內部提供一個屬性:半徑®,同時 提供 兩個 方 法 : 計算 面積 ( getArea() ) 和 計算 周長(getPerimeter()) 。 通過兩個方法計算圓的周長和麵積並且對計算結果進行輸出。最後定義一個測試類對 Circle 類進行使用。

  4. 構造方法與過載:定義一個網路使用者類,要處理的資訊有使用者 ID、使用者密碼、 email 地址。在建立類的例項時把以上三個資訊都作為建構函式的引數輸入, 其中使用者 ID 和使用者密碼必須寫,如果email預設時 email地址是使用者 ID 加上字串"@gameschool.com"。

六、 可選題

  1. 定義一個類 Calculaion, 其中包含四個方法: 加(add()) 、 減(sub()) 、乘(times()) 和除(div()) 。 建立一個具有 main()函式的類。 在 main()函式中建立一個 Calculation 的例項物件並對其中的方法進行呼叫。

  2. 定義一個類 Draw , 在 類 中 提供 3 個 方法:輸出直角三角形(drawTrian()) 、 輸出矩形(drawRec()) 及平行四邊形(drawPra()) 。通過方法可以輸出由“*” 組成的一個圖形。 同時在類中包含兩個屬性:星號的個數(count) 、行數(lines) 。最後在測試類中進行呼叫。

  3. 建立一個空調,並呼叫製冷、制熱、通風功能。空調包含的屬性有品牌、匹數、溫度,功能有加熱、製冷、通風等功能。

  4. 定義一個表示學生資訊的類 Student,要求如下:
    (1)類 Student 的屬性如下:
    sNO 表示學號; sName 表示姓名; sSex 表示性別; sAge 表示
    年齡;sJava:表示 Java 課程成績。
    (2)類 Student 帶引數的構造方法:
    在構造方法中通過形參完成對成員變數的賦值操作。
    (3)類 Student 的方法成員:
    getNo():獲得學號;
    getName():獲得姓名;
    getSex():獲得性別;
    getAge()獲得年齡;
    getJava():獲得 Java 課程成績
    (4) 根據類 Student 的定義,建立五個該類的物件,輸出每個學生的資訊,計算並輸出這五個學生 Java 語言成績的平均值,以及計算並輸出他們 Java 語言成績的最大值和最小值。

類和物件作業答案

一、 填空題

  1. 方法
  2. 堆記憶體
  3. 構造方法
  4. this
  5. this
  6. static
  7. 物件名.靜態變數名
  8. package import class
  9. package
  10. java.lang

二、 選擇題

  1. D
  2. C
  3. B
  4. AC
  5. AC

三、 判斷題

  1. ×
  2. ×
  3. ×
  4. ×

四、 簡答題

答案略

五、 編碼題

  1. 請定義一個交通工具(Vehicle)的類其中有: 屬性: 速度(speed)、 體積(size)等,方法:移動(move())、設定速度(setSpeed(int speed))、加速 speedUp()、減速 speedDown()等。最後在測試類 Vehicle 中的 main()中例項化一個交通工具物件並通過方法給它初始化 speed,size 的值並且通過打印出來。另外呼叫加速、減速的方法對速度進行改變。
    public class Vehicle {
    private int size;
    private int speed;
    public static void main(String[] args) {
    Vehicle ve = new Vehicle();
    ve.setSize(10);//設定初始體積
    ve.setSpeed(30);//設定初始速度
    ve.move();//呼叫移動方法
    ve.speedUp();//給交通工具減速
    ve.speedDown();//加速

    }
    /** 行進 /
    public void move(){
    System.out.println("行進中…,速度 "+speed+“km/h” );
    }
    /
    * 設定速度 /
    public void setSpeed(int speed){
    this.speed = speed;
    System.out.println(“初始速度設定為:”+speed+" km");
    }
    /
    * 設定體積 /
    public void setSize(int size){
    this.size = size;
    System.out.println(“初始體積設定為:”+size+" m^3");
    }
    /
    * 加速20 /
    public void speedUp(){
    this.speed+=20;
    System.out.println(“速度增加20後為:”+speed+" km");
    }
    /
    * 減速10 */
    public void speedDown(){
    this.speed-=10;
    System.out.println(“減速10後為:”+speed+" km");
    }
    }

  2. 編寫 Java 程式用於顯示人的姓名和年齡。定義一個人類Person。 該類中應該有兩個私有屬性: 姓名 (name) 和年齡 (age) 。定義構造方法用來初始化資料成員。再定義顯示(display()) 方法將姓名和年齡打印出來。在 main 方法中建立人類的例項然後將資訊顯示。
    public class Person {
    private String name;
    private int age;
    /** 在構造器中初始化成員變數 /
    public Person(String name,int age){
    this.name = name;
    this.age = age;
    }
    public static void main(String[] args) {
    Person p = new Person(“張三”,18);
    p.display();
    }
    /
    * 顯示姓名和年齡 */
    public void display(){
    System.out.println(“姓名:”+name);
    System.out.println(“年齡:”+age);
    }
    }

  3. 定義一個圓類——Circle,在類的內部提供一個屬性:半徑®,同時 提供 兩個 方 法 : 計算 面積 ( getArea() ) 和 計算 周長(getPerimeter()) 。 通過兩個方法計算圓的周長和麵積並且對計算結果進行輸出。最後定義一個測試類對 Circle 類進行使用。
    public class Circle {
    private int r;
    /** 無參構造 /
    public Circle(){}
    /
    * 有參構造,初始化半徑*/
    public Circle(int r){
    this.r=r;
    }
    /** 也可以使用setR方法初始化半徑 */
    public void setR(int r){
    this.r = r;
    }
    /計算 面積 /
    public void getArea(){
    double area = Math.PI * r * r;//從Math工具類得到π的值
    System.out.println(“圓的面積為:”+area);
    }
    /
    計算 周長 /
    public void getPerimeter(){
    double zc = Math.PI * 2 * r;
    System.out.println(“圓的周長為:”+zc);
    }
    }
    /
    測試 */
    public class Test {
    public static void main(String[] args) {
    Circle c = new Circle(4);//初始半徑為4,使用構造初始化
    c.getArea();
    c.getPerimeter();
    }
    }

  4. 構造方法與過載:定義一個網路使用者類,要處理的資訊有使用者 ID、使用者密碼、 email 地址。在建立類的例項時把以上三個資訊都作為建構函式的引數輸入, 其中使用者 ID 和使用者密碼時必須預設時 email地址是使用者 ID 加上字串"@gameschool.com"。
    public class People {
    private String id;
    private String password;
    private String email;
    /** 無參構造 */
    public People(){

    }
    /** 全參構造 */
    public People(String id,String password,String email){
    this.id = id;
    this.password=password;
    this.email = email;
    }
    public People(String id,String password){
    this.id = id;
    this.password=password;
    this.email=id+"@gameschool.com";
    }
    public void show() {
    System.out.println(“編號:”+this.id);
    System.out.println(“密碼:”+this.password);
    System.out.println(“郵件:”+this.email);
    }
    public static void main(String[] args) {
    //呼叫全參構造
    People p1 = new People(“sxt0001”,“123456”,"[email protected]");
    p1.show();
    //呼叫無參構造
    People p2 = new People(“sxt0002”,“654321”);
    p2.show();
    }
    }

六、 可選題

  1. 定義一個類 Calculaion, 其中包含四個方法: 加(add()) 、 減(sub()) 、乘(times()) 和除(div()) 。 建立一個具有 main()函式的類。 在 main()函式中建立一個 Calculation 的例項物件並對其中的方法進行呼叫。

public class Calculaion {
private double a;
private double b;
public Calculaion(double a,double b){
this.a=a;
this.b=b;
}
public void add(){
System.out.println(“a加b :”+(a+b));
}
public void sub(){
System.out.println(“a減b :”+(a-b));
}
public void times(){
System.out.println(“a乘b :”+(a*b));
}
public void div(){
System.out.println(“a除以b :”+(a/b));
}
public static void main(String[] args) {
Calculaion c = new Calculaion(7.0,3.0);
c.add();
c.sub();
c.times();
c.div();
}
}

  1. 定義一個類 Draw , 在 類 中 提供 3 個 方法:輸出直角三角形(drawTrian()) 、 輸出矩形(drawRec()) 及平行四邊形(drawPra()) 。通過方法可以輸出由“*” 組成的一個圖形。 同時在類中包含兩個屬性:星號的個數(count) 、行數(lines) 。最後在測試類中進行呼叫。
    public class Draw {
    private int count, lines;
    public Draw(){}
    public Draw(int count, int lines){
    this.count=count;
    this.lines=lines;
    }
    /** 直角三角形 /
    public void drawTrina() {
    for (int i = 0; i < lines; i++) {//共lines行
    for (int j = 0; j < i; j++) {//每次增加1
    System.out.print("
    ");
    }
    System.out.println();//換行
    }
    }
    /** 輸出矩形 /
    public void drawRec(){
    for (int i = 0; i < lines; i++) {
    for (int j = 0; j < count; j++) {//每行數量固定
    System.out.print("
    ");
    }
    System.out.println();
    }
    }
    /** 平行四邊形 /
    public void drawPra(){
    for (int i = 0; i < lines; i++) {
    for(int k=0;k<i;k++){
    System.out.print(" “);
    }
    for (int j = 0; j < count; j++) {
    System.out.print(”
    ");
    }
    System.out.println();
    }
    }
    public static void main(String[] args) {
    Draw d = new Draw(5,5);
    //d.drawTrina();
    //d.drawRec();
    d.drawPra();
    }
    }

  2. 建立一個空調,並呼叫製冷、制熱、通風功能。空調包含的屬性有品牌、匹數、溫度,功能有加熱、製冷、通風等功能。
    public class AirConditioning {
    // 空調屬性
    String name;
    String pinpai;
    String hp;// 匹數
    int tempeture;
    // 定義製冷行為
    void cool() {
    tempeture–;
    }
    // 定義加熱行為
    void hot() {
    tempeture += 7;
    }
    //通風功能
    void ventilate(){
    System.out.println(“空氣通暢,溫度不變”);
    }
    // 主函式
    public static void main(String[] args) {
    AirConditioning kt = new AirConditioning();
    kt.hp = “2匹”;
    kt.tempeture = 20;
    kt.pinpai = “格力”;
    kt.cool();
    System.out.println(“空調的溫度是” + kt.tempeture);
    kt.hot();
    System.out.println(“空調的溫度是” + kt.tempeture);
    kt.ventilate();
    }
    }

  3. 定義一個表示學生資訊的類 Student,要求如下:
    (1)類 Student 的屬性如下:
    sNO 表示學號; sName 表示姓名; sSex 表示性別; sAge 表示
    年齡;sJava:表示 Java 課程成績。
    (2)類 Student 帶引數的構造方法:
    在構造方法中通過形參完成對成員變數的賦值操作。
    (3)類 Student 的方法成員:
    getNo():獲得學號;
    getName():獲得姓名;
    getSex():獲得性別;
    getAge()獲得年齡;getJava():獲得 Java 課程成績
    public class Student {
    String sNO ;
    String sName;
    String sSex;
    int sAge;
    int sJava;
    public Student(String sNO, String sName, String sSex, int sAge, int sJava) {
    this.sNO = sNO;
    this.sName = sName;
    this.sSex = sSex;
    this.sAge = sAge;
    this.sJava = sJava;
    }
    public String getsNO() {
    return sNO;
    }
    public String getsName() {
    return sName;
    }
    public String getsSex() {
    return sSex;
    }
    public int getsAge() {
    return sAge;
    }
    public int getsJava() {
    return sJava;
    }
    }
    (4) 根據類 Student 的定義,建立五個該類的物件,輸出每個學生的資訊,計算並輸出這五個學生 Java 語言成績的平均值,以及計算並輸出他們 Java 語言成績的最大值和最小值。
    public class Test {
    public static void main(String[] args) {
    Student s1 = new Student(“sxt0001”, “張三”, “男”,18,90);
    Student s2 = new Student(“sxt0002”, “李四”, “女”,15,92);
    Student s3 = new Student(“sxt0003”, “王五”, “男”,17,93);
    Student s4 = new Student(“sxt0004”, “趙六”, “男”,21,95);
    Student s5 = new Student(“sxt0005”, “錢七”, “男”,19,97);

System.out.println("\t學號\t姓名\t姓別\t年齡\t成績");
System.out.println("\t"+s1.getsNO()+"\t"+s1.getsName()
+"\t"+s1.getsSex()+"\t"+s1.getsAge()+"\t"+s1.getsJava());
System.out.println("\t"+s2.getsNO()+"\t"+s2.getsName()
+"\t"+s2.getsSex()+"\t"+s2.getsAge()+"\t"+s2.getsJava());
System.out.println("\t"+s3.getsNO()+"\t"+s3.getsName()
+"\t"+s3.getsSex()+"\t"+s3.getsAge()+"\t"+s3.getsJava());
System.out.println("\t"+s4.getsNO()+"\t"+s4.getsName()
+"\t"+s4.getsSex()+"\t"+s4.getsAge()+"\t"+s4.getsJava());
System.out.println("\t"+s5.getsNO()+"\t"+s5.getsName()
+"\t"+s5.getsSex()+"\t"+s5.getsAge()+"\t"+s5.getsJava());
int d = (s1.getsJava()+ s2.getsJava()+ s3.getsJava()
+ s4.getsJava()+ s5.getsJava())/5;
System.out.println(“java語言平均成績:”+d);
}
}