<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > 考試說明:本次測試卷一共25道測試題,共計100分。考試時間120分鐘。 ## 一、選擇題(共 15 題,每題 2 分) 1. 關于 Java 語言 static 應用說法正確的是(C) ``` A 父類中的靜態方法可以被子類重寫 B 靜態數據是屬于對象的,可以通過某個對象來引用 C 父類和子類具有同名的靜態方法時,當子類對象向上轉型后,只能調用到父類原有的靜態方法 D 靜態的方法中可以通過方法名直接調用非靜態的方法 ``` 2. 以下在 Java 中定義接口正確的是(B) ``` A public interface PersonDao { public int age; public int getAge(); } B public interface PersonDao { public String getName(); public int getAge(); } C public interface PersonDao { public String getName() {} pubic int getAge() {} } D public interface PersonDao { private String getName() {} private int getAge() {} } ``` 3. 以下關于 Java 語言繼承的說法正確的是(C) ``` A Java 中的類可以有多個直接父類 B 抽象類不能有父類 C Java中的接口支持多繼承 D 最終類可以作為其他類的父類 ``` 4. 對于構造方法,下列敘述不正確的是(C) ``` A 構造方法允許重載 B 子類默認調用父類的無參構造方法 C 子類不被允許調用父類的構造方法 D 在同一個類中定義的重載構造方法可以互相調用 ``` 5. 對于子類的構造方法說明,下列敘述中不正確的是(C) ``` A 子類默認調用父類的無參構造器 B 子類可以在自己的構造方法中使用super關鍵字來調用父類指定的構造方法 C 在創建子類對象的時,將先執行調用自父類的無參構造方法,然后再執行自己的構造方法 D 子類不但可以調用父類的無參構造方法,也可以調用父類的有參構造方法 ``` 6. 有關 Java 中的類和對象,以下說法錯誤的是(B) ``` A 同一類的所有對象都擁有相同的特征和行為 B 類和對象一樣,只是說法不同 C 對象是具有屬性和行為的實體 D 類規定了對象擁有的特征和行為 ``` 7. 在Java中,包的推薦命名規范不正確的是(BD) ``` A java 的包名都是小寫單詞組成的 B java 的包名首字母大寫 C java 的包名采用的是域名的倒序 D java 的包名用圓括號包括 ``` 8. 如下Java代碼的輸出結果為(C) ``` public class Student { public void Student() { System.out.println("構造學生對象"); } public static void main(String[] args) { Student student = new Student(); } } ``` ``` A 輸出:構造學生對象 B 編譯錯誤 C 正確運行,但是什么也不輸出 D 輸出:"構造學生對象" ``` 9. 下面中哪兩個可以在A的子類中使用(AC) ``` public class A { protected int method1(int a, int b) { return 0; } } ``` ``` A public int method1(int a, int b) {return 0;} B private int method1(int a, int b) {return 0;} C private int method1(int a, long b) {return 0;} D public short method1(int a, int b) {return 0;} ``` 10. 在下方的代碼中,BitUtils 和 SomeApp 分別放在不同的包中,當需要在 SomeApp 中的 main 方法中調用 BitUtils 中的 process方法時,即(1)處需要填寫的代碼是(C) ```java package util; public class BitUtils { public static void process(byte[] b) { // ... something ... } } package app; public class SomeApp { public static void main(String[] args) { byte[] bytes = new byte[256]; // (1) } } ``` ``` A process(bytes); B BitUtils.process(bytes); C util.BitUtils.process(bytes); D 在SomeApp中無法調用BitUtils中的方法; ``` 11. 當類中的一個成員方法被下面哪個修飾符修飾后,該方法只能在本類中被訪問(B) ``` A public B private C final D default ``` 12. 在 Java 中,以下程序的運行結果是(A) ``` public class Person { String name; public static void main(String[] args) { Person person = new Person(); System.out.println(person.name); } } ``` ``` A 輸出:null B 正常運行,但不會輸出任何內容 C 編譯出錯,不能運行 D 能運行,但運行時會出現異常 ``` 13. 下列哪個不是單例模式的要點(B) ``` A 某個類只能有一個實例 B 某個類可以有一個實例 C 單例模式必須自行創建實例 D 必須自行向整個系統提供自行創建的實例 ``` 14. 下列關于 Java 中接口的說法不正確的是(C) ``` A 接口中方法的訪問修飾符默認為 public B 接口中的方法如果寫成 void test(); 的形式,默認是抽象方法 C 實現接口的類中在重寫接口中方法時訪問修飾符可以為 protected D 當類實現接口時,需要實現接口中所有的抽象方法,否則需要將該類設置為抽象類 ``` 15. 下列關于 instanceof 說法不正確的是(C) ``` A instanceof 的返回值為 true 和 false B instanceof 可以用來判斷對象是否可滿足某個特定類型 C 可以通過"A instanceof B"表示 A 類可以轉型為B類 D instanceof 可放在if語句的條件表達式中 ``` ## 二、閱讀題(共 2 題,每題 5 分) 1. 下面 Java 代碼的運行結果是() ``` public class Penguin { private String name; // 名字 private int health; // 健康值 private String sex; // 性別 public void Penguin() { name = "QQ"; health = 10; sex = "雄性"; } public void print() { System.out.println("名字是" + name); System.out.println("健康值是" + health); System.out.println("性別是" + sex); } public static void main(String[] args) { Penguin pgn = new Penguin(); pgn.print(); } } ``` ``` 名字是:null 健康值是:0 性別是:null ``` 2. 下面 Java 代碼的運行結果是() ``` public class Father { static { System.out.println("父類靜態構造"); } { System.out.println("父類構造塊"); } public Father () { System.out.println("父類構造方法"); } } public class Son extends Father { static { System.out.println("子類靜態構造"); } { System.out.println("子類構造塊"); } public Son () { System.out.println("子類構造方法"); } public static void main(String[] args) { Son s1 = new Son(); Son s2 = new Son(); } } ``` ``` 父類靜態構造 子類靜態構造 父類構造塊 父類構造方法 子類構造塊 子類構造方法 父類構造塊 父類構造方法 子類構造塊 子類構造方法 ``` ## 三、簡述題(共 3 題,每題 10 分) 1. 請簡述方法重載與方法重寫的區別。 ``` 方法重載:滿足以下條件的兩個方法我們稱之為方法重載(Overload)。 1. 在同一個類中 2. 方法名相同 3. 方法參數列表不同(參數類型不同、參數個數不同,參數順序不同,與參數名稱無關) 注意:方法重載與訪問修飾符無關,與返回值類型無關。 方法重寫:滿足以下條件的方法我們稱之為方法重寫(Override)。 1. 在繼承父類的子類中 2. 子類方法名與父類相同 3. 子類方法參數列表與父類相同 4. 子類方法訪問修飾符必須比父類訪問范圍要大 5. 子類方法返回值類型如下: 基礎數據類型必須保持一致 引用數據類型必須與父類返回值類型一致,或者是其的派生類 ``` 2. 請簡述抽象類與接口的區別。 ``` 1. 聲明 抽象類是類,使用 abstract + class 關鍵字來聲明,接口使用 interface 關鍵字來聲明 2. 構造方法 抽象類含有構造方法,接口沒有構造方法。 抽象類里的構造方法并不能實例對象,而是提供給其子類在實例對象時調用,完成初始化操作。 3. 方法 接口在JDK1.7之前只能包含抽象方法,在JDK1.8之后可以包含靜態方法和默認方法(default修飾) 接口所有方法訪問修飾符只能為public,可以省略。抽象方法,可以省略abstract關鍵字。 抽象類中所有普通方法訪問修飾符沒有限制。 抽象類中抽象方法必須使用abstract修飾,不可省略,訪問修飾符不能為private。 4. 屬性 抽象類中可以包含成員變量與靜態變量。 接口中只能包含靜態常量,默認為 public static final 類型,必須初始賦值。 5. 繼承與實現 一個類只能繼承一個抽象類,重寫抽象方法,使用extends關鍵字。 一個接口可以繼承多個接口,使用extends關鍵字。 一個類可以實現多個接口,重寫抽象方法,使用implements關鍵字。 ``` 3. 請寫出任意一種單例設計模式的代碼。 ``` public class HungrySingleton { private HungrySingleton () {} private static HungrySingleton instance = new HungrySingleton(); public static HungrySingleton getInstance() { return instance; } } public class LazySingleton { private LazySingleton() {} private static LazySingleton instance; public static LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } } ``` ## 四、編程題(共 3 題,每題 10 分) 1. 定義圖形 Shape 類、圓 Circle 類和矩形 Rectangle 類完成以下代碼輸出。 ``` 圓的面積為 38.465 矩形的面積為 30.0 ``` ``` public abstract class Shape { public abstract double area(); } public class Circle extends Shape { private static final double PI = 3.14; private double round; public double area() { return PI * this.getRound() * this.getRound(); } // constructor // getter/setter... } public class Rectangle extends Shape { private double length; private double width; public double area() { return this.getLength() * this.getWidth(); } // constructor // getter/setter... } public class Test { public static void main(String[] args) { Shape circle = new Circle(3.5); Shape rectangle = new Rectangle(6.0, 5.0); System.out.println("圓的面積為" + circle.area()); System.out.println("矩形面積為" + rectangle.area()); } } ``` 2. 定義教師 Teacher 類、學生 Student 類以及班級 Clazz 類完成以下代碼輸出。 ``` 30歲的張揚老師正在403教室給三年級二班的10名同學上數學課。 上課的同學有20歲的張三、21歲的李四、22歲的王五和23歲的趙六。 ``` ``` public class Teacher { private String name; private int age; private String subject; public void teaching(Clazz clazz) { System.out.print(this.getAge() + "歲的" + this.getName() + "老師正在給"); System.out.print(clazz.getRoom() + clazz.getGrade() + clazz.getName() + "的"); System.out.print(clazz.getNum() + "名同學上" + this.getSubject() + "課" ); System.out.print("上課的同學有:" + clazz.studentInfo()); } // constructor // getter setter... } public class Student { private String name; // 姓名 private int age; // 年齡 // constructor // getter setter ... } public class Clazz { private String room; // 教室 private String grade; // 年級 private String name; // 班級名稱 private Student[] students = new Student[10]; // 學生們 private int num; // 實際學生數量 // 此方法不考慮學生排滿溢出的情況 public void addStudent(Student student) { for (int i = 0; i < students.length; i++) { if (students[i] == null) { students[i] = student; num++; break; } } } // constructor // getter setter ... public String studentsInfo() { String info = ""; for (int i = 0; i < students.length; i++) { info += students[i].getAge() + "的" + students[i].getName() + " "; } return info; } } public class Test { Teacher zhang = new Teacher(35, "張揚", "數學"); Clazz clazz = new Clazz("403教室", "三年級", "二班"); Student s1 = new Student(20, "張三"); Student s2 = new Student(21, "張四"); Student s3 = new Student(22, "張五"); Student s4 = new Student(23, "張六"); clazz.addStudent(s1); clazz.addStudent(s2); clazz.addStudent(s3); clazz.addStudent(s4); zhang.teaching(clazz); } ``` 3. 編寫三個系別的學生類:英語系、計算機系以及文學系。定義一個可容納 5 個學生類數組,初始學生成績等信息,按照綜合成績從低到高排序輸出。各系總分評測標準如下: ``` 英語系:演講 50%、期中考試 25%、期末考試 25% 計算機系:操作能力 40%、英語寫作 20%、期中考試 20%、期末考試 20% 文學系:演講 35%、作品 35%、期中考試 15%、期末考試 15% ``` ``` public abstract class Student { private int middle; // 期中 private int end; // 期末 public abstract int calcTotal(); // constructor // getter setter } public class EnglishStudent extends Student { private int speech; // 演講 // constructor // getter setter @Override public int calcTotal() { return (int) (0.5 * this.getSpeech() + 0.25 * this.getMiddle() + 0.25 * this.getEnd()); } @Override public String toString() { return "EnglishStudent{綜合成績=" + this.calcTotal() + ", 演講=" + this.getSpeech() + ", 期中=" + this.getMiddle() + ", 期末=" + this.getEnd() + '}'; } } public class ComputerStudent extends Student { private int operate; // 操作 private int writing; // 寫作 // constructor // getter setter @Override public int calcTotal() { return (int) (0.4 * this.getOperate() + 0.2 * this.getWriting() + 0.2 * this.getMiddle() + 0.2 * this.getEnd()); } @Override public String toString() { return "ComputerStudent{綜合成績=" + this.calcTotal() + ", 操作=" + this.getOperate() + ", 寫作=" + this.getWriting() + ", 期中=" + this.getMiddle() + ", 期末=" + this.getEnd() + '}'; } } public class LiteratureStudent extends Student { private int speech; // 演講 private int works; // 作品 // constructor // getter setter @Override public int calcTotal() { return (int) (0.35 * this.getSpeech() + 0.35 * this.getWorks() + 0.15 * this.getMiddle() + 0.15 * this.getEnd()); } @Override public String toString() { return "LiteratureStudent{綜合成績=" + this.calcTotal() + ", 演講=" + this.getSpeech() + ", 作品=" + this.getWorks() + ", 期中=" + this.getMiddle() + ", 期末=" + this.getEnd() + '}'; } } public class Test { public static void main(String[] args) { Student[] students = new Student[] { new LiteratureStudent(70, 90, 100, 80), new EnglishStudent(90, 70, 90), new ComputerStudent(70, 70, 70, 70), new ComputerStudent(80, 90, 90, 70), new EnglishStudent(80, 80, 80) }; Arrays.sort(students, Comparator.comparingInt(Student::calcTotal)); for (int i = 0; i < students.length; i++) { System.out.println(students[i]); } } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看