001.谈一谈你对Java平台的理解!
[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,不知道调用的是哪一个方法。
- 多态:父类的引用指向子类的对象。引用变量有两种类型:编译时类型和运行时类型。编译看左,运行看右。
- 当编译时类型与运行时类型不相同时就会出现多态。被声明出来的变量不能访问不存在父类的属性方法。
- 封装:高内聚,低耦合。 里面的内容私有的成员变量、无参和全参构造器、getter与setter方法、重写toString()原本返回类名 + @ +hashCode的值。
- 健壮性:舍弃指针,增加了垃圾回收机制
- 不限平台:java程序实际是运行在JVM上的。
题目属于扩展性:
java高级部分IO
多线程、JVM、网络编程都可涉及。