public class Outside {
static String out_a = "Outside class string 1";
String out_b = "Outside class string 2";
public static void main(String[] args) {
Inner1 a = new Outside().new Inner1();
Outside.Inner1 b = new Outside().new Inner1();
Inner1 c = new Inner1(); //錯誤,因Inner1 是動態故需先建立他所在的class Outside 之實體
Inner2 d = new Outside().new Inner2(); // error
Outside.Inner2 e = new Outside().new Inner2(); //錯誤,此語法只適用在動態內部類別
Inner2 f = new Inner2(); //,因Inner2 是靜態故不需先建立他所在的class Outside 之實體
Inner1 g =this.new Inner1(); // 錯誤, this 或super 指令不能出現在靜態範圍裡
System.out.println(Outside.Inner2.inner2_a);
}
Outside( ) {
Inner1 a = new Inner1( );
Inner1 b = this.new Inner1( ); // this.後不能接new 指令
Inner2 c = new Inner2( );
Inner2 d = new Outside.Inner2();
Inner2 e = this.new Inner2( ); // this.後不能接new 指令
}
- Nov 15 Sat 2014 15:50
內部類別
- Nov 15 Sat 2014 09:50
Java原廠教材
P.94
Method signature (Method 特徵)包含:
method名稱
參數數量
參數資料型態
參數前後順序
P.95
一般在收參數時,會寫成這樣:
public float average(int x1, intx2){}
但如果一次要收多個參數,可以寫成:
P.111
子類別可覆寫父類別,前提是:
- 靜動態宣告, method名稱, 參數數量、參數型態、參數順序需與父類別相同 //Extend父類別之後,完全照抄父類別METHOD,那一定可以覆寫
- 存取權限與能與父類別相同或更大 //或是最前面的權限形容詞private, 則子類別用public可覆寫
- 回傳值型態如果是基本型態則須與父類別相同, 如果回傳值是物件型態, 則可與父類別回傳值相同或更小 //父類別是Object, 子類別是String可覆寫
- 子類別method拋出的應檢核例外需與父類別應檢核例外相同或更小, 非檢核例外則可與父類別相同或不同
Overload(多載)考題:
(8) Given:
1. public class ConstOver {
2. public ConstOver(int x, int y, int z){
- Nov 10 Mon 2014 19:15
[Java Web] 環境設定 WEB原理簡介
Eric老師推薦安裝MyEclipse+TomCat7+HTTP Watch來開發Java Web Project
網頁Server運作原理:
本機首先查詢本機host檔案有無查詢的網址,如果有便直接帶到網站。如果沒有,會對網路DNS Server發出Header訊息(檔頭),DNS向該網站確認是否存在,確認之後帶到該網站。
網站會在向後端資料庫詢問是否有index.jsp OR index.html等網頁(記載在web.xml內)
JSP網頁主要就是在寫上圖Yahoo網站到SQL的這一部分。
- Nov 08 Sat 2014 17:37
物件導向程式設計(OOP)特色
1. Encapsulation 封裝 //存取權限
2. Inheritance 繼承 //繼承別人的內容
3. Polymorphism 多型 //一個物件多種型態,目的是要抽象化,修改彈性更大
= P.I.E
教材P121,122
1. Which is true?
Given:
5. class Building { }
6. public class Barn extends Building {
7. public static void main(String[] args) {
8. Building build1 = new Building();
9. Barn barn1 = new Barn();
10. Barn barn2 = (Barn) build1;
11. Object obj1 = (Object) build1;
12. String str1 = (String) build1;
13. Building build2 = (Building) barn1;
14. }
15.}
- Nov 08 Sat 2014 11:54
字串method範例
String a = "Java SCJP";
System.out.println(a.length()); // 取得字串長度, 印出 9
byte[] b = {74, 97, 118, 97, 20, 83, 67, 74, 80};
String c = new String(b);
System.out.println(c); // 印出 Java SCJP
String d = new String(b, 0, 4);
System.out.println(d); // 印出 Java
char[] e = {'J', 'a', 'v', 'a', ' ', 'S', 'C', 'J', 'P'};
String f = new String(e);
System.out.println(f); // 印出 Java SCJP
String g = new String(e, 5, 4);
System.out.println(g); // 印出 SCJP
String h = new String(a);
System.out.println(h); // 印出 Java SCJP
StringBuffer i = new StringBuffer("Java"); // 字串內容可以直接修改, 速度較String快 buffer緩衝區
System.out.println(i); // 印出 Java
StringBuilder sb = new StringBuilder("Java"); // 字串內容可以直接修改, 速度較String及StringBuffer快
System.out.println(sb); // 印出 Java
String j = new String(i);
System.out.println(j); // 印出 Java
- Nov 08 Sat 2014 10:00
原廠教材及模擬考題
1. What is the value of j at line 16 ?
Click the exhibit button:
1. int i=1, j=0;
2.
3. switch(i){
4. case 2:
5. j+=6;
6.
7. case 4:
8. j+=1;
9.
10. default:
11. j +=2;
12.
13. case 0:
14. j +=4;
15.}
16.
A. 0
- Nov 02 Sun 2014 10:43
用App Inventor寫匯率計算機
MIT開發的App Inventor這個網站,像是Scratch一樣,可以用WYSIWIG加上程式碼拼圖的方式做出一支Android App。
在這之前我已經嘗試照著App Inventor的新手教程作了一支簡單的App:
按下貓咪的圖片之後,會發出"喵~"聲的簡單App練習。
今天要來挑戰匯率計算機,不過嚴格來講這不是計算機,頂多是"換算"機,因為並沒有計算的功能。真正的計算機需要很多監聽的功能,是我的下一個project,或者也可以成為這個匯率計算機的進階。
Project name: FOREX_Calculator
Usage: 不同外幣換算
Method: 輸入台幣、日幣、韓元、美金,其中一種幣別後,可自動換算另外三種幣別金額
Designer 介面
Deisgner介面非常的簡單易懂 - 左邊是不同的App元件可供拖拉到中間的主畫面,包含按鈕、圖片、文字框、標籤等等,另外還有瀏覽器等等。另外還有Sensor等比較高階的感知功能,可以更完全的應用手機的其他硬體設備來輔助App功能或提供資料。
另外,既然這程式是MIT開發的,多國語言版本當然也難不倒他們:
沒錯,我們最愛的繁中在上面的選單裡就可以做切換了。
- Nov 01 Sat 2014 17:37
原廠教材Lesson2(下篇)
--------------------------------------------------------------------------------
break範例
--------------------------------------------------------------------------------
class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = {
{ 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search: // 迴圈名稱可自定, 要符合Java命名規則, 迴圈名稱與迴圈宣告之間不能插入Java指令, 迴圈名稱也可寫在迴圈宣告左邊
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length; j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search; // break指令只能中斷把break指令包圍起來的迴圈
- Nov 01 Sat 2014 13:50
Java基礎(原廠教材)
1. Java程式基本上包含了class(類別), method(方法), variable(變數)等宣告
modifier(修飾字) class(類別) class名稱 { // 此行為類別宣告格式(課本4-9頁, 113頁)
// 註 :
// Java內有多道指令統稱修飾字, public 是其中之一
// public為公開的、公眾的意思, 此為Java關鍵字(課本4-19頁, 123頁), 如本支Java程式須供其他Java程式叫用則須寫上, 否則可省略
// Java關鍵字列表網頁http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
// class為類別的意思, 此為Java關鍵字, 固定一定要寫, class名稱也一定要有. 修飾字則可有可無.
// 一個class內可包含0~N個method(方法)
modifier(修飾字) static(靜態) 回傳值型態 method名稱(參數宣告) { // 此行為method宣告格式(課本4-16頁, 120頁)
/*
修飾字、static、參數宣告可有可無
回傳值型態、method名稱一定要有
一個method內可包含0~N行程式碼
*/
資料型態 變數名稱 = 欲儲存的值; (課本5-8頁, 146頁)
}
modifier(修飾字) static(靜態) 回傳值型態 method名稱(參數宣告) { // 此行為method宣告格式(課本4-16頁, 120頁)
資料型態 變數名稱 = 欲儲存的值; (課本5-8頁, 146頁)
}
modifier(修飾字) static(靜態) 回傳值型態 method名稱(參數宣告) { // 此行為method宣告格式(課本4-16頁, 120頁)
- Nov 01 Sat 2014 11:46
考古題研討+原廠教材Lesson2
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 implements 少一個s
2. What happens when you attempt to compile and run these two files in the same directory ?
//File P1.java
package MyPackage;