1.第三代语言:高级语言
- C、Pascal、Fortran面向过程的语言
- C++面向过程/面向对象
- Java跨平台的纯面向对象的语言
- .NET跨语言的平台
- Python、Scala…
2. java语言的特点
(1)面向对象
- 两个基本概念:类,对象
- 三大特性:封装,继承,对呕吐
(2) 健壮性
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针,内存的申请与释放等),提供了一个相对安全的内存管理和访问机制
(3)跨平台性 - 跨平台性:通过 java 语言编写的应用程序在不同的系统平台上都能运行。
- 原理: 只要在需要运行java应用程序的操作系统上,先安装一个java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责java程序在该系统中的运行。
3.java两大核心机制
- java 虚拟机(Java Virtual Machine)
- 垃圾回收机制 (Garbage Collection)
JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
核心机制—垃圾回收
- 不再使用的内存空间应回收—— 垃圾回收。
- 在C/C++等语言中,由程序员负责回收无用内存。
- Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
- 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
- Java程序还会出现内存泄漏和内存溢出问题吗?Yes!
4.JDK,JRE,JVM的关系
5. 第一个小程序
public class Test{
public static void main(String args[]){
System.out.println("Hello Meng!");
System.out.println("Welcome to java!");
}
}
一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名。
6.面试问题
(1)java语言的特点是什么?
(2)System.out.println() 与Sys.out.print()的区别是是什么?
- System.out.println(); 打印完后,会换行
- System.out.print(); 打印完后,不会换行
(3)一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制
- 可以。但最多只有一个类声明为public,与文件名相同
(4)Something类的文件名叫OtherThing.java
class Something {
public static void main(String[] something_to_do) {
System.out.println(“Do something …”);
}
}
这个很明显。
答案: 正确。从来没有人说过Java的class名字必须和其文件名相同。但public class的名字必须和文件名相同。
(5)为什么要设置path(或者说,设置path的目的)
目的是为了在控制台的任何文件路径下,都可以调用jdk指定目录的下的所有指令
(6)JDK,JRE和JVM的关系是什么?
JDK包含JRE,JRE包含JVM.
(7)GC是什么? 为什么要有GC
答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,
忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
(8)垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收
答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。
当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。