類和對象作業


類和對象作業

 

一、    填空題

  1. 類是組成Java程序的基本要素,類體有兩部分構成:一部分是變量的定義,另一部分是   方法     的定義。
  2. 執行Person p = new Person();語句后,將在_______堆內存____中給Person對象分配空間,並在棧內存中給引用變量p分配空間,存放Person對象的引用。
  3.    構造方法        是一種特殊方法,它的名字必須與它所在的類的名字完全相同,並且不書寫返回值類型,在創建對象實例時由new運算符自動調用。
  4. 局部變量的名字與成員變量的名字相同,若想在該方法內使用成員變量,必須使用關鍵字          
  5. 使用關鍵字               來調用同類的其它構造方法,優點同樣是以最大限度地代碼的利用程度 ,減少程序的維護工作量。
  6. 用關鍵字     static     修飾的成員變量是類變量,類變量是指不管類創建了多少對象,系統僅在第一次調用類的時候為類變量分配內存,所有對象共享該類的類變量。
  7. 使用static修飾的變量稱為靜態變量,靜態變量可以有兩種訪問方式,分別是類名.靜態變量名和____對象名.靜態變量名___________________。
  8. 在一個類文件中的關鍵字package,import,class出現的可能順序是______package,import,clas________________________。
  9.    package      關鍵字作為Java源文件的第一條非注釋性語句,指明該源文件定義的類所有的包。
  10.      Java.lang         包是Java語言的核心類庫,它包含了運行Java程序必不可少的系統類,使用該包下的類和接口不需要使用import導入。

 

二、    選擇題

 

1.

