001.谈一谈你对Java平台的理解!

12
[tip type="error" ]

谈谈你对Java平台的理解?“Java是解释执行”,这句话正确吗?

[/tip]

Java本身是一种面向对象的语言,具有两个特性:

  • “书写一次,到处运行”(Write once, run anywhere),跨平台能力;
  • 垃圾收集(GC, Garbage Collection),Java通过垃圾收集器(Garbage Collector)回收分配内存
  • JRE,Java运行环境,包含了JVM和Java类库,以及一些模块等。
  • JDK可以看作是JRE的一个超集,提供了更多工具,比如编译器、各种诊断工具等。

“Java是解释执行”这句话,这个说法不太准确

Java的源代码,首先通过Javac编译成为字节码(bytecode),然后,在运行时,通过 Java虚拟机(JVM)内嵌的解释器将字节码转换成为最终的机器码

但是常见的JVM,比如我们大多数情况使用的Oracle JDK提供的Hotspot JVM,都提供了JIT(Just-In-Time)编译器,也就是通常所说的动态编译器JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。

java类加载机制:加载、连接、初始化、使用、卸载。其中连接又有三个阶段:验证、准备、解析。

java语言的特点:

  • 面向对象(三个特性、类、对象)
    • 类:抽象的描述某一事物
      • 类的提取:在一组相同或类似的对象中,抽取出共性的特征和行为,保留所关注的部分
    • 对象:某一事物具体存在的个体,也叫实例,具有属性和方法。
      • 用类创建对象的过程称为实例化。 类是对象的模板
  • java三大特性:封装、继承、多态。
    • 封装:高内聚,低耦合。 里面的内容私有的成员变量、无参和全参构造器、getter与setter方法、重写toString()原本返回类名 + @ +hashCode的值
      • 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;
      • 低耦合 :仅对外暴露少量的方法用于使用。
    • 继承:多个类有相同的属性和方法,提取到一个类里面,有需要的只需要通过extends关键字继承这个类,这个类称为父类、基类、超类。继承这个类的称为子类。
      • 子类只可以访问父类非私有的成员变量的方法。
      • 单继承和多层继承不能多重继承。原因:A是父类,B与C继承A并重写A的一个方法,D分别继承B与C,不知道调用的是哪一个方法。
    • 多态:父类的引用指向子类的对象。引用变量有两种类型:编译时类型和运行时类型。编译看左,运行看右。
      • 当编译时类型与运行时类型不相同时就会出现多态。被声明出来的变量不能访问不存在父类的属性方法。
  • 健壮性:舍弃指针,增加了垃圾回收机制
  • 不限平台:java程序实际是运行在JVM上的。

题目属于扩展性:

java高级部分IO

多线程、JVM、网络编程都可涉及。