被計算機語言賦予了特殊的含義的字符 java
l 在程序中自定義的一些名稱 微信
l 由26個字母大小寫,數字:0-9符號:_和$z組成(下劃線和美圓號) 函數
l 定義合法標識符規則: 測試
1.數字不能夠開頭。例如:123bobo 編碼
2.不可使用關鍵字。例如 static public spa
l Java中嚴格區分大小寫 code
l 注意: 在起名字的時候,爲了提升閱讀性,要儘可能有意義 對象
例如:class Add() 接口
Java中的名稱規範: 內存
l 包名:多單詞組成時全部字母小寫。
xxxyyyzzz
l 類名接口名:多單詞組成時,全部單詞的首字母大寫。
XxxYxxZzz
l 變量名和函數名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每一個單詞首字母大寫。
xxxYyyZzz
l 常量名:全部字母都大寫,多單詞組成時每一個單詞用下劃線鏈接。
XXX_YYY_ZZZ
l //單行註釋
l /*
多行註釋
*/
l 常量表示不能改變的數值。
l Java中常量的分類:
1.整數常量,全部整數
2.小數常量,全部小數
3.布爾型常量,較爲特有,只有兩個數值,true flase.
4.字符常量。將一個數字字母或者符號用單引號(‘’)標識。‘4’
5.字符串常量。將一個或者多個字符用雙引號標識。「adc」
6.null常量。只有一個數值就是:null.
l 對於整數:Java有三種表現形式。
十進制:0-9 滿10進1
八進制:0-7 滿8進1 用0頭表示。
十六進制:0-9,A-F滿16進1。用0x開頭表示。
編碼表ASCII
010...001--A
011...001--B
科學型計算機能夠計算二進制
規律:進制越大,表現形式越短
class VarDemo { public static void main(String[] args) { System.out.println(60); System.out.println(0x3c); } }
十進制→二進制 6的二進制
原理:對十進制數進行除2預算。
二進制→十進制
原理:二進制乘以2的過程。
110 0*2(0)+1*2(1)+1*2(2)= 數值*2(0)+數值*2(1)+數值*2(2) 0 + 2 + 4 =6 0 0 1 1 0 1 0 1 = 128 64 32 16 8 4 2 1 = 53 5+4=9 101 +100 1001=9
其它進制轉換。
先轉換二進制
轉成16進制 四個二進制位就是一個十六進制位
90 0101-1010 5 10 A 90=0x5A
轉成8進制
三個二進制表明1位
001-011-010 1 3 2
負數的二進制表現形式
6==110
-6:其實就是6的二進制的取反+1。
取反:將二進制的1變成0 0變成1
0000-0000 0000-0000 0000-0000 0000-0110 1111-1111 1111-1111 1111-1111 1111-1001 +0000-0000 0000-0000 0000-0000 0000-0001
------------------------------------------ 0000-0000 0000-0000 0000-0000 0000-1010 =-6
負數的最高位都是1。
測試
class VarDemo { public static void main(String[] args) { System.out.println(Integer.toBinaryString(-6)); System.out.println(0x3c); } }
變量:就是將不肯定的數據進行存儲。
也就是須要在內存中開闢一個空間
就是經過明確數據類型,變量名稱數據來完成
class VarDemo { public static void main(String[] args) { //定義變量的格式: //數據類型 變量名 = 初始化值; //定義一個int類型的變量,取值爲4; int x =4; System.out.println(x); x = 10; System.out.println(x); //演示其它數據類型。 byte b = 2; //-128-127; //byte b1 = 128; short s = 30000;//別超過域 由於有可能報錯損失精度 long l = 41; float f = 2.4f; double d = 34.56; char ch = '4'; char ch1 = 'a'; char ch2 = '+'; char ch3 = ' '; boolean bo = true; boolean bo1 = false; /* 何時定義變量? 當數據不肯定的時候。須要對數據進行存儲時。就定義一個變量來完成存儲動做。 */ int a = 5; a = a + 6; } }
byte b = 3; b = b + 2; System.out.println(b); 97 a 98 b System.out.println(‘a’+1); 98
//字符串數據和任何數據使用+都是相鏈接,最終都會變成字符串 //System.out.println("ab"+5+5); /* 轉義字符:經過\來轉變後面的字母或者符號的含義。 \n:換行 \b:退格。至關於backpace \r:按下回車鍵。 \t:製表符。至關於tab鍵 */ System.out.println("hello\nworld");//換行 System.out.println("hello\bworld");// 退格 System.out.println("hello\rworld");//按下回車鍵。 System.out.println("hello\tworld");//製表符。至關於tab鍵。
l 符號:
=,+=,-=,*=,/=,%=
l 示例:
int a,b,c; a=b=c=3; int a = 3; a+=5;等同運算a=a+5;
l 思考:
short s =3;
s=s+2;編譯失敗,由於s會被提高會int類型,運算後的結果仍是int類型,沒法賦值給short類型。
s+=2; 編譯經過,由於+=運算符在給s賦值時,自動完成了強轉操做
有什麼區別?
運算符 |
運算 |
範例 |
結果 |
== |
相等於 |
4==3 |
false |
!= |
不等於 |
4!=3 |
true |
< |
小於 |
4<3 |
false |
> |
大於 |
4>3 |
true |
<= |
小於等於 |
4<=3 |
false |
=> |
大於等於 |
4>=3 |
true |
instanceof |
檢查是否類的對象 |
「hello」 instanceof |
true |
注1:比較運算符的結果都是boolean型,也就是要麼是true,要麼是false。
注2:比較運算符」==」不能誤寫成」=」。
運算符 |
運算 |
範例 |
結果 |
& |
AND(與) |
false&true |
false |
| |
OR(或) |
false|true |
true |
^ |
XOR(異或) |
true^false |
true |
! |
Not(非) |
!true |
false |
&& |
AND(短路) |
false&&true |
false |
|| |
OR(短路) |
false||true |
true |
//邏輯運算符用於鏈接boolean類型的表達式。 //x > 3 & x <6 = true & true =true;//而且 /* true & true =true ; true & false = false ; false & true = false ; false & false = false ; &:只要兩邊的boolean表達式結果,有一個爲false,那麼結果爲false, 只有兩邊都爲true 結果爲true; */ /*true | true = true; false | true =true; true | false = true ; false | false = false; |: 兩邊只要有一個爲true,結果爲true。 只有兩邊都有false,結果爲false。 */ /*^:異或:就是和|有點不同。當true^ true =false; true ^ true =false; true ^ false =true ; false ^ true = true ; false ^ false = false; ^:兩邊都相同結果是false; 兩邊不一樣結果爲true; */ /* !true !!true */ int a = 4; a>3 && a<6; /* &和&&的特色 &:不管左邊是true是false。右邊都運算。 &&:當左邊爲false時,右邊不運算。 |:兩邊都參與運算。 ||:當左邊爲true。右邊不運算。 */
運算符 |
運算 |
範例 |
<< |
左移 |
3<<2 =12 → 3*22=12 |
>> |
右移 |
3>>1 =1 → 3/21=1 |
>>> |
無符號右移 |
3>>>1=1 → 3/2=1 |
& |
與運算 |
|
| |
或運算 |
|
^ |
亦或運算 |
|
~ |
反碼 |
|
3<<2=12; 3<<1=6; 3<<3=24
3*4(2的2次方:1 2 4)=12 3*2(2的一次方:1 2)=6 3*8(2的3次方:1 2 4 8)=24
0000-0000 0000-0000 0000-0000 0000-0011=3
向左位移兩位
00-0000 0000-0000 0000-0000 0000-001100=12
6>>2 =1; 6>>1 =3;
6/22=1取整 6/21=3;
0000-0000 0000-0000 0000-0000 0000-0110=6
向右位移兩位
00-0000-0000 0000-0000 0000-0000 0000-01=1
3<<2 → 3*22
3<<3 → 3*23
<<:其實就是乘以2的移動的位數次冪。
>>:就是除以2的移動的位數次冪 取整
>>
|111111-1111 1111-1111 1111-1111 1111-10|10=-6
<<<
001111-1111 1111-1111 1111-1111 1111-10|10
>>:最高位補什麼由原有的最高位值而定。
若是最高爲-有一後,用0補空位。
若是最高位1,右移後,用1補空位。
>>>不管最高位是什麼,右移後,都用0補空位
&:
6&3=
0就視爲假 1就視爲真
110
&011
010=2;
|:
6|5=7;
110
|101
111=7;
^:
6^5=
110
&101
011=3
????問題:~6 爲何結果是-7?
第一步:6換二進制 000...000110 6
第二步:取反
111...111001
而後計算 等於2?不是7?
111...111010
7^4
111
^100
011=3
^100
111=7; 7^4^4=7; 7^5^5=7;
一個數異或同一個數兩次,結果仍是那個數
練習:1。最有效的方式計算2*8
1000
*0010
0000
1000
10000=16
000..00010 000
這個高效
2<<3
2.對兩個整數變量的值進行互換(不須要第三方變量)
//經過第三方變量, // int temp; // temp =n; // n=m; // m=temp; //不用第三方變量 System.out.println("n="+n+",m="+m); // 11 = 3 + 8; // 3 = 11 - 8; // 8 = 11 - 3; // n = n + m;// 定義:n=3 m=8 而後n=11 m = 8若是n和m的值很是大,容易超出int 範圍。 // m = n - m;// 定義:n = 11 m =8 而後m = 3 n=11 // n = n - m;// 定義:m = 3 n = 11 而後n = 8 m 3 n = n ^ m; m = n ^ m;//(n^m)^m n = n ^ m;//(n^m)^n; System.out.println("n="+n+",m="+m);
if語句
三種格式:
1.
if(條件表達式) { 執行語句; }
2.
if(條件表達式) { 執行語句; } else { 執行語句; }
3.
if(條件表達式) { 執行語句; } else if (條件表達式) { 執行語句; } ..... else { 執行語句; }
switch語句
格式:
switch(表達式) { case 取值1: 執行語句; break; case 取值2: 執行語句; break; .... default: 執行語句; break; }
Switch語句特色:
a.switch 語句選擇的類型只有四種:byte short int char.
b.case之間default沒有順序.先執行第一個case,沒有匹配的case再執行default
c.結束switch語句的兩種狀況:遇到break,執行到switch語句結束.
d.若是匹配的case或者default沒有對應的break,那麼程序會繼續向下執行,運行能夠執行的語句,直到遇到break或者switch結尾結束
添加好友
小額贊助
微信 |
支付寶 |
|
|
|
|
|
|
|
|
|
|