java學習day03

10.類型轉換

自動提升,手動下降

10.1自動類型轉換

自動類型轉換
1.兩種類型要兼容 數值與數值類型兼容 char類型也可以存儲數值

2.目標類型(等號左邊)取值範圍大於源類型(等號右邊)

提升規則:byte、short、char—–>int ——>long——>float——->double

byte、short、char之間運算提升為int

public class Test1{
    public static void main(String [] args ){
        //自動類型轉換
        //1.目標類型(等號左邊)取值範圍大於源類型(等號右邊)
        
        byte b1 = 20;
        short s1  = b1;
        System.out,println(s1);
        
        short s2 = 2356;
        int i1 = s2;
        System.out.println(i1);
        
        int i2 = 12345;
        long l1 = i2;
        System.out.println(l1);
        
        long l2 = 123456L;
        float f1 = l2;
        System.out.println(f1);
        
        float f2 = 123.0F;
        double d1 = f2;
        System.out.println(d1);
        
    }
}
public class Test2{
    public static void main(String [] args){
        //自動類型轉換中 byte、short、char之間運算,自動提升為int型
        byte b2 = 23;
        short s2 = 56;
        int i3 = b2 + s2;
        System.out.prinitln(i3);
        
        char ch1 = '天';
        short s3 = 12;
        int i4 = ch1 + s3;
        System.out.println(i4);
    }
}

10.2強制類型轉換

強制類型轉換
1.兩種類型要兼容
2.目標類型(等號左邊)取值範圍小於源類型(等號右邊)

整數長度足夠,數據完整。

整數長度不夠,數據截斷。(符號位變化,可能變為負數)

public class Test1{
	public static void main(String [] args){
		System.out.println("----------------強制類型轉換------------------");
		//強制類型轉換
		//1.兩種類型要兼容
		//2.目標類型(等號左邊)取值範圍小於源類型取值範圍(等號右邊)
		System.out.println("================範圍內強制轉換==================");
		
        //範圍內強制轉換不損失
		short s11 = 120;
		byte b11 = (byte)s11;
		System.out.println(b11);
		
		
		int i11 = 5689;
		short s22 = (short)i11;
		System.out.println(s22);
		
		
		long l11 = 567845;
		int i22 = (int)l11;
		System.out.println(i22);
		
		
		float f11 = 3.14F;
		long l22 = (long)f11;
		System.out.println(l22);
		
		
		double d11 = 20.5;
		float f22 = (float)d11;
		System.out.println(f22);
			
		int a = 23;
		byte b = (byte)a;
		System.out.println(b);
		
		System.out.println("=================超範圍強制轉換=================");
		//超範圍強制轉換補碼損失
		short ss1 = 257;
		byte bb1 = (byte)ss1;
		System.out.println(bb1);
		
		
		short ss3 = 128;
		byte bb2 = (byte)ss3;
		System.out.println(bb2);
		
		
		short ss4 = 129;
		byte bb3 = (byte)ss4;
		System.out.println(bb3);
		
		
		char ch1 = 'A';
		System.out.println(ch1 + 1); // 66 B  
		System.out.println(ch1 -1);
	}
}

11.運算符

11.1算術運算符

++或者– 如果單獨作為一條語句書寫 在前在後沒有區別
++或者– 如果不是單獨一條語句
如果++或者–在前 先執行++或者– 再執行其他的
如果++或者–在後 先執行其他的 再執行++或者–

image

image

public class Test1{
    public static void main(String [] args){
        System.out.println("-----------算術運算符 -----------------");
		System.out.println("----------- + - * / %---------------");
		//兩個操作數 算術運算符+ - * / %
		
		int a = 10;
		int b = 20;
		int c = 30;
		
		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b); // 不能保存小數
		System.out.println(a % c);
		
		System.out.println("----------- ++(自增) --(自減)---------------");
		//一元算術運算符++(自增) --(自減)
		// ++或者-- 如果單獨作為一條語句書寫 在前在後沒有區別
		int a1 = 10 ;
		a1++;
		System.out.println(a);
		
		int c1 = 10;
		++c1;  
		System.out.println(c1);
		
		int b1 = 15;
		b1--; // b = b - 1;
		System.out.println(b1);
		
		int d1 = 15;
		--d1;
		System.out.println(d1);
		
		// ++或者-- 如果不是單獨一條語句
        // 如果++或者--在前 先執行++或者--  再執行其他的
		// 如果++或者--在後 先執行其他的 再執行++或者--
		int e = 10;
		int f = e++;
		
		System.out.println(f);
		System.out.println(e);
		
		int k = 10;
		int m = ++k;
		
		System.out.println(m);
		System.out.println(k);
		
		
		
		int h = 15;
		int j = h--;
		
		System.out.println(j); 
		System.out.println(h);
    }
}

11.2賦值運算符

image

public class Test1{
    public static void main(String [] args){
        System.out.println("================賦值運算符================");
		// 賦值運算符
		int a = 10; // 將等號右邊賦值給等號左邊  
		
		a += 10; // a = a + 10;
		System.out.println(a);
		
		a -= 5; // a = a - 5;
		System.out.println(a);
		
		
		a *= 6; // a = a * 6;
		System.out.println(a);
		
		
		a /= 3; // a = a / 3;
		System.out.println(a);
		
		
		a %= 2; // a = a % 2;
		System.out.println(a);

		System.out.println("---------- a +=10; 與 a = a + 10;的區別----------------");
		
		short s1 = 10;
		s1 += 10;			//類型不會提升
		int s2 = s1 + 10;	//自動類型提升
		System.out.println("short型:\t" + s1);
		System.out.println("int型:\t" + s2);
	
		byte b1 = 10;		
		b1 += 10;			//類型不會提升
		int i2 = b1 + 20;	//自動類型提升
		System.out.println("byte型:\t" + b1);
		System.out.println("int型:\t" + i2);
    } 
}

