關鍵字 定義:被java語言賦予了特殊含義,用作專門用途的字元串。 特點:關鍵字所有字母都小寫。 保留字 現有java版本尚未使用,但以後版本會作為關鍵字使用.byValue,cast,future,inner,outer,var,goto,const 標示符 java對各種 變數 , 方法和類 等 ...
關鍵字
- 定義:被java語言賦予了特殊含義,用作專門用途的字元串。
- 特點:關鍵字所有字母都小寫。
保留字
- 現有java版本尚未使用,但以後版本會作為關鍵字使用.byValue,cast,future,inner,outer,var,goto,const
標示符
- java對各種變數,方法和類等要素命名時使用的字元序列稱為標示符。
- 凡是自己可以起名字的地方都叫標示符
java中名稱命名規範
- 包名:多單片語成時所有字母都小寫:xxxyyyzzz
- 類名、介面名:多單片語成時,所有單詞的首字母大寫:XxxYyyZzz
- 變數名、方法名:多單片語成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz
int myInt = 1;
- 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ
變數
- 數據類型 變數名 = 初始化值;
- 變數的作用域:一對{}之間
基本數據類型
- 整型byte,short,int,long(L/l)
byte 1位元組(8byte), -128~127
short 2位元組,-2^15~2^15-1
int 4位元組,-2^31~2^31-1
long 8位元組,-2^63~2^63-1 - 浮點型float(F),double
float 4位元組
double 8位元組 - 字元型char(只能表示一個字元,可以是英文中文標點,若要表示多個字元,用String)
char c1='a';
String str="abc";
布爾型boolean
char類型還可以表示轉義字元和unicode值
char c1='\n';
char c2='\t';
char c3='\u1234';
基本數據類型轉換
自動類型轉換:當容量小的數據和容量大的數據做運算時,容量小的數據會自動轉換為容量大的數據。
char,byte,short==>int==>long==>float==>double
強制類型轉換:容量大的轉換為容量小的,要使用強制類型轉換。
long l1=12345L;
int i1=(int)l1;
強制類型轉換的問題:導致精度損失。
- [x] String類型的字元串與基本數據類型之間的運算:只能是連接運算 + 。得到的結果仍然是一個字元串。
String str="abc";
int i1=12345;
String str2=str+i1;//abc12345;
原碼、反碼、補碼
- 對於正數,原碼反碼補碼三碼合一。
- 反碼:原碼各個位除符號位外取反。
- 補碼:反碼+1。
- 不管正數還是負數,在底層都是以補碼的形式存儲的。
進位之間的轉換
- 十進位==>二進位:除2取餘數的逆
- 二進位==>八進位:三個數當做一個數。
11101001==0351 - 二進位==>十六進位:四個數當作一個數。
算術運算符
- +(正號),-(負號),+,-,*,/,%(取模),++,--,+(連接符)
- i++:先運算,後自增加1。
- ++i:先自增加1,後運算
int i1=10;
int i2=i1++;
System.out.println(i1);//11
System.out.println(i2);//10
int i3=10;
int i4=++i3;
System.out.println(i3);//11
System.out.println(i4);//11
int i5=10;
int i6=i5--;
System.out.println(i5);//9
System.out.println(i6);//10
int i7=10;
int i8=--i7;
System.out.println(i7);//9
System.out.println(i8);//9
賦值運算符
- +=,-=,*=,/=,%=
short s=3;
s=(short)(s+3);//不建議如此實現
s+=3;//既可以實現運算,又不會更改s的數據類型。
- =為賦值符號。==為等號,判斷左右是否相等。
邏輯運算符
- &邏輯與:不管左邊是ture還是false右邊都會進行運算。
- &&短路與:當左邊為false時右邊不進行運算。(建議使用&&,)
- |邏輯或:左端為true時,右端繼續做運算。
- ||短路或:左端為true時,右端不再做運算。(建議使用||)
- !邏輯非
- ^邏輯異或:左右兩邊取值不一樣的時候才為1。
深入理解邏輯與和短路與的區別
boolean c=false;
int c1=10;
if(c&(c1++) >0){
System.out.println("今天是個好天氣");
}else{
System.out.println("難得沒有霧霾");//難得沒有霧霾
}
System.out.println(c1);//11
int c2=10;
if (c&&(c2++)>0) {
System.out.println("今天是個好天氣");
}else{
System.out.println("難得沒有霧霾");//難得沒有霧霾
}
System.out.println(c2);//10
位運算符
- <<左移,左移幾位,相當於成2的幾次方
- >> 右移,不足的用與最高位相同的數字補齊,0或1。
- >>>:無符號右移,不足的都用0補全。
- &:與運算,6&3=2;用2進位表示,上下相等用為1,否則為0。
- |:或運算,6|3=7。用二進位表示,上下有一個為1,則為1。
- ^:異或運算,6|3=5.用二進位表示,上下兩邊不一樣時用1表示。
~:反碼。~6=-7。用二進位表示,直接各位取反。
交換兩個元素的值
int m=5;
int n=10;
方法一:提供一個臨時變數
int temp;
temp=m;
m=n;
n=temp;
方法二:當m和n較大時,有可能出現精度損失
m=m+n;
n=m-n;
m=m-n;
方法三:優點:沒有上面兩種方法的缺點。 缺點:難,想不到。
m = m ^ n;
n = m ^ n;//(m^n)^n=m
m = m ^ n;//(m^n)^m
練習:以手動的方式,從控制台輸出60的2進位8進位16進位
int i=60;
//將十進位的數轉換為二進位
String binary=Integer.toBinaryString(i);
System.out.println(binary);//111100
//將十進位的數轉換為八進位
String octal=Integer.toOctalString(i);
System.out.println(octal);//74
//將十進位的數轉換為十六
String hex=Integer.toHexString(i);
System.out.println(hex);//3c
三元運算符
- 三元運算符:(條件表達式)?表達式1:表達式2;
- 要求:表達式1與表達式2必須是同種數據類型。
三元運算符可以轉換為if-else,反之不成立。因為三元運算符必須有一個運算結果,而if-else不一定需要有運算結果。
```
int i=10,j=20;
int max=(i>j)?i:j;
System.out.println(max);//20String str=(i>j)?"i大":"j大"; System.out.println(str);//j大
int i1=10,j1=10;
String str1=(i1>j1)?"i1大":(i1==j1)?"相等":"j1大";
System.out.println(str1);//相等
//用三元運算符輸出三個數中的最大值
int a=5,b=100,c=20;
int max1=(a>b)?a:(b>c)?b:c;
System.out.println(max1);//100
```