2.1關鍵字,2.2標識符,2.3註釋,2.4常量和變量,
2.5運算符,2.6語句,2.7函數,2.8數組。
//2.2標識符。
在程序中自定義的一些名稱
由26個字母,數字,$_二個符號。
規則:
1.數字不能開頭。
2.不能用關鍵字。
java中嚴格區分大小寫。
main雖然不是關鍵字。但也是被jvm識別的。
命名規範:
包名:所有字母都是小寫
類名接口名:多單詞組成時,所有單詞的首字母大寫
變量名和函數名,多單詞組成時,第一個單詞首字母小寫,
其他單詞的首字母大寫。
常量名:所有字母都大寫。
//2.4常量和變量
常量:表示不能改變的數值。
1.整數常量:所有整數。
2.小數常量:所有小數。
3.布爾型常量:只有二個值:true,false.
4.字符常量:將一個數字或字母,數字符號用單引號('')標識。
5.字符串常量:將一個或多個數字或字母用雙引號("")標識。
6.null常量:只有一個數值就是null.
對於整數,java有三種表現形式。
十進制:0-9,滿10進1.
八進制:0-7,滿8進1,用0開頭表示。
十六進制:0-9,A-F,滿16進1,用0x開頭表示。
每個字節由八個開關組成。八個二進制。10100101。
二進制的每三個變成一個,變成八進制。
二進制的每四位變成1位,十六進制。更方便的表示數據。
//十進制和二進制:
十轉二:6的二進制。
原理:對十進制數進行除2運算。6/2=011,反過來寫110。
System.out.println(Integer.toBinaryString(6));
二進制變十進制。
原理:二進制乘2的過程。
110:0*2(0)+1*2(1)+1*2(2)=6;
0 0 1 1 0 1 0 1 =
128 64 32 16 8 4 2 1 =
5 + 4 = 9
101 + 100 = 1001
轉成十六進制。四個二進制就是一個16進制位。
0101-1010:90(先變十進制,再變十六)
5 10(A) = 0x5A
轉成八進制:三個二進制代表一位。
001 011 010 =132。
132
負數二進制表現形式:
6 = 110(0000-0000 0000-0000 0000-0000 0000-0110)
-6 = (1111-1111 1111-1111 1111-1111 1111-1001)
0000-0000 0000-0000 0000-0000 0000-0001
1111-1111 1111-1111 1111-1111 1111-1010=-6
-6:其實就是6的二進制取反再加1。
負數的二進制的最高位都是1,怎麼來的?取反來的。
//變量:就是將不確定的數據進行存儲。也就是需要在內存中
開闢一個空間。
如何開闢內存空間呢?就是明確數據類型,
明確變量名和數據來完成的。
byte:一個八位,八個二進制位。(-128-127)
short:2個八位。16個二進制。
int :四個八位。
long l = 4l:
數據類型 變量名 = 初始化值;int x = 4;
float f = 2.3f;(四個八位)
char ch = '4'; char ch3 = ' ';可以。
char ch = "你";可以的
當數據不確定的時候,需要對數據進行存儲時,
就定義一個變量來完成存儲。
自動類型轉換(也叫隱式類型轉換)
強制類型轉換(也叫顯式類型轉換)
//類型轉換的原理
什麼時候要用強制類型轉換?
表達式的數據類型自動提升
所有的byte,short,char的值將被提升爲int型。
字符1和數字1不同。'1':49
char爲什麼能進行運算?因爲在ascii碼中都有對應的數字。
2.5 算術運算符+-*/,++,--,
賦值運算符
比較運算符
邏輯運算符
位運算符
三元運算符
取模就是取餘數。10%4=2
5%1=0;左邊小於右邊,取模爲左邊。
取模的正負看左邊。
b=a++;++叫給a變量的值加1,並賦給b,是先賦值再自加。
b=++a;a先自加,再賦值。
+:可作字符串連接符。字符串數據和任何數據使用+號都是連接,
都會變成字符串。
轉義字符。通過\反斜線來轉變後面字母或者符號的含義。
\n:換行。\b:退格 \r:回車鍵 \t:相當於tab.製表符
賦值運算符=
x+=4;相當於x=x+4;
short s = 4;s=s+5;不行的。二次運算,不會自動轉換。
short s = 4;s+=5;可行的。一次運算,在範圍內會自動轉換。
比較運算符,>,<,==:結果爲真或假。
邏輯運算符
&,|,^,!,&&,||,
x>3 & x<6
&特點:只要兩邊的boolean,只要二邊一個false,結果就是false,
只有二邊都爲true,才爲true;
^:異或:就是和|不一樣,當true^true = false;
兩邊相同,結果爲false,兩邊不同,結果爲true;
false ^false = false;
&&:短路與:當前面的表達式不成立時,後面不再運算.
||當左邊爲true,右邊不參與。
3<<2:3左2位。
3 << 2:爲12
0000-0011-〉0000-1100;12.後面補0。
6>>2:6右移2位:爲1
0000-0110 >>0000-0001。前面補0
3<<2:3*4;3*2的二次方。
<<向左移,移多少位,就是乘二的幾次冪。
>>向右移,移多少位,就是除以二的幾次冪。
6>>2:6/4=1轉換成int,小數捨去。
>>右移,最高位爲1,前面補1。
>>>:無符號右移。無論最高位是什麼,都用0補。
6 & 3 = 2;
110&011 =010; (0不假,1爲真)
6 | 5 = 7;
110 | 101 = 111;
異或:
6 ^ 5 =3
110 ^ 101 = 011
~:反碼,就是取反。
7^4^4=7;一個數異或一個數二次,結果還是那個數。
練習題:最有效率的方式算出2乘以8等於幾?
最有效率的方式是二進制的左移右移,乘以8就相當於向
左移動3位,2的三次方等於8,所以爲 2<<3 ;(位運算)
對二個整數變量的值進行互換,不要第三方變量。
需要第三方變量的互換我們都會,那不需要第三方的變量呢?
關鍵就是藉助一個數異或同一個數二次,會變回原來的值。
int x =3; int y = 8;
//第一種。
x = x + y;
y = x - y;
x = x - y;
x = x ^ y;
y = x ^ y;
x = x ^ y;
三元運算符。
(條件表達式)?表達一:表達表二。
條件表達式爲真,就計算表達式一,條件爲假就計算二。
好處:可以簡化if else代碼。
弊端:因爲是一個運算符,所以運算完成必須要有一個結果。
拿最低四位,
那就是拿最低四位的1,那就拿四個1去與一下。拿15去與。
拿第二個最低四位。先右移四位,再拿四個1去與。
12-10=2+'A';(char)67;(char)(12-10+'A');
2.6程序流程控制
判斷結構,選擇結構,循環結構
判斷結構if()
1。 if(條件表達式)
{
執行語句;
}
2. if(條件表達式)
{
執行語句;
}else
{
執行語句;
}
3. if(條件表達式)
{
執行語句;
}else if(條件表達式)
{
執行語句;
}
...
else
{
執行語句;
}
注意,一個if是一個語句。
需求,根據用戶指定月份,打印相對應的季節。
選擇結構:
switch (表達式)
{
case 取值一 :
執行語句;
break;
case 取值二 :
執行語句;
break;
...
default:
執行語句;
break;//(最後的break可以省略)
}
//表達式的值只接受四種,byte,short,int ,char,1.5版本。
//default,可以隨便放哪,都在最後執行。
//二種結束方式,一爲break;一爲最後的大括號。
//傳說 switch 比 if 語句的效率高。
if和switch語句很像
具體什麼場景下,應用哪個語句?
如果判斷的具體數值不多,而是符合 byte short int char 這四種類型
雖然兩個語句都可以使用,建議使用switch,因爲效率稍高。
其他情況:對區間的判斷,對結果是boolean類型的,使用if,範圍更廣。
另:switch 在jdk5.0版本增加對枚舉選擇,7.0增加對 String 選擇。
不管switch語句中如何 只要碰到第一個合適的case(如果找不到合適的case 則爲default) 將繼續執行下去 直到遇到第一個break退出
int a = 10 ;
switch(a){
case 1:
case 2:show("2");
case 10:show("10");
case 3:show("3");
case 4:show("4");break;
case 5:
case 6:
default: show("default");
輸出:
10
3
4
找到 case 10 繼續順序執行 直到碰到第一個break
但是將case10 刪掉 有如下所示又會怎麼樣呢?:
a = 10;
switch(a){
case 1:
default: show("default");
case 2:show("2");
case 4:show("4");break;
case 3:show("3");
case 5:
case 6:
}
如圖 第一步:a = 10 本就該去匹配 case 10 但是找不到 故去匹配default
第二步:因爲匹配了default後 沒有break 繼續執行default 後面的代碼 直到找到case4 的break 退出switch
所以結果爲:
default
2
4