getmodifiers java_java – getModifiers()方法如何计算多个修饰符的值?
TL; DR:它將它們組合在一起形成
bit field.
要理解這一點(diǎn),你需要了解二進(jìn)制如何工作,這類似于十進(jìn)制 – 讓我們從那里開始:
1 - public
10 - static
100 - final
那么,101意味著什么?它必須是公共最終的,因?yàn)槌藛蝹€(gè)100和單個(gè)1之外,十進(jìn)制系統(tǒng)中沒有其他方法可以制作“一百零一”.
現(xiàn)在將其擴(kuò)展為二進(jìn)制:
1 - public
2 - private
4 - protected
8 - static
那9是什么意思?好吧,與十進(jìn)制系統(tǒng)一樣,只有一種(正確的)方法可以使二進(jìn)制9 – 一個(gè)8和一個(gè)1.
現(xiàn)在我們使用我們稱之為位域的內(nèi)容,二進(jìn)制中的9是:
1001
要驗(yàn)證,寫一些代碼!
public static void main(String[] args) throws Exception {
int i = 9;
System.out.println(Integer.toBinaryString(i));
}
現(xiàn)在,使用十進(jìn)制系統(tǒng),我們將重復(fù)除以10并檢查最右邊的數(shù)字(最不重要).對(duì)于二進(jìn)制,這個(gè)過程是相同的,除了我們除以2 – 這被稱為位移.
public static void main(String[] args) throws Exception {
int i = 9;
System.out.println(Integer.toBinaryString(i));
i >>= 1;
System.out.println(Integer.toBinaryString(i));
i >>= 1;
System.out.println(Integer.toBinaryString(i));
i >>= 1;
System.out.println(Integer.toBinaryString(i));
}
輸出:
1001
100
10
1
所以,如果我知道private是21的值,并且我們知道我們有多少位,那么只需要移位正確的位數(shù)并將模數(shù)取為2:
public static void main(String[] args) throws Exception {
int i = 9;
i >>= 2;
System.out.println(i%2);
}
輸出:
0
所以我們基本上使用構(gòu)成二進(jìn)制數(shù)的1和0值來編號(hào)來存儲(chǔ)布爾值.
所以把這個(gè)例子帶入閱讀世界:
public static void main(String[] args) throws Exception {
final Method method = App.class.getMethod("myMethod");
final int modifiers = method.getModifiers();
System.out.println(modifiers);
System.out.println(Integer.toBinaryString(modifiers));
}
public strictfp synchronized static final void myMethod() {
}
輸出:
2105
100000111001
所以我們可以看到我們有:
20 = 1 – 是的21 = 2 – 假22 = 4 – 假23 = 8 – 是的24 = 16 – 是的25 = 32 – 真27 = 64 – 假28 = 128 – 錯(cuò)誤29 = 256 – 錯(cuò)誤210 = 512 – 假211 = 1024 – 假212 = 2048 – 是的
總結(jié)
以上是生活随笔為你收集整理的getmodifiers java_java – getModifiers()方法如何计算多个修饰符的值?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构之并查集:UF-Tree优化并查
- 下一篇: 学计算机耗脑子,为什么补脑——脑是耗能大