複習Java第二天之運算子 迴圈

2021-09-24 05:37:16 字數 3303 閱讀 9494

1.==:這個運算子對於基本資料型別(byte、short、int等)比較的是值,對於引用資料型別來說,比較的是位址。

說到了==,乙個與之對應的方法就不得不說一下,這個方法就是equals。想必大家都對它有所了解,它比較的就是兩個物件之間的值,那它的原理是什麼,我們來看看原始碼。

integer的equals

public boolean equals(object obj) 

return false;

}

首先,equals比較的必須是物件。由原始碼可知,它先做的操作是判斷括號裡的型別是否是integer,是->比較值,相等返回true,不等返回false;否->返回false。

其實所有的包裝器類的equals都是這樣的。那麼如果不是包裝器類呢?

public boolean equals(object anobject) 

if (anobject instanceof string)

return true;}}

return false;

}

這是string的equals方法。它先判斷的是兩個物件的位址是否相同,相同返回true。這很好解釋,位址相同了,指向的值肯定也相同。如果位址不同,進行下乙個判斷:判斷括號裡的物件是不是string型別的,如果是,且長度和括號外的string物件的長度相等,那麼就將兩個string物件中的每個字串進行比較,每個字串都一樣,返回true,否則返回false。

ok,那麼如果是普通的物件呢?像自定義的student等,他們的equals是怎樣的?

public boolean equals(object obj)
更簡單了,直接比較兩者位址是否一樣。這就是我們在使用set集合時,為什麼要重寫自定義類的equals方法和hashcode方法的原因了。hashcode方法可以按照我們的想法指定hashcode值為什麼,然後equals比較hashcode,就可以做到不重複的效果。

2.+:它可以做算數+,單純的+、-、*、/的+;也可以做字串拼接。所以我們通過例子來了解

system.out.println(1+2+"a");    //3a

system.out.println(1+2.0+"a");

system.out.println(1+"a"+2.0);

system.out.println(1+"a"+2); //1a2

system.out.println("a"+1+2); //a12

system.out.println('a'+1+2); //100 'a'的ascii碼是97

system.out.println('a'+"a"+1+2);//aa12 拼接的時候不會轉換成ascii碼

通過上例,我們可以知道的是:

當基本資料型別與基本資料型別+的時候,進行算數運算;當基本資料型別和string型別+的時候,進行字串拼接。

3.>>、<<、>>>:算數右移、算數座椅、邏輯左移

>>:通俗的來說就是不帶符號右移,相當於除以2

<<:不帶符號的左移,相當於乘2

>>>:帶符號右移,連同符號位一起移。

怎麼記》和》呢?我是這麼記的:>>只有兩個">",而》有三個">",所以》牛x一點,它可以連符號位一起移動。

system.out.println(10 >> 1);		//5

system.out.println(-10 >> 1); //-5

system.out.println(10 << 1); //20

system.out.println(-10 << 1); //-20

system.out.println(10 >>> 1); //5

system.out.println(-10 >>> 1); //2147483643

我們就著重講一下最後乙個吧。首先-10預設是int型別的所以二進位制是1000 0000 0000 0000 0000 0000 0000 1010。往右帶著符號移一位,就是0100 0000 0000 0000 0000 0000 0000 1010。所以才會的到那個那麼大的數字

4.&、|、~、^、&&、||:

&:與    1&1=1,1&0=0,0&0=0,true&true=true,true&false=false,false&false=false

| :或    1|1=1,1|0=1,0|0=0,true|true=true,true|false=true,false|false=false

~:非    ~1=0,~0=1

^:異或    1^1=0,1^0=1,0^0=1

&&:若左邊的表示式為false,右邊的**不會執行

||   :若左邊的表示式為true,右邊的**不會執行

1for(初始化部分;迴圈條件;迭代部分)

執行順序:初始化部分(只執行一次) -> 迴圈條件 -> 迴圈體 -> 迭代部分 -> 迴圈條件 -> 迴圈體 -> 迭代部分 ........

2.while(迴圈條件)

執行順序:迴圈條件 -> 迴圈體,包括迭代部分 -> 迴圈條件.........

3.dowhile(迴圈條件);

執行順序:迴圈體,包括迭代部分 -> 迴圈條件.........

以上三種可以用continue和break對迴圈進行操作。

break:打破迴圈,即結束整個迴圈,執行迴圈之後的**

還可以加標記,指定結束什麼迴圈,舉個栗子:

public class xunhuan 

system.out.println(j);

}system.out.println("---------");}}

}

a是指定的標記,隨便叫什麼名字。猜猜如上**的結果是什麼?每當 j等於2的時候,就結束本次迴圈,進入下一次,而我們在第一層迴圈左邊加了個標記,所以進入的下一次迴圈是第一層的迴圈。而且輸出的"----------"也不會列印。

switch語句:先說說語法吧。switch語句括號裡只允許出現char,byte,short,int,string,enum型別

switch([char,byte,short,int,string,enum])

public static void main(string args) 

}

會輸出123default4。

第二天 運算子

加 減 乘 除 注意事項 一旦運算當中有不同型別的資料,那麼結果將會是資料範圍大的那種 對於乙個整數的表示式來說,除法用的是整除,整數除以整數,結果任然是整數。只看商,不看餘數 只有對於整數的除法來說,取模運算才有餘數的意義 例項 public class demo04operator 對於數值來說...

第二天 運算子 控制結構

第二天 運算子 控制結構 編寫程式,輸入4個整數找出最大值和最小值。enter four integers 10 8 49 35 largest 49 smallest 8 include define n 4 int main void mao pao for i 0 i n 1 i for i ...

第二天 第二章 運算子

一 算數運算子 算數運算子是處理四則運算的符號,在數字處理中應用的最多。運算子說明 例項結果 加 1 23 減 5 23 乘 2 36 除 7 23.5 求餘數 7 21 除法結果取整數 7 23 冪,返回x的y次方 2 4 16,即24 注 用 計算餘數,如果除數是負數,那麼結果也是負數。用 或 ...