java是什么?
一种编程跨平台面向对象的编程语言
如何实现跨平台:与C/C++不同它可以移至到任何机器上执行,C/C++在不同机器上运行需要重新编译连接,并且基本类型所占字节数在各个机器都不一样,导致程序很难移植。
java基于class字节码,运行在一个套模拟机器的环境中运行,这个虚拟机是java能跨平台的核心,对下层屏蔽了机器间的差异,对上层实现了统一的规则(比如基本数据类型在机器中所占字节数)。
如何实现面向对象:只需要回答虚拟机如何实现,封装,继承,多态即可。具体内容后序会有详解
java虚拟机是什么?
虚拟机是给java运行提供的一个模拟机器的环境,它执行class字节码,甚至语言都不要是java语言,只需要符合class字节码规范就可以执行代码
为什么要了解java虚拟机?
了解java虚拟机很有助于我们理解java这门语言。java语言的实现都是基于虚拟机的,所以理解了虚拟机运行原理对于解bug是很有帮助的,对于基于java的程序优化就更要学习虚拟机了,不了解虚拟机谈优化都是耍流氓
了解java虚拟机虚拟机又能做什么?
举一个面试的小例子
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = "abc";
System.out.println(str1 == str2);
System.out.println(str1 == str2.intern());
System.out.println(str1.intern() == str2.intern());
System.out.println(str3 == str2.intern());
输出结果
那如何解释这段输出呢,如果不了解虚拟机是一定回答不出来的,下面我们分析一下
知其然知其所以然
该如何学java虚拟机?
看书,看规范,多思考,多和同事交流