整數類型: byte(1字節) short( 2字節) int(默認類型 4字節) long(8字節)
1字節 = 8位 1byte = 8bit
//byte : 取值範圍-128~127
byte b = 127;
//byte b1 = 128;//溢出
//short
short s = 1234;
//int
int i = 1234567;
//long:需要在末尾加上小寫L或者小寫l
long l = 1238737443874L; //0-9 十進制,不能以0開頭
long l1 = 0XA223B3L; //0-9 A-F(代表10-15) 十六進制 ,以0x或0X開頭
long l2 = 01734L; //0-7 八進制,以0開頭
浮點型: float(4字節) double(默認類型 8字節)
//float 單精度
float f = 1234.56f;//末尾加上大寫L或者小寫l修飾
//double 雙精度(默認類型)
double d = 12345.56;
字符類型:char(2字節)
單引號”括起來,字符串String用雙引號”“括起來
char c = 'a';
char c1 = '3';
char c2 = '中';
char c3 = 97; //a ascii碼 a-z:97-122 A-Z:65-90
char c4 ='\n'; //換行 轉義字符
char c5 ='\u1330' ; //j unicode編碼
System.out.println(c);
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println("'happy \\ \n \"birthday\" '");
布爾類型:true false
boolean b1 = true;
boolean b2 = false;
數據類型隱式轉換(自動轉換):
小 -> 大
特殊:long -> float
注意:byte short char類型之間不互相轉換,計算時,默認轉換爲int類型做計算
//int -> float
int num = 1234;
float fnum = num;//int類型隱式轉換爲float
System.out.println("num:" + num); //1234
System.out.println("fnum:" + fnum);//1234.0
//long->float
long l = 1234l;
float f = l;
//byte類型計算
byte b = 123;
byte c = 12;
int sum = b + c; //byte默認轉換爲int類型之後做計算
byte sum2 = (byte)(b+c);//強制轉換
數據類型強制轉換(手動轉換):
轉換風險:1. 數字溢出 2.失去精度
//long -> short
long l1 = 1234567890123456L; //long
short s = (short)l1; //short
System.out.println("long:" + l1);//1234567890123456L
System.out.println("short:" + s + " " + Short.MAX_VALUE + " " + Short.MIN_VALUE );//-17728
// + 算數運算 與 字符串拼接
int num = 1;
int num2 = 2;
System.out.println(num + num2);//3
System.out.println(num + num2 + "AB");//3AB
System.out.println("AB" + num+ num2);//AB12
// / 除法運算: 若是兩個整數相除,只保留整數部分;
int num3 = 10;
int num4 = 3;
int result = num3/num4;
System.out.println(result);// 3
float f = 10;
float f2 = 3;
float result2 = f/f2;
System.out.println(result2);// 3.3333333
//% 取餘(取模):被模數爲正數結果都爲正,被模數爲負數結果都爲負
System.out.println(5%2); //1
System.out.println(5%-2); //1
System.out.println(-5%2); //-1
System.out.println(-5%-2); //-1
// ++ 自增 : ++num ,先加1,再計算 num++,先計算,再加1
int num5 = 4;
System.out.println(num5++);//4
System.out.println(num5); //5
// -- 自減 : --num ,先減1,再計算 num--,先計算,再減1
int num6 = 4;
System.out.println(--num6);//3
System.out.println(num6); //3
/**
* 賦值運算符
*/
int x = 10;
int y = 20;
x += y; //等同於 x = x + y
System.out.println(x); //30
x -=y; //等同於 x = x - y
System.out.println(x); //10
x *= y; //等同於 x = x * y
System.out.println(x); //200
x /= y; //等同於 x = x / y
System.out.println(x); //10
/**
* 關係運算符: "=="不要寫成"="
* "!=" 不要寫成"<>"
*/
// == 判斷是否相等,返回boolean值
int num7 = 10;
int num8 = 20;
System.out.println(num7 = num8); //20
System.out.println(num7 == num8);//true
// != 判斷是否不等,返回boolean值
System.out.println( 5 != 3);//true
//System.out.println( 5 <> 3);//語法錯誤 SQL語法中的比較運算符
//邏輯與 && :所有表達式均滿足條件,返回true,否則返回false
System.out.println(true && true);//true
System.out.println(false && true);//false 短路運算
System.out.println(true && false);//false
System.out.println(false && false);//false 短路運算
System.out.println(true && true && false && true);//false 短路運算
//短路運算
int num9 = 8;
boolean result3 = ((num9 == 10) && (++num9 > 8));
System.out.println(result3);//false
System.out.println(num9); //8
//邏輯或 || :任意表達式返回true,結果即爲true,如果所有表達式返回false,結果才爲false
System.out.println(true || true);//true
System.out.println(false || true);//true
System.out.println(true || false);//true
System.out.println(false || false);//false
//邏輯非 !:對現有的結果取反
System.out.println(!true);//false
System.out.println(!false);//true
/**
* 位運算符:只對byte、short、char、int、long有效
*/
//按位與 & :所有表達式均滿足條件,返回true,否則返回false
System.out.println(true & true); //true
System.out.println(false & true); //false 非短路運算
System.out.println(true & false); //false 非短路運算
System.out.println(false & false);//false 非短路運算
//1代表true 0 代表false
System.out.println(1 & 1);//true 1
System.out.println(0 & 1);//false 0 非短路運算
System.out.println(1 & 0);//false 0 非短路運算
System.out.println(0 & 0);//false 0 非短路運算
//非短路運算
int num10 = 8;
boolean result4 = ((num10 == 10) & (++num10 > 8));// false true
System.out.println(result4); //false
System.out.println(num10); //9
//按位或 | :只要任意一個表達式滿足條件,返回true,如果所有表達式均不滿足條件,返回false
System.out.println(true | true); //true
System.out.println(false | true); //true 非短路運算
System.out.println(true | false); //true 非短路運算
System.out.println(false | false);//false 非短路運算
//1代表true 0 代表false
System.out.println(1 | 1);// 1
System.out.println(0 | 1);// 1 非短路運算
System.out.println(1 | 0);// 1 非短路運算
System.out.println(0 | 0);// 0 非短路運算
//異或 ^ :兩者不一致返回true,否則返回false
System.out.println( true ^ true); //false
System.out.println( true ^ false); //true
System.out.println( false ^ true); //true
System.out.println( false ^ false); //false
//1代表true 0 代表false
System.out.println( 1 ^ 1); //false 0
System.out.println( 1 ^ 0); //true 1
System.out.println( 0 ^ 1); //true 1
System.out.println( 0 ^ 0); //false 0
/*
* 位運算
*/
System.out.println( 4 & 3); //0
System.out.println( 4 | 3); //7
System.out.println( 4 ^ 3); //7
//4 0100
//3 0011
//& 0000 | 0111 ^ 0111
注意:
邏輯運算符 與 位運算符的區別:
相同點:都可以做邏輯運算
不同點:
① 邏輯運算符用兩個字符表示,例如 && 、||
位運算符用一個字符表示,例如&、|
② 邏輯運算符做短路運算,效率較高
位運算符做非短路運算
③ 位運算符可以做按位運算,邏輯運算不可
// << 左移 (以二進制值進行移位操作) : 左邊移除部分直接丟棄,右邊空出位置補0
int num11 = 3;
System.out.println(Integer.toBinaryString(num11));//0011
System.out.println(num11 << 1); //6
//3 00000011
//6 00000110
// >> 右移 :右邊移除部分直接丟棄,左邊空出位置,最高位如果爲0(0代表正數),則補0,若果爲1(1代表負數),則補1
int num12 = 6;
System.out.println(Integer.toBinaryString(num12));//0110
System.out.println(num12 >> 2);//1
//6 00000110
//1 00000001
// >>> 無符號右移
int num14 = -8;
System.out.println(Integer.toBinaryString(num14));//11111111111111111111111111111000
System.out.println(num13 >>> 3);//536870911
/**
* 三元運算符(包含三個表達式):
* 表達式1 ?表達式2 :表達式3
*/
int num15 = 3;
System.out.println((num15 >= 10) ? "是" : "否");//否
//二元運算符(包含二個表達式)
int z = x+y;
//一元運算符(包含一個表達式)
++num15;