一. 字节码,数据类型相关
- 字节码文件是跨平台的吗: 是的,java虚拟机主要识别字节码文件,其实现在的java虚拟机已经不是单纯的java的,只要语言满足虚拟机的规范,都可以在这个虚拟机上运行
- class文件中存储的什么: 代码经过编译后生成的一个字节码文件,是一种二进制的类文件,存储了JVM指令
- 说一下你知道的编译器:在编写好代码到运行中间可以分为两种编译器,一个是用来识别各种语言对语言进行转换的前端编译器例如将代码编译为class文件的javaC编译器,javaC编译器是全量编译IDEA默认使用的就是该编译器,还有Eclipse ECJ编译器增量编译,当修改代码时只会增量编译修改的部分,这样就说明了为什么有时候Idea编译运行一个项目比Eclipse慢的原因,**二个是运行字节码文件的后端编译器:**例如JIT也就是我们说的虚拟机可以看为是后端编译器,比如JIT会对反复执行的代码进行编译优化,缓存,这也就说明为什么java代码要进行预热的原因,如果将这个看成是一个缺点的话后续又推出了AOT编译器
- javaC将一个java文件编译为有效字节码文件会有四个步骤: 词法解析—>语法解析—>语义解析—>生成字节码
- 哪些类型对应有Class对象: 除了class以外,还有interface, array, enum, annotation, 基本数据类型,void
- 前++ 后++有什么不同
- Integer 缓存问题,判断两个值相等的Integer对象是否相等,需要确定这个值是否在-127到+128之间,如果不在返回false因为内部有个cache数组
- 字节码指令大致分为9类
- java虚拟机中数据类型分为哪几类:分为基本数据类型与引用数据类型两种,基本数据类型有默认值,而引用类型没有,基本数据类型有8种
- 为什么不把基本数据类型放入堆中: 首先要了解堆跟栈的区别,虽然堆的空间比较大,栈的空间比较小,但是栈比堆的运算速度快,所以将基本数据类型放入栈中,反过来说由于栈的空间小,防止引用类型变量过大,造成溢出,所以将引用类型放入堆空间,实际就是栈管运行,堆管存储
- java中是值传递,还是引用传递: 值传递,值传递是传递实参副本,函数修改不会影响实参;引用传递是传递实参地址,函数修改会影响实参
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)