java编译后字节码解析 参考网摘: https://my.oschina.net/indestiny/blog/194260…
今天刚好有同学问了下Java编译后产生的.class文件名的问题,虽然一直都在使用Java做开发,但是之前对编译后产生的.class文件名的规范也基本没做了解过,也真的是忏愧啊!今天无论如何都要总结下.下面是本人今天做的实验   1.创建类ClassA,观察产生的.class文件.目的是测试没有任何继承.实现类以及内部类等情况下产生的.class文件以及命名规则 实验结果: 从下图可以看出,只产生了一个.class文件,文件名为类名.class   2.创建类ClassB,观察产生的.class…
  今天刚好有同学问了下Java编译后产生的.class文件名的问题,虽然一直都在使用Java做开发,但是之前对编译后产生的.class文件名的规范也基本没做了解过,也真的是忏愧啊!今天无论如何都要总结下.下面是本人今天做的实验   1.创建类ClassA,观察产生的.class文件.目的是测试没有任何继承.实现类以及内部类等情况下产生的.class文件以及命名规则 实验结果: 从下图可以看出,只产生了一个.class文件,文件名为类名.class   2.创建类ClassB,观察产生的.cla…
java编译后的文件名字带有$接数字的就是匿名内部类的编译结果,接名字的就是内部类的编译结果 例如:TestFrame$1.class是匿名内部类的编译结果, TestFrame$MyJob.class则是内部类MyJob编译后得到的.使用内部类可以隐藏一些实现的细节, 等等, 还有其他一些好处. 使用匿名类的时候, 要注意代码的可读性…
java编译后的文件名字带有$接数字的就是匿名内部类的编译结果,接名字的就是内部类的编译结果 例如:TestFrame$1.class是匿名内部类的编译结果,TestFrame$MyJob.class则是内部类MyJob编译后得到的. 部署的时候要注意,有时候会将这个文件遗漏,导致正式系统报莫名其妙的500错误.…
一个例子 public class TestString{ public static void main(String[] args){ String a = "a"; String b = a+"b"; String c = "ab"; String d = "a" + "b"; System.out.println(c == d); //true!!!! System.out.println(c ==…
java学一下kotlin,由于用的是同样的jvm,那就说明他们的字节码文件应该是一样的,那么,如果我们能看到编译后的文件,那么学的更快了. 操作 1.打开一个.kt文件 2.在Android Studio或idea的上方,Tools –> Kotlin –> Show Kotlin ByteCodes 3.在kotlin字节码页面中,我们点击左上角的decompile按钮,就可以看到Java代码了…
今天和同事在关于foreach编译后是for循环还是迭代器有了不同意见,特做了个Demo,了解一下. 是啥自己来看吧! public class Demo { public static void main(String[] args) { int[] ints = new int[5]; for (int s : ints) { System.out.println(s); } String[] intss = new String[5]; for (String s : intss) { S…
1.问题引入: 运行一个maven+springmvc+hibernate的项目的时候出现了下边的错误: Caused by: java.io.FileNotFoundException: class path resource [com/zju/iot/config/User.hbm.xml] cannot be opened because it does not exist at org.springframework.core.io.ClassPathResource.getInputS…
java语言的编译期其实是一段不确定的操作过程,因为它可以分为三类编译过程: 1.前端编译:把.java文件转变为.class文件 2.后端编译:把字节码转变为机器码 3.静态提前编译:直接把*.java文件编译成本地机器代码 从JDK1.3开始,虚拟机设计团队就把对性能的优化集中到了后端的即时编译中,这样可以让那些不是由Javac产生的Class文件(如JRuby.Groovy等语言的Class文件)也能享受到编译期优化所带来的好处 Java中即时编译在运行期的优化过程对于程序运行来说更重要,…