java构造函数_java面试基础知识-java底层知识(平台无关性、查看字节码)

引入:谈谈你对java的理解

1.java的平台无关性

2.GC

3.语言特性(泛型反射)

4.面向对象

5.类库

6.异常处理

Compile Once,Run Anywhere如何实现?

编译期:javac指令,编译java源码生成字节码存入相应的.class文件中

运行期: jvm解析,转换成特定平台(ios或者windows或者Linux)的执行指令

217007e018e8e1ae19063f7c7dea2d7a.png

示例代码:

package 

正常编译后:

afb59dedf230aac2bb4a5de8b59ff6bb.png

会多出来这样的.class文件

374245a759ad4c55fb75459fae1acb09.png

再进一步调用:

28253a6f6b70139f28e86f45c81802e0.png

使用指令javap打开text.class:

5877241eaeff5dcfb6977f8bdb5018a8.png
Compiled 

总结:

java源码首先被转换为字节码,再由不同平台的jvm解析,java语言在不同的平台上不需要重新编译,java虚拟机在执行字节码的时候把字节码转换成具体平台上的机器指令。

为什么jvm不直接将源码解析成机器码去执行呢?

准备工作:每次执行都需要各种检查,都要重新编译重新分析,所以引入了中间字节码,多次执行程序不需要反复编译

兼容性:也可以将别的语言解析成字节码。也可以被jvm执行,增加兼容扩展能力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值