Java作業習題

1.下列哪一項敘述是正確的?(B)

A
char型字符在Unicode表中的位置範圍是0至32767

B
char型字符在Unicode表中的位置範圍是0至65535

C
char型字符在Unicode表中的位置範圍是0至65536

D
char型字符在Unicode表中的位置範圍是-32768至32767

unicode是不定長度的字符表達方式。也就是說,一個字符可能是一個字節,也可能是2個字節,也可能有多個字節。但是java的默認字節輸出方式是utf-8,也就是固定的2個字節長度。
utf-8是unicode的一種存儲方式。

2.下列哪項字符序列可以做爲標識符?©

A
true

B
default

C
_int

D
good-class

Java標識符:給變量、類、方法命名
規則:可以以字母、數字、’_’、’$'組成,但是不可以以數字開頭

3.
在這裏插入圖片描述

下列哪三項是正確的float變量的聲明?(adf)

A.float foo=-1;
B. float foo=1.0
C. float foo=42e1;
D.float foo=2.02f
E.float foo=3.03d;
F.float foo=0x0123;

在JAVA中整數的默認爲int類型,浮點數默認爲double類型;
故將一個浮點數賦值給float時需要將該數進行強制轉換;
42e1爲浮點類型;科學計數法又名爲擴展型浮點類型;
定點數:定點小數:小數點隱含在最高數據位的左邊;
定點整數:小數點隱含固定在最低位之後,最高位爲符號數, 用於表示純整數;
浮點數:小數點的位置是由階碼規定,因此是浮動的。用來表示實數。
在計算機中通常把浮點數N分爲解碼和尾數兩部分來表示。
N = 尾數*基數^階碼;
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
以下哪兩項是正確的char型變量的聲明?(be)
A.char ch=”R”;
B.char ch =’\’;
C.char ch =’ABCD’;
D.char ch = “ABCD”;
E.char ch =’\ucafe’;
F.char ch =’\u10100’;
BE 首先給char字符變量賦值要用單引號,其次只能接受一個字符,雙引號爲String字符串類型,E爲Unicode碼的正確表示方法,F超出了Unicode表示範圍
=好後面 表示的是一個unicode字符’\u’表示使用的是unicode字符集。後面跟四位十六進制的數。,F裏面以爲後面跟了5位 所以錯

————————————————————————————————

穿插知識點:

1. Java中的字符主要有哪些?
Java編程語言主要有以下幾種字符:

空白字符:空格、製表符、換頁符和行終止符
註釋:/text/ or // text
符號
標識符:就是變量名和類名,其中的字母和數字可以從Unicode字符集中提取,也就是說能用本地語言編寫標識符,如String 名字=“cxcoder”;
關鍵字:比如class,new
字面常量:簡單類型、String、空類型在源碼中的表示
分隔符:也叫標點符號,() {} [] ; , . … @
操作符:邏輯和算術運算符
轉義字符
Unicode轉義字符:通過\u+4個十六進制數使用任何Unicode字符
字面常量轉義字符:\b \t \n \f \r " ’ \不使用Unicode轉義字符也能表示一些特殊字符
————————————————————————————————

代碼1、2輸出的是什麼?

public class E {

   public static void main(String args[]) {

     int [] a={10,20,30,40},b[]={{1,2},{4,5,6,7}};

     b[0] = a;

     b[0][1] = b[1][3];

     System.out.println(b[0][3]); //【代碼1】

     System.out.println(a[1]);   //【代碼2】

   }

}

我的答案:
第一空:
40
第二空:
7

程序設計:

編寫一個應用程序,給出漢字‘你’、‘我’、‘他’在Unicode表中的位置。

我的答案:

public class Example {  

		public static void main(String args[]) {

		     System.out.println((int)'你');

		     System.out.println((int)'我');

		     System.out.println((int)'他');

		   }

		}

——————————————————————————————————————

第三章

