通常是放在定義類,方法,變量的最前端javascript
修飾符 | 當前類 | 同一包內 | 子孫類 | 其餘包 |
---|---|---|---|---|
public |
Y | Y | Y | Y |
protected |
Y | Y | Y | N |
default |
Y | Y | N | N |
private |
Y | N | N | N |
感受這個表格挺清晰的,至少我一眼就懂了前端
如果不加修飾符,貌似是默認publicjava
static 修飾符,用來建立類方法和類變量。編程
(靜態變量的話,就是說不管被實例化多少次,靜態變量只拷貝一次,並且不變spa
靜態方法的話,不能使用類的非靜態變量,並且不用new就能夠調用該方法)線程
final 修飾符,用來修飾類、方法和變量,final 修飾的類不可以被繼承,修飾的方法不能被繼承類從新定義,修飾的變量爲常量,是不可修改的。code
abstract 修飾符,用來建立抽象類和抽象方法。繼承
(不是很懂抽象類,就四處問了問,最後得出個淺顯易懂,可是估計理解還有些誤差的解釋:一個父類,我有不少子類,有同一個方法,可是每一個子類的處理不一樣,因此就在父類裏面定義個抽象的,至關於只是定了個名字,怎麼處理,每一個子類看着辦)ip
synchronized 和 volatile 修飾符,主要用於線程的編程。it
感受跟其餘語言沒什麼區別啊,記錄幾個接觸少的
Java定義了位運算符,應用於整數類型(int),長整型(long),短整型(short),字符型(char),和字節型(byte)等類型。
位運算符做用在全部的位上,而且按位運算。假設a = 60,b = 13;它們的二進制格式表示將以下:
A = 0011 1100 B = 0000 1101 ----------------- A&b = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
操做符 | 描述 | 例子 |
---|---|---|
& | 若是相對應位都是1,則結果爲1,不然爲0 | (A&B),獲得12,即0000 1100 |
| | 若是相對應位都是0,則結果爲0,不然爲1 | (A | B)獲得61,即 0011 1101 |
^ | 若是相對應位值相同,則結果爲0,不然爲1 | (A ^ B)獲得49,即 0011 0001 |
〜 | 按位補運算符翻轉操做數的每一位,即0變成1,1變成0。 | (〜A)獲得-61,即1100 0011 |
<< | 按位左移運算符。左操做數按位左移右操做數指定的位數。 | A << 2獲得240,即 1111 0000 |
>> | 按位右移運算符。左操做數按位右移右操做數指定的位數。 | A >> 2獲得15即 1111 |
>>> | 按位右移補零操做符。左操做數的值按右操做數指定的位數右移,移動獲得的空位以零填充。 | A>>>2獲得15即0000 1 |
多是作的項目有限,位運算符這種沒怎麼遇到過
while,do...while,for
感受每一個語言都同樣,沒啥特別的,很少說
if,switch
同上,跟javascript沒太大區別