01_Java語言基礎

只整理易出錯或小重點,並非教學

Huang Po-Hsuan

105.07.12

無意義保留字

1. goto

2. const:以 final 作為替代 (之後介紹)

輸出

public class PrintTest {
    public static void main(String[] args){
        System.out.println(3+3+"3"+3);
        System.out.println(3+"3"+3+3);
        //從左方開始加,遇到字串就換轉成字串
    }
}
run:
633
3333
public class NameTest {
    public static void main(String[] args){
        //命名若為符號開頭,僅限 _ 和 $
        int _t = 0;
        int $t = 0;
        int t = 2_000_00_0;//可用 _ 作為數字的間隔,不影響其值
        System.out.println(_t+" "+$t+" "+t);
    }
}

命名符號開頭僅限 _ 和 $

run:
0 0 2000000

基本資料型別 float 宣告

public class FloatTest {
    public static void main(String[] args) {
//        float f = 3.14;//Error!!!!
        float f = 3.14F;//postfix : D、F、L
        System.out.println(f);
    }
    
}
run:
3.14

基本資料型別 short 相加

public class ShortTest {
    public static void main(String[] args){
        short s1 = 1,s2 = 2;
//        short s3 = s1 + s2;//Error
        short s3 = (short)(s1 + s2);//強制轉型
        System.out.println(s3);
    }
}

整數家族都應注意此問題

run:
3

算術運算優先權

double > float > long > int

ex:

1.0 + 1 全變成 double 作運算

1L + 1 全變成 long 作運算

注意 double 和 int 分別是浮點數和整數的預設型別

字串比較

public class StringCompare {
    public static void main(String[] args){
        char c1 = 'A';
        char c2 = 'A';
        System.out.println(c1 == c2);
        
        char[] c3 = new char[]{'A','A'};
//        System.out.println(c3[1] == c3[2]);//Error
        System.out.println(c1 == c3[1]);
        
        String s1 = "java";
        String s2 = "java";
        System.out.println(s1 == s2);
        
        String s3 = new String("java");
        String s4 = new String("java");
        System.out.println(s3 == s4);
        System.out.println(s3.equals(s4));
        
    }
}

因為位址不同

要比較內容使用 .equals()

run:
true
true
true
false
true

陣列和字串的 length

public class Length {
    public static void main(String[] args){
        /*陣列*/
        int[] i = new int[10];
        int len1 = i.length;//屬性
        System.out.println(len1);
        
        /*字串*/
        String s = "Java";
        int len2 = s.length();//方法
        System.out.println(len2);
    }
}
run:
10
4

邏輯判斷

短路 (&&、||) 代表不一定會執行全部的敘述

非短路 (&、|) 則不管如何兩端都執行

 

ex : || 若左方為 true  則不會執行右方敘述就回傳 true

    && 若左方為 false 則不會執行右方敘述就回傳 false

public class AndOr {
    public static void main(String[] args){
        int a = 1;
        int b = 2;
        System.out.println("a > b : "+(a > b));
        System.out.println("a < b : "+(a < b));
        System.out.println("a > 0 : "+(a > 0));
        System.out.println("b > 0 : "+(b > 0));
        
        System.out.println("(a > b)|(a > 0)  : "+((a > b)|(a > 0)));
        System.out.println("(a > b)||(a > 0) : "+((a > b)||(a > 0)));//短路
        
        System.out.println("(a > b)&(a > 0)  : "+((a > b)&(a > 0)));
        System.out.println("(a > b)&&(a > 0) : "+((a > b)&&(a > 0)));//短路
    }
}
run:
a > b : false
a < b : true
a > 0 : true
b > 0 : true
(a > b)|(a > 0)  : true
(a > b)||(a > 0) : true
(a > b)&(a > 0)  : false
(a > b)&&(a > 0) : false

看起來都一樣 OuO

啊不就都用短路就好,有差嗎?

 

 

如果判斷語句裡有算術運算時

就可能會用到非短路形式 OuO

public class ShortCircuitTest {
    public static void main(String[] args){
        int a1 = 1, b1 = 2;
        System.out.println("(a1++ > b1++)&(a1++ > 0)  : "+((a1++ > b1++)&(a1++ > 0)));
        System.out.println("a1 = "+a1+", b1 = "+b1+'\n');
        
        int a2 = 1, b2 = 2;
        System.out.println("(a2++ > b2++)&&(a2++ > 0) : "+((a2++ > b2++)&&(a2++ > 0)));//短路
        System.out.println("a2 = "+a2+", b2 = "+b2);
        //因為(a1++ > b1++)為 false,所以不執行(a2++ > 0)的判斷
    }
}
run:
(a1++ > b1++)&(a1++ > 0)  : false
a1 = 3, b1 = 3

(a2++ > b2++)&&(a2++ > 0) : false
a2 = 2, b2 = 3

外覆類別介紹

基本型別  ==> 外覆類別

byte          ==> Byte

short         ==> Short

int             ==> Integer

long          ==> Long

float          ==> Float

double      ==> Double

char          ==> Character

boolean    ==> Boolean

在文字轉成數字時會用到外覆類別

public class Convert {
    public static void main(String[] args){
        /*文字轉數字*/
        String s1 = "34";
        int i1 = Integer.parseInt(s1);
        System.out.println(i1);
        
        /*數字轉文字*/
        int i2 = 56;
//        String s2 = i2+"";//可用但不建議
        String s2 = String.valueOf(i2);
        System.out.println(s2);
    }
}
run:
34
56

01_Java語言基礎

By aben20807

01_Java語言基礎

105.07.12

  • 675