Java碼農進階之路~基本資料型別&運算子&流程控制-分支&三目
基本資料型別
首先先說下位元組:位元組(byte)是計算機資訊科技用於計量儲存容量的一種計量單位
通常情況下一位元組由8個二進位制位表示 0000 0000;一個位元組的取值範圍為-128~127.
大家有興趣的可以瞭解下為什麼是-128~127.
一個Byte由八個位組成,如0000 0000,其中後七位表示數值,最前面的一位是符號位(0為正,1為負).這樣+1就是0 000 0001, -1就是1000 0001.那麼最大的正數就是0111 1111,即2^0+2^1+.......2^6=127;同理,最小的負數為1111 1111,即-127;而之所以說取值範圍是-128~127,是因為0會出現一個+0和一個-0.這時,將-0規定為-128,這樣就與計算機的補碼(程式都是按補碼執行的)完美的結合在一起.
1.整數型
short 短整型 2個位元組
int 整型 4個位元組
long 長整型 8個位元組
2.小數型(浮點型)
float 4個位元組
double 8個位元組(double)
3.字元型
字串型
下面我們來舉個例子
public class Demo { public static void main(String[] args) { //常量 在程式中,不能修改的量就是常量 //宣告一個變數---儲存資料 //資料型別+變數名 = 初值; int a = 10;//定義了一個整型變數,初值為10 a = 15; byte b = 10; short s = 10; long m = 10; /* *double是儲存小數的 *但是,現在賦值的是一個整數 *這時系統會進行 隱式轉換 *把小的型別 幫你 轉換 成大的型別 */ double d = 10; System.out.println(d);//10.0 //強制型別轉換 會丟失資料精度 //宣告一個小數 系統預設 使用的是double型別 int number = (int)3.13; System.out.println(number); //宣告float型別小數,需要使用識別符號f標識 float f = 10.0f; System.out.println(f); /* * 特殊型別 字元型別 * 特點:字元型別可以和整形相互轉換 * 宣告字元型 使用 單引號 */ char ch = 'a'; System.out.println(ch); //強轉完 列印該字元在 AscII表中對應的值 System.out.println((int)ch); char ch1 = 97; System.out.println(ch1); //字串型別 //字串中+號 相當於連線兩個字串(拼接) String str1 = "haha"; String str2 = "wawa"; System.out.println(str1 + str2); int num1 = 10; System.out.println("num1 = " + num1); int num2 = 15; System.out.println(num1 + num2); //數字和字串 使用+連線的時候 //相當於直接做字串的拼接 //和字串相加 一定會得字串 System.out.println(str1 + num1 +num2); } }
運算子
1.算術運算子 + - * / %(區域運算子) ++ --
2.關係運算符 > = < >= <= == !=
使用關係運算符 是用來判斷的,並且判斷結束後會有一個結果 布林值true false
邏輯運算子 (用來判斷 返回一個布林值)
&& 邏輯與 (條件1)&&(條件2) 一假則假
|| 邏輯或 (條件1)||(條件2) 一真則真 ---邏輯運算需注意其短路現象
!邏輯非 非真即假
public class Demo { public static void main(String[] args) { //取模運算(用的最多 是對2取餘) //判斷是不是偶數 int n1 = 10 % 2; System.out.println("n1 = " + n1); // 除法 int n2 = 10 / 3; System.out.println("n2 = " + n2); //ArithmeticException算術異常 // int n22 = 10 / 0; // System.out.println(n22); //自增運算(++) 和 自減運算(--) //++在前,先自增再參與運算 //++在後,先參與運算再自增 int n3 = 10; n3++; System.out.println("n3 = " + n3); int n4 = 10; int n5 = n4 + ++n4;// 10 + 11 System.out.println("n4 = " + n4);//11 System.out.println("n5 = " + n5);//21 //宣告一個布林型別變數 //只有兩個值 true false //宣告狀態 和 判斷時候用 boolean b = true; System.out.println(b); int num1 = 10; int num2 = 10; boolean result1 = num1 == num2; System.out.println(result1); //判斷兩個字串是否相等 String str1 = "wanglong"; String str2 = "pengqian"; str1.equals(str2); boolean reslut2 = str1.equals(str2); System.out.println(reslut2); int num3 = 10; int num4 = 15; int num5 = 12; // 邏輯與的短路現象 // 一假則假 如果條件1已經不成立了 // 那麼系統不會執行後面的語句 boolean reslut3 = (num3 > num4) && (++num3 > num5); System.out.println("num3 = " + num3);//10 boolean reslut4 = (num3 < num4) && (++num3 > num5); System.out.println(reslut3); System.out.println("num3 = " + num3);//11 //邏輯或短路 //一真則真 如果條1為真,那麼後面就不會執行 boolean reslut5 = (num3 < num4) || (num3++ > num5); System.out.println("reslut5 = " + reslut5); System.out.println("num3 = " + num3);//11 } }
分支運算---if switch
if---三種寫法
if(判斷條件){
執行的語句
}
if(判斷條件){
執行語句1(條件成立時)
}else{
執行語句2(條件不成立時)
}
if(條件1){
執行語句1(條件1成立時)
}else if(條件2){
執行語句2(條件2成立時)
}else{
執行語句3
}
switch
switch (key---被匹配的值) {
case value--匹配的值:
執行語句1
break;
case 匹配的值2:
執行語句2
break;
可以有很多個case
default:
如果前面都沒有匹配上
就執行default
break;
}
理論上來說,能使用if的,就一定能使用switch語句
什麼時候使用if,什麼時候使用switch
如果判斷時候 條件是個範圍用if
如果判斷時候 條件是幾個值,使用switch相對簡單一點
三目運算
(判斷條件)?值1 : 值2;
判斷條件成立 返回值1 反之 返回值2
int num1 = 10;
int num2 = 15;
int max = 0;
max = (num1 > num2) ? num1 : num2;//15