1.下列哪個敘述是正確的?
A. 5.0/2+10的結果是double型數據
B. (int)5.8+1.0的結果是int型數據
C. ‘蘋’+’果’的結果是char型數據
D.(short)10+’a’的結果是short型數據

2.用下列哪個代碼替換程序標註的【代碼】會導致編譯錯誤?
A. m–>0
B. m++>0
c. m=0
D. m>100&&true

Java
public class E {
    public static void main(String args[]) {
        int m=10,n=0;
        while([代碼]){
            n++;
        }
    }
}

Type mismatch: cannot convert from int to boolean

3.假設有“int x=1;”,以下哪個代碼導致“可能損失精度,找到int需要char”這樣的編譯錯誤?
A. short t = 12+’a’;
B. char c = ‘a’+1;
C. char m = ‘a’+x;
D. byte n = ‘a’+1;

選擇題解析
選擇題答案:1.A 2.C 3.C

第一題B將5.8轉化爲整型後又加了一個double型1.0,所以結果仍爲double型
C字符和int可以相互轉換,兩個字符相加就是對應的unicode相加,但是相加後unicode的值大於了char的範圍(0-65535),所以不能用char字符接收,需要用int數據接收
D char的精度要比short高,所以一個short加上一個char結果爲char

第二題
while循環條件應該是boolean類型,而C是賦值語句,所以會編譯錯誤,要注意=是賦值,==纔是等於。

第三題
精度從“低”到“高”的排列的順序是:
byte->short->char->int->long->float->double
Java在計算算術表達式的值時,按精度最高進行運算。
Java允許把不超出byte、short、char的取值範圍的算術表達式的值賦給byte、short、char。

—————————————————————————————————————

第三章:字符串習題(二)

1
【單選題】
如下代碼,下列敘述哪個是正確的:

public class E{
public static void main(String[] args){
String strOne="bird";
String strTwo=strOne;
strOne="fly";
System.out.println(strTwo);
}
}

A、
程序編譯出現錯誤。

B、
程序的輸出結果是bird。

C、
程序的輸出結果是fly。

D、
程序的輸出結果是null。

我的答案:B
2
【單選題】
如下代碼,下列敘述哪個是正確的:

public class E{
public static void main(String args[]){
String strOne=new String(“你好”);
String strTwo= strOne;
strOne =new String(“hello”);
System.out.println(strTwo);
}
}

A、
程序編譯出現錯誤。

B、
程序輸出結果是hello。

C、
程序輸出結果是你好。

D、
程序輸出結果是null。

我的答案:C
3
【單選題】
對於如下代碼,下列哪個敘述是正確的:

public class E{
public static void main(String args[]){
String s1=args[1];
String s2=args[2];
String s3=args[3];
System.out.println(s3);
}
}

A、
程序出現編譯錯誤。

B、
無編譯錯誤,在命令行執行程序:“java E I love this game”,程序輸出this。

C、
無編譯錯誤,在命令行執行程序:“java E let us go”,程序無運行異常。

D、
無編譯錯誤,在命令行執行程廳:“java E 0 1 2 3 4 5 6 7 8 9”,程序輸出3。

我的答案:D
4
【單選題】
對於如下代碼,下列哪個敘述是正確的:

public class test {
public static void main(String[]args){
String str=new String("bird");
modify(str);
System.out.println(str);
}
public static void modify(String s){
s=s+"fly";
}
}

A、
程序編譯出現錯誤。

B、
程序的輸出結果是bird。

C、
程序的輸出結果是null。

D、
程序的輸出結果是fly。

我的答案:B

5
【判斷題】表達式new String(“abc”).equals(“abc”)的值是true。()
我的答案:√

6
【判斷題】表達式“\t\nABC”.length()的值是5。()
我的答案:√

7
【判斷題】表達式“java”.equals(“java”)的值是true。()
我的答案:√

8
【判斷題】StringTokenizer對象的nextToken()方法返回一個String對象。()
我的答案:√
9

【判斷題】表達式“Bird”.compareTo(“Bird fly”)的值是負數。()
我的答案:√

10
【判斷題】表達式“RedBird”.indexOf(“Bird”)的值是4。()
我的答案:×

11
【判斷題】表達式“Bird”.equalsIgnoreCase(“bird”)的值是true。()
我的答案:√

12
【判斷題】String對象的字符序列是不可修改的。()
我的答案:√

13
【判斷題】表達式new String(“Bird”)==“Bird”的值是true。()
我的答案:×
——————————————————————————————————————

類和對象的相關概念

1
【單選題】
下列對封裝性的描述中,錯誤的是

(10.0分)
A、
封裝體包含了屬性和行爲

B、
封裝體中的屬性和行爲的訪問權限是相同的

C、
被封裝的某些信息在封裝體外是不可見的

D、
封裝使得抽象的數據類型提高了可重用性

我的答案:B

2
【單選題】
有關類的說法,正確的是

(10.0分)
A、
類具有封裝性,所以類的數據是不能被訪問的

B、
類具有封裝性,但可以通過類的公共接口訪問類中的數據

C、
聲明一個類時,必須使用 public 修飾符

D、
每個類中必須有 main 方法,否則程序無法運行

我的答案:B

3
【單選題】
下面關於類的描述錯誤的是

(10.0分)
A、
類的方法都由方法頭和方法體組成

B、
一個Java程序可以有多個公共類

C、
一個包可以包含多個類

D、
類的實現包括類聲明和類體兩部分

我的答案:B

4
【單選題】
要求設計一個類,它擁有一個特殊的成員域,該成員域必須能夠被這個類的子類訪問到,但是不能被不在同一個包內的其他類訪問到。下面 可以滿足上述要求。

(10.0分)
A、
該成員域的封裝屬性設置爲 public

B、
該成員域的封裝屬性設置爲 private

C、
該成員域的封裝屬性設置爲 protected

D、
該成員域不需要特殊的封裝屬性

我的答案:C

5
【單選題】
在Java中,下面對於構造函數的描述正確的是

(10.0分)
A、
類必須顯式定義構造函數

B、
構造函數的返回類型是void

C、
構造函數和類有相同的名稱,並且不能帶任何參數

D、
一個類可以定義多個構造函數

我的答案:D

6
【單選題】
You want a class to have access to members of another class in the same package. Which
is the most restrictive access that accomplishes this objective?

(10.0分)
A、
public

B、
private

C、
protected

D、
default access

我的答案:D
**7

【單選題】
下列哪些類(不包括內部類)聲明是錯誤的?**
(10.0分)
A、
class A

B、
public class A

C、
protected class A

D、
class a

我的答案:C

8
【多選題】
面向對象技術的特性是

(10.0分)
A、
繼承性

B、
有效性

C、
多態性

D、
封裝性

我的答案:ACD

9
【多選題】
下列哪些敘述是正確的:

(10.0分)
A、
類中的static方法可以用類名調用

B、
實例方法可以操作static變量

C、
類方法可以操作實例變量

D、
類方法可以操作static變量

我的答案:ABD

10
【填空題】
是對事物的抽象,而 是對對象的抽象和歸納。

(5.0分)
我的答案:

第一空:
對象

第二空:

11
【填空題】
把對象實例化可以生成多個對象,使用__ _運算符爲對象分配內存空間。

(5.0分)
我的答案:

第一空:
new

————————————————————————————————————

子類與繼承

下列哪個敘述是正確的?
(8.0分)

A、
子類繼承父類的構造方法。

B、
abstract類的子類必須是非abstract類。

C、
子類繼承的方法只能操作子類繼承和隱藏的成員變量。

D、
子類重寫或新增的方法也能直接操作被子類隱藏的成員變量。

正確答案: C 我的答案:C
2
【單選題】
下列程序中註釋的哪個代碼(A,B,C,D)是錯誤的(無法通過編譯)?

class A {

   static int m;

