1. Which one is keyword of Java ? (Choose five)

keyword 關鍵字


A. Class
B. public
C. boolean
D. String
E. int
F. implement
G. volatile
H. assert

答案:

B,C,E,G,H

A,D 大寫是Class名,不是關鍵字

F implement少一個s
 

 

2. What happens when you attempt to compile and run these two files in the same directory ?

//File P1.java
package MyPackage;
class P1{
   void afancymethod(){
      System.out.println("How fancy");
   }
}

//File P2.java
public class P2 extends P1{
   public static void main(String argv[]){    //中括弧[] 可以放三個地方 Sting[] []argv[],三選一都OK。argv是變數名稱,不一定要叫args。
      P2 p2 = new P2();
      p2.afancymethod();  
 }
}


happens 發生
attempt 試圖, 企圖
directory 目錄, 資料夾
both 兩者皆..
neither 既不是A也不是B能...


A. Both compile and P2 outputs "How fancy"
B. Neither will compile
C. Both compile but P2 has an error at run time
D. P1 compiles but P2 has a compile error


 答案: D

public class P2 extends P1{  //找不到 P2會在"預設套件"內的package裡找P1.java, 但P1在"MyPackage", 因此編譯會失敗"找不到預設套件下的P1 Class"

要成功,必須在P2的程式碼import MyPackage;

或將P

 

 3. What is the result ?

// comment 1
import java.util.*;

package test;

public class Test {
  public static void main(String[] args) {
     int a = 7, b=2;
     System.out.println(a/b*10);
  }
}


A. 35
B. 30
C. 3.5
D. compile error


 答案: D

import java.util.*;

package test;

//package name必須在最開始

如果編譯成功答案是 B

7/2=3.5

但int會捨棄小數點,所以只會留3,3*10=30

 

4. Which one is invalid Java identifier ? (Choose five)

identifier 識別字

A. $123      //合法
B. boolean  //關鍵字
C. _java     //_開頭OK
D. James Bound   //不能有空格
E. cook_book
F. 4_you     //不可數字開頭
G. A_reily$ 
H. Ivor+Horton  //不可+號
I. Scjp.Class  //不可小數點

答案:

B,D,F,H,I
 

5. Which one can result an error ? (Choose five)


A. int a = -1;           //合法 int範圍=-2e32~2e31
B. byte b = 255;      //不合法 byte範圍=-127~127
C. String c = 100;    //不合法 100是int, 無法轉成String 除非加"100"
D. short d = 12.33;  //不合法 .33是double型態,大於short
E. int e = 088;          //不合法 0是8位元指令 88應該進位了
F. float f = -1;          //合法 -1是int, float比int大
G. Double g = 2343.9;   //不合法 Double 要改成 小寫 double   UPDATE: 合法 會視為自動裝箱 因為2343.9是double 和等號左邊的Double class是相對應的包覆類別*

。如果改成2343.9d 還是正確,都是double。
H. long h = 0x98ff;      //合法 0x98ff 是 int (不管是8或16進位)
I. float  i = 123456789L;    //合法 123456789L long<float  自動升級成: 123456789.0F 後再存成i

My ans:

B,C,E,H,I


