黑马程序员.bobo.DAY.2
2019獨角獸企業重金招聘Python工程師標準>>>
DAY-2
1.標識符
1.1?Java語言基礎組成
1.1.1關鍵字
被計算機語言賦予了特殊的含義的字符
1.1.2標識符
l?在程序中自定義的一些名稱
l?由26個字母大小寫,數字:0-9符號:_和$z組成(下劃線和美元號)
l?定義合法標識符規則:
1.數字不可以開頭。例如:123bobo
2.不可以使用關鍵字。例如?static?public?
l?Java中嚴格區分大小寫
l?注意:?在起名字的時候,為了提高閱讀性,要盡量有意義
例如:class?Add()
?
Java中的名稱規范:
l?包名:多單詞組成時所有字母小寫。
xxxyyyzzz
l?類名接口名:多單詞組成時,所有單詞的首字母大寫。
XxxYxxZzz
l?變量名和函數名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫。
xxxYyyZzz
l?常量名:所有字母都大寫,多單詞組成時每個單詞用下劃線連接。
XXX_YYY_ZZZ
1.1.3注釋
l?//單行注釋
l?/*
多行注釋
*/
?
?
2.常量
?2.1常量與變量
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開頭表示。?
3.進制的特點
編碼表ASCII
010...001--A
011...001--B
?
科學型計算機可以計算二進制
?
規律:進制越大,表現形式越短
?
class VarDemo { public static void main(String[] args) { System.out.println(60); System.out.println(0x3c); } }
?
4.進制轉換(十進制和二進制)
十進制→二進制?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 = 535+4=9101 +100 1001=9
5.進制轉換(八進制和十六進制)
其它進制轉換。
先轉換二進制
?
轉成16進制?四個二進制位就是一個十六進制位
90 0101-10105 10 A 90=0x5A
?
轉成8進制
三個二進制代表1位
001-011-010 1 3 2
6.進制轉換(負數二進制)
負數的二進制表現形式
6==110
-6:其實就是6的二進制的取反+1。
取反:將二進制的1變成0?0變成1
0000-0000 0000-0000 0000-0000 0000-01101111-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); } }
7.變量
變量:就是將不確定的數據進行存儲。
也就是需要在內存中開辟一個空間
就是通過明確數據類型,變量名稱數據來完成
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; } }
8.類型轉換
byte b = 3; b = b + 2; System.out.println(b);97 a 98 b System.out.println(‘a’+1); 98
9.算術運算符
9.1運算符
10.轉義字符
//字符串數據和任何數據使用+都是相連接,最終都會變成字符串 //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鍵。
?
?
11.賦值和比較運算符
11.1?賦值運算符
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賦值時,自動完成了強轉操作
有什么區別?
11.2比較運算符
| 運算符 | 運算 | 范例 | 結果 |
| == | 相等于 | 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:比較運算符”==”不能誤寫成”=”。
?
11.3邏輯運算符
| 運算符 | 運算 | 范例 | 結果 |
| & | AND(與) | false&true | false |
| | | OR(或) | false|true | true |
| ^ | XOR(異或) | true^false | true |
| ! | Not(非) | !true | false |
| && | AND(短路) | false&&true | false |
| || | OR(短路) | false||true | true |
?
11.4位運算符
| 運算符 | 運算 | 范例 |
| << | 左移 | 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);
?
12.語句(if)
12.1流程控制結構
12.1.1判斷結構
if語句
三種格式:
1.?
if(條件表達式) { 執行語句; }
2.
if(條件表達式) { 執行語句; }else { 執行語句; }
3.
if(條件表達式){執行語句;}else if (條件表達式){ 執行語句;}.....else{執行語句;}
12.1.2選擇結構
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結尾結束
?
添加好友
小額贊助
| 微信 | 支付寶 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
轉載于:https://my.oschina.net/snowbobo/blog/414936
總結
以上是生活随笔為你收集整理的黑马程序员.bobo.DAY.2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的http服务器示例
- 下一篇: jSP-13-其他