Java中,以下程序編譯運行后的輸出結果為( D    )。(選擇一項)

 

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程序的代碼所示,則編譯運行后的輸出結果是(   C )。(選擇一項)

 

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構造方法的說法錯誤的是(  B  。(選擇一項)

 

 

 

 

A.

構造方法的作用是為創建對象進行初始化工作,比如給成員變量賦值

 

B.

一個Java類可以沒有構造方法,也可以提供1個或多個構造方法

 

C.

構造方法與類同名,不能書寫返回值類型

 

D.

構造方法的第一條語句如果是super(),則可以省略,該語句作用是調用父類無參數的構造方法

 

4.

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

 

 

 

 

A

靜態方法中不能直接調用非靜態方法

 

B.

非靜態方法中不能直接調用靜態方法

 

C.

靜態方法可以用類名直接調用

 

D.

靜態方法里可以使用this

 

 

 

5.

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

 

 

 

 

A

在類方法中可用this來調用本類的類方法

 

B.

在類方法中調用本類的類方法時可直接調用

 

C.

在類方法中只能調用本類中的類方法

 

D.

在類方法中調用實例方法需要先創建對象

 

三、    判斷題

  1. 類可以看成一類對象的模板,對象可以看成該類的一個具體實例。( T  )
  2. 如果沒有為類中的某些成員賦初始值,Java會為類成員賦予固定的初始值,如數值變量的值為0,布爾變量的值為true,未初始化的引用為null。(  F  )
  3. Java中所有的變量,不管是成員變量還是局部變量,在使用前都必須進行初始化。(   F )
  4. 在Java中對象可以賦值,只要使用賦值運算符即可,相當於生成了一個各屬性與賦值對象相同的新對象。( F   )
  5. System.out.println(“Hello java!”)中out是System類的一個靜態成員變量。( T )
  6. 構造方法用於創建對象,一般不允許有任何返回值,因此需要在構造方法返回類型處標注為void。( F   )
  7. Java語言為所有的Java程序自動導入包“java.lang”,因此Java程序可以直接用“java.lang”中的類和接口。(  T  )

 

四、    簡答題

  1. 面向過程和面向對象的區別。(5分)

    面向過程:

    就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。

    面向對象:

    是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

 

  1. 類和對象的關系

    類是對象的抽象化,對象是類的實例化

 

  1. 構造方法的作用和特征

    構造函數特征:無返回值、名字與類名相同
    作用:分配內存、初始化變量

  1. this關鍵字的作用和用法

    一、 this關鍵字主要有三個應用:
    (1)this調用本類中的屬性,也就是類中的成員變量;
    (2)this調用本類中的其他方法;
    (3)this調用本類中的其他構造方法,調用時要放在構造方法的首行。

    this的作用是在類中通過this訪問自身的屬性和方法。

  1. 簡述static關鍵字的作用。

   提示:從static可以修飾變量,方法,代碼塊,內部類四個方面來回答。(5分)

    static在Java語言中的使用有四種:(變量、方法、代碼塊、內部類)
    1、static變量
    按照是否靜態的對類成員變量進行分類可分兩種:一種是被static修飾的變量,叫靜態變量或類
    變量;另一種是沒有被static修飾的變量,叫實例變量。
    兩者的區別是:
    對於靜態變量在內存中只有一個拷貝(節省內存),JVM只為靜態分配一次內存,在加載類的過
    程中完成靜態變量的內存分配,可用類名直接訪問(方便),當然也可以通過對象來訪問(但是這是不推薦的)。
    對於實例變量,沒創建一個實例,就會為實例變量分配一次內存,實例變量可以在內存中有多個拷貝,互不影響(靈活)。

    2、靜態方法
    靜態方法可以直接通過類名調用,任何的實例也都可以調用,因此靜態方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變量和實例方法(就是不帶static的成員變量和成員成員方法),只能訪問所屬類的靜態成員變量和成員方法。因為實例成員與特定的對象關聯!這個需要去理解,想明白其中的道理,不是記憶!!!
因為static方法獨立於任何實例,因此static方法必須被實現,而不能是抽象的abstract。

    3、static代碼塊
    static代碼塊也叫靜態代碼塊,是在類中獨立於類成員的static語句塊,可以有多個,位置可以隨便放,它不在任何的方法體內,JVM加載類時會執行這些靜態的代碼塊,如果static代碼塊有多個,JVM將按照它們在類中出現的先后順序依次執行它們,每個代碼塊只會被執行一次。

五、    編碼題

  1. 請定義一個交通工具(Vehicle)的類其中有:  屬性: 速度(speed)、 體積(size)等,方法:移動(move())、設置速度(setSpeed(int speed))、加速 speedUp()、減速 speedDown()等。最后在測試類 Vehicle 中的 main()中實例化一個交通工具對象並通過方法給它初始化 speed,size 的值並且通過打印出來。另外調用加速、減速的方法對速度進行改變。
 1 public class Vehicle {
 2     double speed;
 3     double size;
 4 
 5     public void move() {
 6     System.out.println(""+"它的空間是"+size);
 7     }
 8 
 9     public void setSpeed(int speed) {
10         System.out.println("汽車的速度是:"+speed);
11     }
12 
13     public void speedUp() {
14         System.out.println("汽車的原來速度是:"+speed);
15         speed+= 20;
16         System.out.println("汽車加速后的速度是:"+speed);
17     }
18 
19     public void speedDown(double speed) {
20         //System.out.println("汽車的原來速度是:"+speed);
21         speed-=20;
22         System.out.println("汽車加減速后的速度是:"+speed);
23     }
24 
25     public static void main(String[] args) {
26         Vehicle v = new Vehicle();
27         v.speed = 60;
28         v.size = 4;
29         v.setSpeed(60);
30         v.speedUp();
31         v.speedDown(60);
32     }
33 }

  2.編寫 Java 程序用於顯示人的姓名和年齡。定義一個人類Person。 該類中應該有兩個私有屬性: 姓名 (name) 和年齡 (age) 。定義構造方法用來初始化數據成員。再定義顯示(display()) 方法將姓名和年齡打印出來。在 main 方法中創建人類的實例然后將信息顯示。

public class Person {
    private String name;

    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void display() {
        System.out.println("姓名\t年齡");
        System.out.println(name + "\t" + age+"歲");
    }

    public static void main(String[] args) {
        Person p = new Person("李四",20);
        p.display();
    }

}

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

 1 public class Circle {
 2     double r;
 3     //定義構造器
 4     public Circle(double r) {
 5         this.r = r;
 6     }
 7     //計算 面積 
 8     public void getArea() {
 9        double A = Math.PI*r*r;
10        System.out.print("圓的面積是:");
11        System.out.printf("%.2f",A);
12     }
13     //計算 周長
14     public void getPerimeter() {
15         double P = Math.PI*2*r;
16         System.out.print("\n"+"圓的周長是:");
17         System.out.printf("%.2f",P);
18     }
19     public static void main(String[] args) {
20         Circle c = new Circle(6);
21         c.getArea();
22         c.getPerimeter();
23         
24     }
25 }

  4.構造方法與重載:定義一個網絡用戶類,要處理的信息有用戶 ID、用戶密碼、 email 地址。在建立類的實例時把以上三個信息都作為構造函數的參數輸入, 其中用戶 ID 和用戶密碼時必須缺省時 email地址是用戶 ID 加上字符串"@gameschool.com"。

 1 public class user {
 2     // 三個成員變量
 3     int ID;
 4     String password;
 5     String email;
 6 
 7     // 3個參數的構造方法
 8     public user(int ID, String password, String email) {
 9         super();
10         this.ID = ID;
11         this.password = password;
12         this.email = email;
13     }
14 
15     // 2個參數的構造方法
16     public user(int ID, String password) {
17         super();
18         this.ID = ID;
19         this.password = password;
20         this.email = ID + "@gameschool.com";
21     }
22 
23     // 顯示方法
24     public void display() {
25         System.out.println("用戶ID\t\t用戶密碼\t\t用戶email");
26         System.out.println(ID + "\t\t" + password + "\t" + email);
27     }
28 
29     public static void main(String[] args) {
30         user u = new user(123456, "Lsx152751", "1527510008Qqq.com");
31         u.display();
32     }
33 
34 }

六、    可選題

  1. 定義一個類 Calculaion, 其中包含四個方法: 加(add()) 、 減(sub()) 、乘(times()) 和除(div()) 。 創建一個具有 main()函數的類。 在 main()函數中創建一個 Calculation 的實例對象並對其中的方法進行調用。
 1 public class Calculation {
 2     double a;
 3     double b;
 4 
 5     // 構造器
 6     public Calculation(double a, double b) {
 7         super();
 8         this.a = a;
 9         this.b = b;
10     }
11 
12     // 加法
13     public void add() {
14         double A = a + b;
15         System.out.println("加法:" + A);
16     }
17 
18     // 減法
19     public void sub() {
20         double B = a - b;
21         System.out.println("減法:" + B);
22     }
23 
24     // 乘法
25     public void times() {
26         double C = a * b;
27         System.out.println("乘法:" + C);
28     }
29 
30     // 除法
31     public void div() {
32         double D = a / b;
33         System.out.println("除法:" + D);
34     }
35     public static void main(String[] args) {
36         Calculation c = new Calculation(12.6,5.7);
37         c.add();
38         c.sub();
39         c.times();
40         c.div();
41     }
42 
43 }

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

 1 public class Draw {
 2     int count;
 3     int lines;
 4 
 5     // 構造器
 6     public Draw(int count, int lines) {
 7         super();
 8         this.count = count;
 9         this.lines = lines;
10     }
11     
12     //輸出直角三角形
13     public void drawTrian(){
14         for(int i = 0;i<=lines;i++){
15             for(int j = 0;j<=i;j++){
16               System.out.print(" *");    
17             }
18             System.out.println();
19         }
20         System.out.println("------------------------------------------");
21     }
22     //輸出矩形
23     public void drawRec(){
24         for(int i=0;i<=lines;i++){
25             for(int j=0;j<=count;j++){
26                 System.out.print(" *");
27             }
28             System.out.println();
29         }
30         System.out.println("------------------------------------------");
31     }
32     
33     //輸出平行四邊形
34     public void drawPra() {
35         for (int i = 0; i < lines; i++) {
36             for (int k = 0; k < i; k++) {
37                 System.out.print(" ");
38             }
39             for (int j = 0; j < count; j++) {
40                 System.out.print(" *");
41             }
42             System.out.println();
43         }
44     }
45 
46     public static void main(String[] args) {
47         Draw d= new Draw(10,5);
48         d.drawTrian();
49         d.drawRec();
50         d.drawPra();
51     }
52 
53 }

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

public class Airconditioner {
    String brand;
    String horsepower;
    int temperature;

    // 構造器
    public Airconditioner(String brand, String horsepower, int temperature) {
        this.brand = brand;
        this.horsepower = horsepower;
        this.temperature = temperature;
    }
    
    //空調介紹
    public void introduce(){
        System.out.println("品牌\t匹數\t溫度");
        System.out.println(brand+"\t"+horsepower+"\t"+temperature);
    }
    
    //加熱
    public void warm(){
        System.out.println("空調溫度是:"+temperature);
        temperature+=5;
        System.out.println("空調上調后的溫度是:"+temperature);
    }
    
    //制冷
    public void refrigeration(){
        System.out.println("空調溫度是:"+temperature);
        temperature-=5;
        System.out.println("空調下調后的溫度是:"+temperature);
    }
    
    public static void main(String[] args) {
        Airconditioner a = new Airconditioner("格力","3匹",25);
        a.introduce();
        a.warm();
        a.refrigeration();
    }

}

  4.定義一個表示學生信息的類 Student,要求如下:

  (1)類 Student 的屬性如下:

  sNO  表示學號; sName 表示姓名; sSex 表示性別; sAge 表示

  年齡;sJava:表示 Java 課程成績。

  (2)類 Student 帶參數的構造方法:

  在構造方法中通過形參完成對成員變量的賦值操作。

  (3)類 Student 的方法成員:

  getNo():獲得學號;

  getName():獲得姓名;

  getSex():獲得性別;

  getAge()獲得年齡;

  getJava():獲得 Java  課程成績

  (4)  根據類 Student 的定義,創建五個該類的對象,輸出每個學生的信息,計算並輸出這五個學生 Java 語言成績的平均值,以及計算並輸出他們 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) {
        super();
        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;
    }
    
     public void introduce(){
         System.out.println(sNO+"\t"+sName+"\t"+sSex+"\t"+sAge+"\t"+sJava);
     }
    public static void main(String[] args) {
        System.out.println("學號\t姓名\t性別\t年齡\tJava成績");
        Student s1 = new Student("00001","劉能","男",21,80);s1.introduce();
        Student s2 = new Student("00002","謝大腳","女",26,70);s2.introduce();
        Student s3 = new Student("00003","趙四","男",31,40);s3.introduce();
        Student s4 = new Student("00004","謝廣坤","男",34,90);s4.introduce();
        Student s5 = new Student("00005","小蒙","女",26,100);s5.introduce();
        //平均成績
        int aver = (s1.sJava+s2.sJava+s3.sJava+s4.sJava+s5.sJava)/5;
        System.out.println("\n五個同學的Java成績平均值是:"+aver);
        //成績傳入數組
        int[] arr ={s1.sJava,s2.sJava,s3.sJava,s4.sJava,s5.sJava};
        Arrays.sort(arr);
        System.out.println("\n五個同學Java成績排序是:"+Arrays.toString(arr));
        System.out.println("\nJava成績的最高分是:"+arr[arr.length-1]+"分"+"  Java成績的最低分是:"+arr[0]+"分");
    }
   
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM