黑馬程序員--- 學習筆記(第二天)

 —————————— ASP.Net+Android+IOS開發.Net培訓、期待與您交流!——————————


關鍵字:java對某些單詞賦予了特殊含義


標識符:26個大小寫英文字母,0-9 _ $  
定義規則:1.不能使用數字開頭
2.不能使用java關鍵字


java嚴格區分大小寫


定義如下:
1.包名:所有字母小寫,不能以.開頭或結尾 例如xx.yy.zz
2.變量名,函數名:首個單詞小寫,第二個開始首字母大寫.例如xxYyZz
3.常量: 所有字母大寫,多個單詞用_ 連接 例如:X_Y_Z
4.類名,接口名: 所有首字母大寫XxxYyy


常量:就是不能改變的數值


對於整數,java有四種表現形式:
1.二進制 0 1 滿2進一
2.八進制 0-7 滿8進一
3.十進制 0-9 滿10進一
4.十六進制 0-9 A-F 滿16進一


一個字節(byte) 由八位二進制數(bit)組成..  


二進制每3位代表一個數值,就是8進制
二進制每4位代表一個數值,就是16進制


十進制轉二進制
原理:就是進行除以2的運算,結果從下往上讀

可以用Integer.toBinaryString(val)  轉成二進制 返回String 


二進制轉十進制
原理:2進制數*2(n)過程
例如(6的二進制轉十進制)
110  =   6 
0*2(0)+1*2(1)+1*2(2)=0+2+4=6


二進制轉成16進制
例如0101 1010 四位一組(1 2 4 8規律): 結果是:0x5A

二進制轉8進制
例如001011010 三位一組(1 2 4 規律)


負數的二進制
例如: -6
原理:就是6的二進制數取反+1
變量:
    就是將不確定的數據在內存開闢一個內存空間
    定義語法如下:
數據類型 變量名 = 初始化值;
注意:java強類型的語言,javascript是弱類型的語言


整數
byte 8位
short 16位
int 32位
long 64位
浮點類型:
單精度 float 32位
雙精度 double 64位


Java中整數默認int 小數默認double


字符型: char  16位


布爾型 : true false


例子:

/*
測試1  變量的定義
*/
class  	 Demo1
{
	public static void main(String[] args) 
	{
		//數據類型 變量名  =  初始化值
			byte b=5;

			short s=5;

			int i=5;

			long l=5l;
		
			float f=5.5f;

			double d=5.21;

			boolean bool=true;

			char c='\n';

	}									 
}







什麼時候定義變量?
當數據不確定的時候,需要對數據進行存儲時,就定義一個變量來完成存儲動作.



類型轉換:
1.自動類型轉換:小的向大提升
2.強制類型轉換:大的向小的轉換 

算術運算符
+ - * / % ++ -- 
整數/整數=整數


被模數小於模數,結果是被模數  例如:2%5=2
小考點: 1%-5=1         -1%5=-1;


i++ ++i的區別:
i++:先賦值在運算
++i:先運算在賦值



轉義字符: 通過\來轉變後面的字母或符號的含義
常用:
1. \n 換行
2.\b 退格
3.\r 按下回車鍵
4.\t 製表符(相當於tab)
賦值運算符:
= += -= \= *= %= 
比較運算符:
== > < >= <= != 
邏輯運算符:
& | ^ && || ! 


邏輯運算符用於連接boolean類型的表達式
&特點:
兩邊真,則真
兩邊假,則假
一邊真,則假
|特點:
兩邊真,則真,
一邊真,則真
兩邊假,則假
^特點:
兩邊真(假),則假
一邊真,一邊假,則真
!特點:
!真=假
!假=真

&&,||(短路) 同理

&和&&的特點:
&:兩邊都參與運算
&&:左邊是假,右邊不運算
|和||的特點:
|:兩邊都參與運算
||:左邊爲真,右邊就不運算
位運算(二進制運算):
<< 左移
>> 右移
>>> 無符號右移
& 與
| 或
! 非
~ 反碼


>> 其實就是除以2的位數次冪
<< 其實就是乘以2的移動位數次冪


>> << 拿最高位補


>>>  都拿0補


反碼: 其實就是取反


