2015年7月27日 星期一

JAVA SL-110_07/26

label 標籤
代表的是迴圈的標示記號,可利用 label 指向相對應的迴圈。

1. label_name:迴圈敘述
2. label_name:迴圈敘述

Outerloop:label_name
for(;;){
        Innerloop:label_name
        for(;;){
                break Innerloop;
                ...
                continue Innerloop;
                ...
                break Outerloop;
                ...
                continue Outerloop;
        }
{

################################################################
for 和 ( , )
判斷下列能否執行:

1. for(int i=0, j=0 ; ; )               //可以

2. for(int i=0, int j=0 ; ; )           //錯誤,若多種型態要在外部宣告

3. for(int i=0, long j=0 ; ; )          //錯誤,同 2.

4. int i=0;                             //可以
   long j=0;
   for(i=0, j=0 ; ;)

5. int i=0;                             //錯誤, long 同樣要在外部宣告
   for(i=0, long j=0 ; ;)

6. String s=null;                       //可以
   int i=0;
   for(i=1,s=a ; ;)
################################################################
無窮迴圈:
while(true)             java 不可以用 1,要用 true

for(;;)                 直接不要打。
################################################################
for_each
(for/in)簡化存取集合體物件元素,
例如 Array 或集合,其特性是在執行的過程會自動往下找直到全部擷取完畢。

for(資料型態 變數名稱:母體集合){
        程式敘述
}
################################################################
陣列一經宣告就不能更改 length。

int score={98, 56, 63};
int score1=score;               //這是錯誤的陣列複製方法,應該用 arraycopy 等其>他方式。
################################################################
// 可以使用 for 迴圈做陣列複製
public class test0726_4{
 public static void main(String avgs[]){
        int[] score1 = {88, 81, 76, 68};
        int[] score2 = new int [score1.length];

        for(int i=0; i<score1.length; i++)
                score2[i] = score1[i];

        for(int j:score2)
                System.out.println(j);
 }
}

################################################################
// 也使用 Arrays.copyOf 來達到陣列複製
import java.util.Arrays;
//import java.util.*;

public class test0726_5{
 public static void main(String avgs[]){
        int[] score1 = {88, 81, 76, 68};
        int[] score2 = Arrays.copyOf(score1, score1.length);

        for(int s:score2)
                System.out.printf("%3d", s);

        System.out.println();
        score2[0]=99;

        for(int s:score2)
                System.out.printf("%3d", s);
        // %s:字串, %d:整數, %f:浮點數, %c:字元, %n:換行
        // %3d:印出三位整數,不足自動補空格
 }
}

################################################################
public class MyClass{
        int i = 10;
        static int k = 100;
        void aMethod(String s){
                int j = 20;
                static String s = "a";  //錯誤,在 Method 不可以有 static 變數。
        }       //在方法裡面,不可以再宣告方法。
}
################################################################
// 建立物件實體
1. 建立類別變數
        。用 new 建立類別實體









//物件變數抓取屬性、方法
1. 類別變數.屬性;
2. 類別變數.方法();
################################################################

################################################################
// Constructer 建構子
程式在執行時,第一個執行的函式就是建構子。

//語法:
存取權限 類別名稱(參數列){

}

// *
// 1. 建構子沒有回傳值
// 2. 建構子的名稱必須和類別名稱相同

// 預設建構子
當程式中沒有自行定義的建構子時,編譯時會自動加上預設建構子。

// *
// 1. new 一個實體時會自動執行
// 2. 預設建構子沒有參數列
// 3. 程式中只會有一個預設建構子
################################################################
// 大資料數據,使用 BigDecimal -> java.math.BigDecimal;
import java.math.BigDecimal;

public class test0726_11{
 public static void main(String avgs[]){
        BigDecimal a = new BigDecimal("0.1");
        BigDecimal b = new BigDecimal("0.1");
        BigDecimal c = a;
        System.out.println(a==b);
        System.out.println(a==c);
        System.out.println(a.equals(b));
 }
}

//輸出:
//false         //雖同值,但不同位址,判斷為不同之參考。
//true          //經 = ,兩者變為同一參考位址。
//true          //純粹比對兩者的值,都是 0.1 故 true。

// 補充
字串比對: == 、equals
字元比對:只能用 ==

// 差異:
== 去比對它的參考位址。
= 直接去改變參考。
equals 去比對它的值。
################################################################
// 繼承
是指物件的資源可以延伸和重複使用,
在 Java 利用 extends 這個關鍵字來表達類別的繼承關係,也就是 is-a 的概念。

子類別名稱 + extends + 父類別名稱















################################################################
// this 和 super

// this
是指參考到目前作用中物件的特性、方法、建構子。

//super
是指可以參考到父物件的方法、屬性、建構子。
################################################################
// super 練習

class Father{
        Father(String s){
                System.out.println("A");
                System.out.println(s);
        }
}

class Son extends Father{
        Son(){
                super("C");
                System.out.println("B");
        }
}

public class Extends2{
 public static void main(String avgs[]){
        Son s = new Son();
 }
}
################################################################
// spuer and this 練習

class Father{
        Father(char c){                         //第四步驟,接收到 'A'
                System.out.println(c);          //第五步驟,印出 'A'
        }
}

class Son extends Father{
        Son(){
                this('A');                      //第一步驟,丟出 'A' 到 Son(char c)
                System.out.println("B");        //第六步驟,印出 'B'
        }
        Son(char c){                            //第二步驟,接收 this 傳來的值 'A'
                super(c);                       //第三步驟,回傳值到 Father
        }
}

public class Extends3{
 public static void main(String avgs[]){
        Son s = new Son();                      //第○步驟,建構子 Son(){...}
 }
}
################################################################

沒有留言:

張貼留言