一、高层知识点
JDK集合框架中有一个接口:Comparator,其中有个compare()方法,方法签名需要传递两个参数,暂且就声明为arg1和arg2,用来互相比较两个参数的大小,该方法返回一个int类型的值,该结果有以下三种:
1.负数:arg1比arg2小。
2.零:arg1与arg2相等。
3.整数:arg1比arg2大。
通过观察上述三种结果,我想到了用减法运算来实现这个方法。
再来看另外一个知识点,String类 。其中有一个方法为compareTo(),方法签名需要传递一个String类参数,当前String对象与这个参数进行大小比较;观察其源码,是通过逐个字符做减法运算进行比较的,也是返回int类型的值(负数、零、整数)用以判断String大小的。
我在没学汇编语言的时候,我只是认为Java的实现机制是这样的,对于底层机制是如何实现的,或者说底层的比较机制是不是这样的没有一丝概念。
二、底层知识点
介绍了这两个高层知识点后,再来介绍下与之相呼应的底层知识点。前些日子在学汇编语言的时候,学到了一个cmp指令,这里引用其原文(《汇编语言第二版》):
引用
cmp指令是比较指令,cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较的结果。
cmp指令格式: 操作对象1,操作对象2
功能:计算操作对象1-操作对象2,但并不保存结果,仅仅根据计算结果对标志寄存器进行设置。
针对cmp指令,其相关的标志寄存器有两个比较重要的标志位:ZF和CF。
ZF是零标志位,相关指令执行后,其结果是否为0。如果结果为0那么ZF=1;如果结果不为0,那么ZF=0。
CF是进位标志位,该标志位记录了运算结果的最高有效位向更高位的进位值,或从更高位借位值。
结合开头讲述的两个高层知识点来说,用汇编语言来说明:
cmp arg1,arg2
如果arg1 = arg2,则CF=0,ZF=1
如果arg1 ≠ arg2, 则CF=0,ZF=0
如果arg1 > arg2,则CF=0,ZF=0
如果arg1 ≥ arg2,则CF=0,(ZF有可能为0也有可能为1)
如果arg1 < arg2,则CF=1,ZF=0
如果arg1 ≤ arg2,则CF=1,(ZF有可能为0也有可能为1)
Java中的比较原理和汇编语言的比较原理上基本上是一致的。我不太确定这是不是巧合,又或许是Java语言就是按照底层的这种机制来实现的。不过这个疑问不会对学习底层知识有任何的影响,任它高级语言变化来变化去,底层还是那亘古不变的机制。
三、总结
知识网是由N多线连接成的,而线又由两个点连接起来的。知识点不应该是被孤立的,它应该是和其它知识点相交的、相通的、相融的。
这篇博文中讲述的几个例子并不是很深入,其实主要是想阐述怎样使用“反转”的思考方式去学习底层知识,而不是说单单去学习底层知识,知识是要被应用的,而不是学习过后记在脑子里不用。
用高层知识去学习底层知识,其实就是一种本末倒置的手法。还是用以往先从底层知识学起,再逐步学习高层知识,对我个人来说起到的效果不是很明显;反过来用“反转”的思考方式,带着对高层知识的疑问去学习底层知识,会起到意想不到的效果。
换句话来说就是通过高层知识来去学习底层知识,然后再用底层知识来理解它是怎么被高层知识应用的(控制反转思想?)。
分享到:
相关推荐
2022年海外宏观展望:反转之年(19页).pdf
2022年海外宏观展望:反转之年.pdf
计算机行业:网安调研简报:底部反转,2021景气可期
国际宏观评论-国盛证券-2022年海外宏观展望:反转之年.pdf
计算机行业:网安调研简报:底部反转,2021景气可期.pdf
东吴证券_1228_东吴证券金工专题报告:反转因子的精细结构,Q&A.pdf
东方证券_0221_因子选股系列研究之三十三:反转因子择时研究.pdf
2020年三季度房地产行业投资策略:反转而非反弹,新周期上行可期
2020年三季度房地产行业投资策略:反转而非反弹,新周期上行可期.pdf
东吴证券_1213_东吴证券“订单簿的温度”系列研究(一):反转因子的精细结构.pdf
全国成交面积预测及土地监测:反转在即,预计3月全国成交面积累计同比增速降幅回升至-27%左右
全国成交面积预测及土地监测:反转在即,预计3月全国成交面积累计同比增速降幅回升至-27%左右.pdf
因为近日很多人在向我咨询有关开关电源设计知识,这里将我撰写的《开关电源原理与设计》一书,希望给设计开关电源的工程师朋友一
反转矩阵:反转矩阵四边形,四边形
计算机:金融科技动态跟踪:多因共振,反转明确.pdf
第十三届蓝桥杯选拔赛scratch:数字反转.pdf
音视频-编解码-多媒体学习中的知识反转效应研究.pdf
因为近日很多人在向我咨询有关开关电源设计知识,这里将我撰写的《开关电源原理与设计》一书,希望给设计开关电源的工程师朋友一
汽车:困境反转 否极泰来
SandBlaster:反转Apple Sandbox SandBlaster是用于反转(反编译)二进制Apple沙箱配置文件的工具。 Apple沙箱配置文件以类似于方案的语言SBPL(沙箱配置文件语言)编写,然后被编译为未记录的二进制格式并发货。 ...