08 2019 档案
摘要:Java反射学问很深,这里就浅谈吧。如果涉及到方法内联,逃逸分析的话,我们就说说是什么就好了。有兴趣的可以去另外看看,我后面可能也会写一下。(因为我也不会呀~) 一、Java反射是什么? 反射的核心是JVM在运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁
阅读全文
摘要:一、Java异常 在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,例如用户的坏数据、试图打开一个不存在的文件等。为了能够及时有效地处理程序中的运行错误,Java 专门引入了异常类。 二、Java常见异常分类 三、为什么产生异常 在 Java 中一个异常的产生,主要有
阅读全文
摘要:这一节打算从“方法调用”的主题进行分析。 方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不设计方法内部的具体运行过程。 一、概念 解析调用:所有方法调用中的目标方法在Class文件里都是一个常量池中的引用,在类加载的解析阶段,会将其中一部分符号
阅读全文
摘要:Java虚拟机是如何加载Java类的? 这个问题也就是面试常问到的Java类加载机制。在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样。 tonight ! 我们把它映射到实战里,看看如何用代码说明这个流程。 ready! go! 在这之前
阅读全文
摘要:这里先引出Java的8大基本类型。直接上图吧。 可以看到,除了boolean和char类型之外,越往下的类型的值域是包含以上的值域的。因此,从上面的基本类型转换成下面的基本类型,无需强制转换。关于它们的默认值,在内存中保存的都是0。 对于char类型,菜鸟喜鹊有些感悟,就是char类型转成int类型
阅读全文
摘要:这是一篇修改class文件的文章。注释并不完全,要抓住这次练习的目的: boolean在虚拟机中是以何种方式解读的 好的,开始我的表演 1.安装asmtools.jar(本文尾部有步骤) 2.编写一个java文件,并编译,执行 2.1 Foo.java 1 public class Foo { 2
阅读全文
摘要:问题一:Java与C++区别 1.Java需要运行时环境,包括Java虚拟机以及Java核心类库等。 2.C++无需额外的运行时,通常编译后的代码可以让机器直接读取,即机器码 问题一:Java为什么要在虚拟机运行? 1.一次编译,到处运行。 这里涉及到一个概念:字节码。 Java字节码指的是设计一个
阅读全文

浙公网安备 33010602011771号