对Java平台的理解

1、跨平台(一次编译到处运行)和GC(垃圾回收机制)二大特点

 JVM屏蔽了操作系统系统和硬件的差异,使得符合Java规范的代码可以运行在JVM中,实现一次编译,到处运行

2、JAVA语言特性

  1. 抽象:屏蔽实现的细节,将复杂的问题抽象化

指令集是对CPU的抽象,文件时对输入、输出设备的抽象,虚拟存储器时对程序存储的抽象,进程是对一个正在运行的程序的抽象,而虚拟机是对整个计算机的抽象(包括操作系统、处理器、程序)  --《深入理解计算机系统》

     2. 面向对象特点(继承,封装,多态) 泛型  Lambda  反射

  •  封装:隐藏类的属性和实现细节,对外提供公共访问方式,提高代码的复用性

封装权限控制符

 

  • 继承:是多态的基础,没有继承就没有多态。 对父类进行扩展
  • 多态:多态是可以把子类对象赋给父类变量,但运行时表现出子类的行为特征。这说明,同一类型的对象在运行时可以表现出不同的行为特征。

《码农翻身》多态理解

继承封装多态通俗理解

3、JRE和JDK

JRE:就是Java运行环境,包含了 JVM,和java类库

JDK:看作JRE的超集,提供了更多工具,比如编译器,各种诊断工具

4、classloader有两种装载class的方式

隐式:运行过程中,碰到new生成的对象,隐式调用classloaderJVM

显示:class.forName()动态加载

类加载过程

1.装载:查找和装入类或接口的二进制数据

2.连接

 (1) 验证:检验装入类或接口的二进制数据的正确性。

 (2) 准备:为静态变量分配存储空间。

 (3) 解析:将常量池内的符号引用替换为直接引用。

3.初始化:激活类的静态变量和静态代码块

类加载器的层次关系:

BootstrapLoader是由C/C++实现,我们无法在程序中获取它的实例,这个装载器负责装载lib目录下的dt.jartools.jarJava核心核心类库。

ExtClassLoader这个装载器负责装载jdk/lib/ext目录下的jar包。

AppClassLoader这个装载器主要负责装载classpath目录下的类。

类的装载遵循“双亲委派”模式

5、Java 是解释执行对吗?

   Java解释执行,这句话不准确,开发的源代码首先通过Javac编译成字节码,然后在运行时,通过虚拟机内嵌的解释器将字节    码转化机器码JVM中提供了JITJust In Time) 编译器也就是动态编译器。JIT能够在运行时将热点代码编译为机器码,这段热点代码就是编译执行,而不是解释执行。

Java分为编译期和运行期

   编译:将源代码编译为以“.class”结尾的字节码文件

   运行期:将字节码文件加载进虚拟机进行解释或者编译执行

   在运行期HotSpot采用混合模式,先解释执行字节码,而后反复执行的热点代码在以方法为单位即时编译

   HotSpot内置了多个即时编译器C1C2.并采用分层编译。热点代码C1编译,热点中的热点C2编译

   解释执行:逐条将字节码编译为机器码在执行(同声传译)

   即时编译:以方法为单位将字节码先编译为机器码在执行(放录音)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值