 答案:

B,C,D,E,G

 

6. Which three are valid declarations of a float? (Choose Three)

valid 合法
declarations 宣告


A. float foo = -1;        //合法
B. float foo = 1.0;    //不合法 1.0 沒加F 預設就變double  double>float
C. float foo = 42e1; //不合法 有e就是double 資料大,變數空間小
D. float foo = 2.02f; //合法 變數f 空間f
E. float foo = 3.03d;  //不合法 3.03d是double 資料大,變數空間小
F. float foo = 0x0123;//合法 0x0123是int


My ans:

A,B,C

答案:

A,D,F

 

 

7. What is the result ?

(3) Click the exhibit button:
1. public class Test {
2. private static int j = 0;
3.       
4.  private static boolean methodB(int k){
5.   j += k;                     //運算前先檢查int j是否為靜態
6.   return true;
7.  }
8.
9.  public static void methodA(int i){
10.   boolean b;
11.   b = i < 10 | methodB(4);       //帶到methodB之前先檢查methodB是否為靜態  同為靜態不用new實體, 所以i<10是true 而且 methodB(4)的結果也是true(看第5行)所以                                                 boolean b = true
12.   b = i < 10 || methodB(8);     //i<10是true ||短路或運算代表 不用在算methodB了
13.  }
14.
15.  public static void main(String args[]){
16.   methodA (0);                              //帶到methodA之前先檢查methodA是否為靜態
17.   System.out.println(j);
18.  }
19. }


A. The program prints "0"
B. The program prints "4"
C. The program prints "8"
D. The program prints "12"
E. The code does not compile

 

答案:

B, j=4

 

8. What is the decimal value of j at line 5 ?

Given:
1. public class Test {
2. public static void main(String args[]){
3.  int  i = 0xFFFFFFF1;
4.  int  j = ~i;
5. 
6. }
7. }

decimal  十進位的
value 值


A. 0
B. 1
C. 14
D. -15
E. An error at line 3 causes compilation to fail.
F. An error at line 4 causes compilation to fail.

答案: C

FFFFFFF1 是16進位 要先轉成2進位

16進位是0~9A~F

F=15, 15的2進位用15/2取餘數= 1111
所以FFFFFFF1=11111111111111111111111111110001

~i = 反向 = 1110 (2進位)

1110的10進位是1*2e3+1*2e2+1*2e1+1*2e0 = 8+4+2+0 = 14

 

靜態method呼叫靜態Method

靜叫同class動         //要先new實體

靜叫不同class動         //要先new實體

動叫同class動

動叫不同class動         //要先new實體

動叫靜
 

 

 

 

Lesson2 p.40

int的範圍

float的範圍

int a = 5e3; //編譯失敗 因為有e會自動被視為double 5e3=5*10的3次方 = 5000

 

P.s.

short range: 32767 ~ -32768
int range: 2147483647 ~ -2147483648
long range: 9223372036854775807 ~ -9223372036854775808
byte range: 127 ~ -128
float range: 3.402823e+38 ~ 1.401298e-45
double range: 1.797693e+308 ~ 4.900000e-324

 

----------------------------------------------------
基本型態 - 包覆類別 (Wrapper Class)
----------------------------------------------------
boolean - Boolean
byte - Byte
char - Character
short -Short
int - Integer
long - Long
float - Float
double - Double

 

----------------------------------------------------
Java 5.0版以前, 手動裝箱及手動拆箱寫法:
----------------------------------------------------
int a = 420;
Integer b = new Integer(a); // boxing 手動裝箱
int c = b.intValue(); // unboxing 手動拆箱

 

----------------------------------------------------
Java 5.0版及以後的新版, 自動裝箱及自動拆箱寫法:
----------------------------------------------------
int a = 420;
Integer b = a; // auto boxing 自動裝箱
int c = b; // auto unboxing 自動拆箱

Lesson2

p.45

數字可任意加_底線以增加程式碼可閱讀性 e.g. long creditcardnumber = 1234_5678_9012L

 

int score = 80;
       
        String message;
        if(score>=60)
            message = "及格";
        else
            message = "不及格";
        System.out.println(message);
       
        String message2 = score>=60 ? "及格" : "不及格";   //三元運算式: 如果score大於等於60,則存入"及格"字串至message2
        System.out.println(message2);

P.47

!(判斷式) = boolean反向運算

int a = 60;

int b = a++;  //後加

=> int a = 60,  b= a, a++

 

int b = ++a;

b=61;

 

 P.49

String a = "Java";
String b = "Java";
String c = new String("Java");

System.out.println(a==b); // true, a與b變數內所存之記憶體位址相同, 位址皆指向字串池內系統自動建立之String實體
System.out.println(b==c); // false, b與c變數內所存之記憶體位址不同
System.out.println(b.equals(c)); // true, b與c變數String實體內所存之字串內容相同

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鈴木保齡球 的頭像
    鈴木保齡球

    Java程式學習手札

    鈴木保齡球 發表在 痞客邦 留言(0) 人氣()