複習—運算符
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面向對象的更新