異或小應用: 一個數異或同一個數兩次等於本身

/*變量交換*/
class Demo3 
{
	public static void main(String[] args) 
	{
		int x=10,y=11;
		//第一種 	  無需第三方變量

		/*有侷限性(x+y)不能超過int的取值範圍
		System.out.println("交換前 x= "+x+",y= "+y);
		x=x+y;
		y=x-y;
		x=x-y;
		System.out.println("交換後 x= "+x+",y= "+y);
		*/

		//第二種    需要臨時變量
		/*
		System.out.println("交換前 x= "+x+",y= "+y);
		int temp=x;
		x=y;
		y=temp;
		System.out.println("交換後 x= "+x+",y= "+y);
		*/
		//第三種 無需第三方變量
		
		System.out.println("交換前 x= "+x+",y= "+y);
		x=x^y;
		y=y^x;
		x=x^y;
		System.out.println("交換後 x= "+x+",y= "+y);
			

	}
}




注意:位運算高效率



練習:
 
/*
 位運算 
*/
class Demo2 
{
	public static void main(String[] args) 
	{
			//2進制轉16進制

			 int n=60&15;	 //獲取最低四位
			 if(n>9)
				   System.out.println((char)getChar(n));	
			 else 
					 System.out.println(n);	
					
			n=60>>>4;	//向右移動四位
			 if(n>9)
				   System.out.println((char)getChar(n));	
			 else 
					 System.out.println(n);	
	}
	/*根據接受的值返回*/
	public static int getChar(int n){

			 if(n==10)
				return 'a';
			else if(n==11)
				return 'b';
			else if(n==12)
				return 'c';
			else if(n==13)
				return 'd';
			else if(n==14)
				return 'e';
			else if(n==15)
				return 'f';

			return n;
	}
}





 三元運算符:
運算符一定有結果: 變量=(表達式)?真:假;

例子:


 /*
 三元例子
 */
class Demo5 
{
	public static void main(String[] args) 
	{
		int n=1;
		System.out.println(n>1?88:66);
		//意思是n>1嗎? 大於返回88, 否則就是小於,返回66;

	}
}




好處:可以簡化if else代碼
弊端:因爲是一個運算符,所以必須有結果


程序流程控制:
1.判斷結構
if(條件表達式){執行語句;}




if(條件表達式1){
執行語句1;
}else{
執行語句2;
}
  
if(條件表達式1){
     執行語句1;
}else if(條件表達式2){
執行語句2;
}else{
執行語句3;
}
練習代碼如下:

/*
使用if 跟switch完成練習
*/
class Demo4 
{
	public static void main(String[] args) 
	{
		//根據用戶輸入int判斷星期幾
		int d=0;
		if(d < 1 || d > 7)
			System.out.println("沒有這個星期");
		else if(d==1){
			  System.out.println("星期一");
		}else if(d==2){
			  System.out.println("星期二");
		}else if(d==3){
			 System.out.println("星期三");
		}else if(d==4){
			 System.out.println("星期四");
		}else if(d==5){
			 System.out.println("星期五");
		}else if(d==6){
			 System.out.println("星期六");
		}else {
			 System.out.println("星期天");
		}

		//使用switch 根據輸入月份判斷季節
		switch(d){
			case 3:
			case 4:
			case 5:
				System.out.println("春季");
				break;
			case 6:
			case 7:
			case 8:
				System.out.println("夏季");
				break;
			case 9:
			case 10:
			case 11:
				System.out.println("秋季");
				break;
			case 12:
			case 1:
			case 2:
				System.out.println("冬季");
				break;
			default:
				System.out.println("你們那裏有這個月份麼?");
				break;
		}
	}
}



選擇結構:
switch(表達式){
case 值1: 執行語句; break;
case 值2; 執行語句;break;
default: 執行語句; break;
}
switch特點:
1.被選擇表達式只能接收byte short int char
2.case可以沒有順序,但執行時是有順序的



開發選擇哪個合適呢?
如果是對具體數值判斷,具體值不多,如何byte short int char 首選switch,效率稍高
如果是布爾,區間,首選if

 —————————— ASP.Net+Android+IOS開發.Net培訓、期待與您交流!——————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章