   static void f(){

       m = 20 ;          //A

   }

}

class B extends A {

   void f()              //B

   {  m = 222 ;         //C     

   }

}

class E {

   public static void main(String args[]) {

      A.f();            // D   

   }

}

(8.0分)
A、
A註釋

B、
B註釋

C、
C註釋

D、
D註釋

正確答案: B 我的答案:B
3
【單選題】
將下列哪個代碼(A,B,C,D)放入程序中標註的【代碼】處將導致編譯錯誤?

  class A {

   public float getNum() {

       return 3.0f;

   }    

}

public class B extends A {

      【代碼】

} 

(8.0分)
A、
public float getNum(){return 4.0f;}

B、
public void getNum(){ }

C、
public void getNum(double d){ }

D、
public double getNum(float d){return 4.0d;}

正確答案: B 我的答案:B
4
【單選題】
對於下列代碼,下列哪個敘述是正確的?

class A {

   public int i=0;

   A(int m) {

     i = 1;

   }

}

public class B extends A {

    B(int m) {

       i = 2;

    }

    public static void main(String args[]){

       B b = new B(100);

       System.out.println(b.i); //【代碼】

    }

}

(8.0分)
A、
程序提示編譯錯誤(原因是A類沒有不帶參數的構造方法)

B、
編譯無錯誤,【代碼】輸出結果是0。

C、
編譯無錯誤,【代碼】輸出結果是1。

D、
編譯無錯誤,【代碼】輸出結果是2。

正確答案: A 我的答案:A
5
【單選題】
在子類中調用父類中被覆蓋的方法時需要使用哪項關鍵字?

(8.0分)
A、
this

B、
super

C、
new

D、
以上都不是

正確答案: B 我的答案:B
6
【單選題】

       public class Parent{

    public void change (int x){}

}

public class Child extends Parent{

    //覆蓋父類change方法

    }

 下列哪個聲明是正確的覆蓋了父類的change方法?

(8.0分)
A、
protected void change (int x){}

B、
public void change(int x, int y){}

C、
public void change (int x){}

D、
public void change (String s){}

正確答案: C 我的答案:C
7
【多選題】
下列程序中註釋的哪兩行代碼(A,B,C,D)是錯誤的(無法通過編譯)?

class Father {

   private int money =12;

   float height;

   int seeMoney(){

      return money ;           //A

   }

}

class Son extends Father {

   int height;

   int lookMoney() {

      int m = seeMoney();      //B

      return m;            

   }

}

class E {

   public static void main(String args[]) {

      Son erzi = new Son();

      erzi.money = 300;       //C

      erzi.height = 1.78F;      //D

   }

}

(15.0分)
A、
A註釋行

B、
B註釋行

C、
C註釋行

D、
D註釋行

正確答案: CD 我的答案:CD
8
【多選題】
下列關於繼承優點的敘述正確的是哪幾項?

(15.0分)
A、
可以創建更爲特殊的類型

B、
消除重複代碼

C、
執行效率高

D、
便於維護

正確答案: ABD 我的答案:ABD
9
【填空題】
請說出E類中【代碼1】,【代碼2】的輸出結果。(請注意不同數據類型的輸出表示)

class A {

   double f(double x,double y) {

     return x+y;

   }

}

class B extends A {

   double f(int x,int y) {

     return x*y;

  }

}

public class E {

public static void main(String args[]) {

      B b=new B();

      System.out.println(b.f(3,5));     //【代碼1】

      System.out.println(b.f(3.0,5.0));  //【代碼2】

  }

(12.0分)
正確答案:

第一空:
15.0

第二空:
8.0

我的答案:

第一空:
15.0

第二空:
8.0

10
【判斷題】
Java允許一個子類擁有多個父類。

(5.0分)
正確答案:× 我的答案:×
11
【判斷題】
假設C是B的子類,B是A的子類,cat是C類的一個對象,則cat也是A類和B類的對象。

(5.0分)
正確答案:√ 我的答案:√

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章