getmodifiers java_java – getModifiers()方法如何计算多个修饰符的值?
TL; DR:它將它們組合在一起形成
bit field.
要理解這一點,你需要了解二進制如何工作,這類似于十進制 – 讓我們從那里開始:
1 - public
10 - static
100 - final
那么,101意味著什么?它必須是公共最終的,因為除了單個100和單個1之外,十進制系統中沒有其他方法可以制作“一百零一”.
現在將其擴展為二進制:
1 - public
2 - private
4 - protected
8 - static
那9是什么意思?好吧,與十進制系統一樣,只有一種(正確的)方法可以使二進制9 – 一個8和一個1.
現在我們使用我們稱之為位域的內容,二進制中的9是:
1001
要驗證,寫一些代碼!
public static void main(String[] args) throws Exception {
int i = 9;
System.out.println(Integer.toBinaryString(i));
}
現在,使用十進制系統,我們將重復除以10并檢查最右邊的數字(最不重要).對于二進制,這個過程是相同的,除了我們除以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的值,并且我們知道我們有多少位,那么只需要移位正確的位數并將模數取為2:
public static void main(String[] args) throws Exception {
int i = 9;
i >>= 2;
System.out.println(i%2);
}
輸出:
0
所以我們基本上使用構成二進制數的1和0值來編號來存儲布爾值.
所以把這個例子帶入閱讀世界:
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 – 錯誤29 = 256 – 錯誤210 = 512 – 假211 = 1024 – 假212 = 2048 – 是的
總結
以上是生活随笔為你收集整理的getmodifiers java_java – getModifiers()方法如何计算多个修饰符的值?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构之并查集:UF-Tree优化并查
- 下一篇: 学计算机耗脑子,为什么补脑——脑是耗能大