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()方法如何计算多个修饰符的值?相关推荐
- getmodifiers java_getModifiers()方法如何计算多个修饰符的值?
TL; DR:它将它们加在一起形成一个位字段 . 要理解这一点,你需要了解二进制如何工作,这类似于十进制 - 让我们从那里开始: 1 - public 10 - static 100 - final ...
- 方法重载与访问修饰符
方法重载: 在一个类中,方法名相同,参数不同(参数个数不同,类型不同,次序不同),构成方法重载方法重载与访问修饰符,返回值类型,方法参数名没有关系 public class Calc { public ...
- [转载] java接口中方法的默认访问修饰符为public
参考链接: Java接口方法 如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( ) A.void use() { -} B.prot ...
- java域的控制修饰符可分为_Java中的类和方法的修饰符
java 中的类和方法的修饰符Java程序在定义类时,除了使用class关键字标识之外,还可以在class之前增加若干类的修饰符来修饰限定所定义的类的特性.类的修饰符分为访问控制符和非访问控制符两大类 ...
- charat越界返回什么_Java基本语法方法修饰符返回类型参数列表异常列表
方法[method name] 定义 方法[method]是类的成员之一,(因为在java中,方法不能单独定义,它必须在类之中). 修饰符 返回类型 方法名()[throws 异常类型]{ //方法体 ...
- 语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符)
语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符) (如有错误,欢迎指正,感谢!) 类 类是面向对象的程序设计中的概念,实现信息的封装 概念: 类就是拥有相等行为和相同的属性的 ...
- day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类
1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...
- Java 实验报告 了解如何使用类及其成员的修饰符,理解类的继承性,掌握方法的继承、重载和覆盖
班级软件16-2班 学号 3162052051734姓名梁振宇同组实验者 实验名称Java语言基础练习日期 2018年 05 月31 日 一.实验目的: 了解如何使用类及其成员的修饰符,理解类的继承性 ...
- day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上_下造型,main方法,抽象类,接口,设计模式,异常,内部类
1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...
最新文章
- Nginx+Keepalived实现Web服务器负载均衡
- 如何在UIAlertView中显示进度条
- 六行代码安装 GPU版本的TensorFlow
- VS 2010 使用项目 无法链接 DLL文件的问题
- Mysql学习总结(6)——MySql之ALTER命令用法详细解读
- Docker配置Dockerfile中关键ENTRYPOINT和CMD命令详解
- 不知道哪个学校教务处管理系统的图
- Android 自动化测试 常用的命令----随时更新
- 转:运行yum报错Error: Cannot retrieve metalink for reposit
- P2P网络及节点发现机制
- python爬虫实例项目大全-GitHub 上有哪些优秀的 Python 爬虫项目?
- jcp jsr_JCP成为“可怕的单一文化”
- ParallaxOcclusionMapping( POM ) DX9
- 【磁盘调度算法】磁盘调度模拟的设计与分析
- 安装torch_points3d时提示 No such file or directory: nvcc
- 佛山市银河兰晶科技股份有限公司隐私政策
- HMaster是什么?
- 关于ESP8266使用ArduinoIDE编程,调用airkiss_lan_recv和airkiss_lan_pack出错的解决方法
- c语言之函数或者变量的weak属性 C语言之强化,弱化符号weak
- 解决Steam火炬之光2起动器在DeepinV20中显示空白透明的问题
热门文章
- electron安装比较慢的方法
- iTerm2 快捷键大全
- 计算机网络常见面试真题详解
- 前后端分离项目如何部署_前后端分离项目,如何解决跨域问题?
- MySQL数据库重点概要总结
- Go 1.18.1 Beta 尝鲜 泛型 FuzzTest workspace mode
- mysql的rows大小超过8126_mysql大字段(Row size too large8126)
- 网络:TCP维护安全可靠机制提供的定时器
- e480 黑苹果_Thinkpad E480黑苹果组建Fusion Drive——鱼和熊掌我都要
- 重庆邮电大学计算机科学与技术培养方案,重庆邮电大学计算机科学与技术学院.doc...