11.3關係運算符

關係運算符 最終結果都為布爾類型

image

public class RelationOpreator{
    public static void main(String [] args){
        System.out.println("================關係運算符================");
		//關係運算符 最終結果都為boolean類型
		int a = 40;
		int b = 50;
		System.out.println(a > b);
		System.out.println(a < b);
		System.out.println(a >= b);
		System.out.println(a <=b );
		System.out.println(a == b);
		System.out.println(a != b);
    }
}

11.4邏輯運算符

//邏輯運算符

&& 短路與 同真為真(其他為假)第一個假短路

& 邏輯與 同真為真(其他為假)

|| 短路或 同假為假(其他為真)第一個為真短路

| 邏輯或 同假為假(其他為真)

image

image

public class Test1{
	public static void main(String [] args){
		//邏輯運算符
		// && 短路與 要求兩個或多個表達式都成立 則結果為真
		// 短路與 有短路的效果 如果第一個條件不成立 則後續的條件不再執行
		
		// & 邏輯與 要求兩個或多個表達式都成立 則結果為真  沒有短路效果  
		
		
		// || 短路或 要求兩個或者多個表達式有一個成立 則結果為真
		// 短路或 有短路的效果 如果第一個條件已經成立  則後續的條件不再執行
		
		
		// | 邏輯或 要求兩個或者多個表達式有一個成立 則結果為真  沒有短路效果
		
		int a = 15;
		int b = 20;
		int c = 22;
		
		System.out.println("--------短路與---------");
		System.out.println(a < b && b < c);	//true
		System.out.println(a > b && b < c);//false
		
		System.out.println("--------邏輯與---------");
		System.out.println(a < b & b < c);//true
		System.out.println(a > b & b < c);//false
		
		System.out.println("=======================");
		System.out.println("--------短路或---------");
		
		int d = 22;
		int e = 33;
		int f = 44;
		System.out.println(d > e || e < f);	//true
		System.out.println(d > e || e > f);	//false
		
		System.out.println("--------邏輯或---------");
		System.out.println(d > e | e < f);	//true
		System.out.println(d > e | e > f);	//false
		
		int x = 6;
		int y = 7;
		int z = 7;
		System.out.println((y-- == x) && (--y != x));//false
		System.out.println(y);	//6
		
		System.out.println((z-- == x) & (--z != x));//false
		System.out.println(z);	//4
		
		int j = 10;
		int k = 11;
		int l = 10;
		System.out.println((++j == k) || (++j == k));//true
		System.out.println(j);	//11
		
		System.out.println((++l == k) | (++l == k));//true
		System.out.println(l);	//12
	} 
}
public class Test2{
	public static void main(String [] args){
        // ! 非
		boolean bl1 = !true;
		boolean bl2 = !false;
		
		System.out.println(bl1);
		System.out.println(bl2);
		
		System.out.println(!true);
		System.out.println(!false);
        
       // 三目(三元)運算符   布爾表達式 ?  結果1 : 結果2 
		
		System.out.println(20 == 20 ? "條件成立" : "條件不成立");
		
		int age = 19;
		System.out.println(age >= 18 ? "成年了" : "未成年");
		
		
		int a = 20;
		int b = a >= 20 ? 55 : 66;
		System.out.println(b);
	}
}

11.5

image

public class Test1{
	public static void main(String [] args){
		// 位運算符
		// 左移:在有效的範圍以內,左移幾位表示乘以2 的幾次方
		
		System.out.println(1 << 1);
		System.out.println(1 << 2);
		System.out.println(1 << 3);
		System.out.println(1 << 4);
		System.out.println(1 << 5);
		
		
		System.out.println(1 << 32);
		
		System.out.println("------------------------------------------");
		
		
		// 右移:在有效的範圍內 右移幾位 表示除以2的幾次方   
		
		System.out.println(8 >> 2);
		System.out.println(8 >> 10);
		
		System.out.println(-1 >> 100);
		System.out.println(-20 >> 2); // -5
		
		// >>> 無符號右移
		
		System.out.println(-20 >>> 2);
		System.out.println(20 >>> 3);
		
		
		
		// & 與  二進位相同位 都為1 結果為1  其他都為0
		
		System.out.println(10 & 30);
		
		
		// | 或 二進位相同位 有一個為1 或者兩個都為1  結果為1  其他為0
		System.out.println(10 | 30);
		
		
		// ^ 異或 二進位相同位 相同為0  不同為1 
		System.out.println(10 ^ 30);
		
		
		// ~ 取反  每一位 0改為1  1改為0
		System.out.println(~30);
		
		// 整數的四種表示形式
		
		// 二進位 0B binary  
		int i1 = 0B11;
		System.out.println(i1);
		int i2 = 20;
		
		// 八進位 以0開頭
		int i3 = 012;
		System.out.println(i3);
		
		
		// 十六進位 0X開頭
		int i4 = 0XA3DF;
		System.out.println(i4);
		
	}
}

12.變數的命名規範

字下美人數駱駝

字:字母

下:下劃線

美:美元符號$

人:人民幣符號¥

數:數字

駱駝:駝峰命名 studentNameAndAge

可以以字母、下劃線、美元符號、人民幣符號開頭,可以包含數字,不能以數字開頭,見名知義,有意義