JavaSE習題 第四章 類與對象


問答題:

1.在聲明類時,類名應該遵守哪些習慣?

  1.與文件名相同2.首字母大寫

2.類體內容中有那兩類比較重要的成員?

  1.成員變量2.方法

3.實例方法可以操作類變量嗎?類方法可以操作實例變量嗎?

  類中的實例方法可以操作類變量

因為類總是先於實例存在的 實例只是類在特定狀態下的一個特定對象 所以必須類存在 才能從類創建實例 所以實例方法可以操作類變量 因為類變量肯定存在
  類方法不可以操作實例變量
因為類方法的作用域在類上 類本身並不知道自己被創建了多少實例 這些實例哪些還存在 所以類方法沒有辦法訪問到實例變量

4.當類的字節碼加載到內存時,類變量一定分配了內存空間嗎?

  是的

5.類的實例變量在什么時候分配內存空間?

  new的時候

6.一個類的類變量被該類創建的所有對象共享嗎?

  是的

7.不同對象的實例變量分配的內存空間地址一定不同嘛?

  不一定

8.上面叫方法的重載?構造方法可以重載嘛?

  重載(overload),方法名一樣,但是返回類型或者傳參不一樣。構造方法也可以重載。

9.為什么類方法不可以調用實例方法。

  實例方法沒有加載進內存,必須以new的方式加載

10.為什么類方法不能操作實例成員變量?

  沒加載進內存,理由和上一題一樣

11.實例方法可以用類名直接調用嗎?

  不行,先new出來

12.關鍵字this可以出現在構造方法中?可以出現在實例方法中?可以出現在類方法中?

  都行

13.源文件聲明編寫的類一定在同一包中嘛?

  不一定,可以導包

14.“import java.awt.*;”和"import java.awt.Button"有什么不同?

  前一個內存加載awt下所有類,第二個只加載button

15.程序中如果使用了“import java.util.*;”;程序運行時,要加載java.util包中全部類到內存嘛?

  要的

16.有哪幾種訪問權限修飾符,說出作用。

  public 所有地方均能訪問該類

  private 除本類都不能訪問

  protected 除本類,本包和子類(其他包下子類也行),其他包下都不能訪問

  不加(Default)  除了本類,本包,子類和其他類都不能訪問

17.怎么反編譯一個類

  使用java自帶的javap

18.請寫出下列代碼中類A的輸出結果(題目少數據)

作業題

1.編寫一個類,該類創建對象可以計算等差數列的和。

  

package com.littlepage.test;

public class ArithmeticProgression {
    
    //成員變量
    private int init;//初始值
    private int subValue;//公差
    private int num;//項數
    
    //空參構造
    public ArithmeticProgression() {
        
    }
    
    //有參構造
    public ArithmeticProgression(int init, int subValue,int num) {
        super();
        this.init = init;
        this.subValue = subValue;
        this.num=num;
    }
    
    //get,set方法
    public int getInit() {
        return init;
    }
    public void setInit(int init) {
        this.init = init;
    }
    public int getSubValue() {
        return subValue;
    }
    public void setSubValue(int subValue) {
        this.subValue = subValue;
    }
    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    //計算方法
    public int caculate() {
        return init*num+num*(num-1)*subValue/2;
    }
}

 

package com.littlepage.test;

public class Test4 {
    public static void main(String[] args) {
        ArithmeticProgression a=new ArithmeticProgression(1,1,5);
        System.out.println(a.caculate());
    }
}

控制台:15

2.編寫一個類,該類創建的對象可以輸出英文字母表(上一題是答案我用標准類來寫,這題我只寫構造)

package com.littlepage.test;

public class EnglishTable {
    public EnglishTable() {
        System.out.println("abcdefghijklmnopqrstuvwxyz");
    }
}
package com.littlepage.test;

public class Test4 {
    public static void main(String[] args) {
        new EnglishTable();
    }
}
控制台:

abcdefghijklmnopqrstuvwxyz

 
        

3.編寫一個類,該類封裝了一元二次方程共有的屬性和功能,即刻畫系數的三個成員變量和計算實數根的方法,要求,該類各個對象是共享常量

package com.littlepage.test;

public class Equation {
    //成員變量
    private int a;
    private int b;
    private int c;
    //無參構造
    public Equation() {
        a=0;
        b=0;
        c=0;
    }
    //有參構造
    public Equation(int a, int b, int c) {
        super();
        this.a = a;
        this.b = b;
        this.c = c;
    }
    //get,set方法
    public int getA() {
        return a;
    }
    public void setA(int a) {
        this.a = a;
    }
    public int getB() {
        return b;
    }
    public void setB(int b) {
        this.b = b;
    }
    public int getC() {
        return c;
    }
    public void setC(int c) {
        this.c = c;
    }
    //計算方法
    public void caculate() {
        if(b*b-4*a*c<0) System.out.println(a+"x^2+"+b+"x+"+c+"=0無實數根");
        else {
            double d=(-b+(b*b-4*a*c))/(2*a);
            double e=(-b-(b*b-4*a*c))/(2*a);
            System.out.println(a+"x^2+"+b+"x+"+c+"=0的兩根為"+d+","+e);
        }
    }
}
package com.littlepage.test;

public class Test4 {
    public static void main(String[] args) {
        Equation eq=new Equation(1,2,1);
        eq.caculate();
    }
}
控制台:1x^2+2x+1=0的兩根為-1.0,-1.0

4.編寫兩個類AB,A創建的對象可以計算兩個正整數的最大公約數,B創建的對象可以計算兩個數的最小公倍數,要求:B類有一個成員變量是用A聲明的對象

package com.littlepage.test;

public class A {
    private int a;
    private int b;
    public A() {
    }
    public A(int a, int b) {
        super();
        this.a = a;
        this.b = b;
    }
    public int getA() {
        return a;
    }
    public void setA(int a) {
        this.a = a;
    }
    public int getB() {
        return b;
    }
    public void setB(int b) {
        this.b = b;
    }
    public int caculate() {
        int c=1;
        if(a>b) {
            c=a;
            a=b;
            b=c;
        }
        for(int i=2;i<=a;i++) {
            if(a%i==0&&b%i==0) {
                c=i;
            }
        }
        return c;
    }
}
package com.littlepage.test;

public class B {
    A a;

    public B() {
        super();
        // TODO Auto-generated constructor stub
    }

    public B(A a) {
        super();
        this.a = a;
    }

    public A getA() {
        return a;
    }

    public void setA(A a) {
        this.a = a;
    }
    public int caculate() {
        return a.getA()*a.getB()/a.caculate();
    }
}
package com.littlepage.test;

public class Test4 {
    public static void main(String[] args) {
        A a=new A(12,6);
        System.out.println(a.caculate());
        B b=new B(a);
        System.out.println(b.caculate());
    }
}
控制台:

6
12

 
        

5.編寫使用了包語句的類,然后在應用程序中用import語句引入,並用該類創造對象

package com.littlepage.servlet;

import com.littlepage.test.ArithmeticProgression;

public class Test2 {
    ArithmeticProgression ap=new ArithmeticProgression();
}
該題引用第一題編寫的類庫

 


免責聲明!

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



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