天天看點

JAVA學習筆記_Day3

複習—運算符

1.算術運算符

  +   -  *  /  %

  ++  - -

2.關系運算符

  <   <=  >  >=   ==   !=

3.邏輯運算符

  &&  ||  !

4.位運算符

  &   |  ^  ~  >>  >>>   <<

5.指派運算符

  =

  +=  -=   %=

  &=   ^=

6.三目運算符

  ?:

  expr?exp1:exp2;

  如果expr表達式的結果為true,則整個三目運算符的結果為exp1,否則為exp2;

7.其他運算符

  ()  .   [ ]

 

運算符的優先級

  算術運算符>關系運算符>邏輯運算符

  算術運算符>位運算符(除了取反~)

  為了不産生歧義,可以加()來限制優先級

重點:用位運算符求平均值:(x&y)+((x^y)>>1) = (x+y)/2

                x&y  将x和y二進制全是1的部分比對出來

                x^y   異或,将x和y不同的部分比對出來

                >>1  右移一位,除2

 num&-1 = num;

 num&0 = 0;

 num|-1 = -1;

 num|0 = num;

 num^-1 = ~num = -(num+1);

 num^0 = num;

 ~num = -(num+1);

 >>1 除2

 <<1 乘2

分支循環語句

1.順序執行語句

2.分支執行語句

 (1)if

   如果條件滿足則執行

    if(condition){ //如果滿足條件則執行此分支

   }

 

    如果條件滿足執行一個分支,不滿足則執行另一個分支

    if(condition){

   }else{

   }

 

    選擇多樣化  執行到某個分支是,可以确定前面的條件都不滿足

    if(condition){

 

   }else if(condition2){

    

   }else if(condition3){

 

   }...

   else{

 

   }

 (2)switch

   shitch(表達式){

   case 常量://分支入口

     break;//分支出口

   case 常量:

     break;

   default://可以放在任意位置,若要放在case前面,需要break,放在末尾則不需要break;

   }

   在jdk1.7版本之前,表達式的結果隻能是整數(byte  short  int  long)

   在jdk1.7版本之後,表達式的結果可以是String字元串類型

 

3.條件循環語句

  1.for

    for(init;condition;expr){

      //for1 

    }

  2.while

    while(condition){

     //while1

    }

  3. do while

    do{

    

    }while(condition);

  break 跳出循環

  continue 結束本次循環,進入下一次循環

  java中特有的标簽。

  例如:for1:

     for(init;condition;expr){

      for2:

      for(init;condition;expr){

         break  for1;//可直接跳出外層循環

      }

     }

數組

用于定義多個相同類型的變量

數組引用變量來引用具體的數組對象

int[ ] arr = new int[ 10];

定義數組的三種方式:

1.資料類型[ ] 資料引用變量名 = new 資料類型[資料長度];//長度指定

2,資料類型[ ] 資料引用變量 = new 數組類型[ ]{ 元素…}; //數組長度不能指定,有{ }裡面的元素個數決定

  數組裡面的值即為{ }内的元素

3.資料類型[ ] 資料引用變量 = {元素…};//數組長度由{ }内元素個數決定

  靜态初始化 隻能在聲明了變量時使用

 

資料元素通路方式:下标

  下标的取值範圍[0,Arr.length-1] //0到數組長度-1

  數組下标通路千萬不能越界,越界将會産生數組下标越界異常

    java.lang.ArrayIndexOutOfBoundsException

 

資料引用變量可以null

  此時不可以通路數組元素,也不可以通路數組的長度

  如果一個引用變量引用為null時,對這個引用變量進行操作将引用空指針異常

    java.lang.NullPointerException

數組元素有預設值:

資料類型 預設值
byte  short  int  long
float double 0.0
char '\u0000’空格
boolean flase
引用資料類型 null

數組的方法

Arrays.toString(arr)-----能夠吧數組的元素轉化為字元串的形式

Arrays.copyOf(數組對象,長度)-------傳回一個新的數組對象

  傳回的數組長度由第二個參數決定

  該長度可以比原數組長,多出的數組長度内的元素為預設值

  該方法可實作數組的擴容

System.arraycopy(src, srcPos, dest, destPos, length);

  數組拷貝的方法

  從src數組的srcPos下标開始拷貝length個元素到dest數組的destPos下标位置,如果src從srcPos下标開始沒有length個元素 或者 dest從destPos下标位置開始存儲不下length個元素都将導緻java.lang.ArrayIndexOutOfBoundsException 異常

二維數組

聲明二維數組:

資料類型[ ][ ] 資料引用變量 = new 資料類型[二維數組長度][一維數組長度 ];

所謂的二維數組,本質上其實是一個數組存儲另一個數組的位址資訊

  每個一維數組的長度可以不一樣

定義二維數值的方式:

1.資料類型[ ][ ] 資料引用變量 = new 資料類型[ 二維數組長度][一維數組長度 ];

  二維數組裡面的元素存儲是一維數組的位址資訊

  每個一維數組都有對應的預設值

 

2.資料類型[ ][ ] 資料引用變量 = new 資料類型[二維數組長度][ ];

  隻給二維數組配置設定了記憶體空間,沒有個一維數組配置設定記憶體空間,是以二維數組裡面的元素都是null

  如果需要使用該二維數組,,則需要對二維數組裡的元素進行指派(即讓其引用具體的一維數組對象)

 

3.資料類型[ ][ ]資料引用變量 = new 資料類型{{v1,v2},{v3,v4},{v5,v6},…};

 

4.資料類型[ ][ ] 資料引用變量 = {{v1,v2},{v3,v4},{v5,v6},…};//隻适用于直接初始化

方法(函數)

所謂方法:其實是封裝了一段具有特定功能的代碼,該代碼可以反複利用,提高了代碼的使用率

 

方法的五要素:

  修飾詞  傳回值類型  方法名  形參清單   函數體 

方法定義在main方法外面,class裡面

修飾詞:public static

傳回值類型:return-----值的類型要一緻

  如果一個方法不需要傳回值,則聲明為void

  如果一個方法的fanhuizhi,則可以用return;來結束方法(return不帶任何值)

方法名:辨別符

形參清單:每一個參數都要有類型,如果類型相同,也不可以省略

  參數之間用逗号隔開

遞歸方法:

1.必須要有退出條件

2.遞歸表達式 能把一個複雜的問題簡化成一個稍微簡單的問題加上一些簡單步驟

  例如:楊輝三角形

  yang(x,y)=yang(x-1,y-1)+yang(x-1,y);

//代碼如下
public static int yang(int row,int col){//參數為行号和列号
	if(row==1||row==col){
		return 1;
	}
	return yang(row-1,col-1)+yang(row-1,col);//楊輝三角計算公式  上一行的兩個數相加為下一行的數
}
           

由于遞歸方法非常消耗記憶體,在遞歸是需要注意遞歸的深度

更新到此已經結束了JAVA的基礎文法部分,接下裡将開始JAVA面向對象的更新

繼續閱讀