第一章 Java简介
一、Java语言的特点
1. 平台无关性
用Java语言编写的程序可以不经改动(或很少改动)就可以在不同的硬件平台和操作系统上执行.Java编译器所生成的字节码运行于Java虚拟机(JavaVirualMachine,JVM)上,这是实现Java平台无关性的关键.
2. 面向对象
Java是一种面向对象编程语言,实现了面向对象编程的三大特性:封装、继承、多态.
3. 多线程
Java语言提供对多线程的语言级支持. 这一点优于C++, C++没有内置的多线程, 必须调用操作系统的多线程编程接口.
4. 安全
Java不支持C语言的指针操作,避免了指针访问内存带来的不安全性.Java语言能够自动搜集并清除“内存垃圾”,并提供字节码校验和文件访问限制等安全机制.
5. 动态
Java程序的基本组成单元是类,各个类是独立编译、动态加载的,运行哪个类就加载哪个类,而非一次性的把程序中所有类都加载.这样Java可以动态地维护类库,从而避免像C++类库的静态联编那样,改变一个类其他所有类都要重新编译链接.Java的方法调用在默认情况下是动态绑定的(也就是运行时再绑定),这对于实现多态比较便利.
二、Java程序的分类
1. Java应用程序(JavaApplication)
使用Java语言开发的,在电脑上独立运行的程序.
2. Applet小程序(JavaApplet)
内嵌于网页文件中,由浏览器来执行的一小段Java代码.
3. Servlet小程序(JavaServlet)
用Java语言开发的程序,由Web服务器调用,运行于Web服务器上,运行结果生成HTML文件,由服务器返还给浏览器.在Servlet的基础上进行封装就得到JSP动态网页开发技术.
三、Java虚拟机
Java虚拟机(JVM)是在物理计算机中用软件模拟的一种抽象计算机,是Java平台独立性的基础.
- Java编译器将Java源程序编译成字节码,JVM用于执行字节码,从用户的角度看就好像是Java虚拟机在运行程序.
- 由于字节码具有统一的标准与格式,在不同平台上编译生成的字节码是相同的,因而可以被各个平台上的JVM所接受,从而实现了跨平台运行.
- JVM的解释器负责将每一条字节码都编译成当前硬件平台的可执行机器码,然后交给硬件平台执行.
JVM执行字节码,分三个阶段:
- 字节码装入:由类装配器(classloader)完成.
- 字节码校验:用于检查字节码有无错误及非法操作.
- 字节码运行:通过校验后将字节码翻译成机器码执行.
四、Java源程序的构成
1 | class Hi{ |
- Java程序以类为基本单元,每个Java程序由一个或若干个类组成,每个类有自己的变量和方法.
- 每个Java程序有且仅有一个包含public static void main(String args[])方法的类,这个类称为主类,这个方法称为main方法.
Java程序总是从主类的main方法开始执行. - 可以将每个类放入不同的源文件,也可以将若干个类放入同一个源文件.
Java源文件命名规则如下:
- 如果源文件中有多个类,那么只能有一个类是public类(定义时用public修饰的类).
- 如果有一个类是public类,那么源文件的名字必须与这个类名字相同,扩展名是.java.
- 源文件中可以没有public类,这种情况下源文件可以随意起名,扩展名是.java就可以.
五、Java程序的开发步骤
第一步
编写源程序: 在该程序中定义了名为HelloWorld的public类, 把程序保存在同名的文件中, 即 HelloWorld.java
1 | public class HelloWorld{ |
第二步
将编写好的Java源程序进行编译, 生成字节码, 每个类的字节码会单独保存在一个文件中, 文件名是类名, 后缀为.class
, 称为字节码文件.
该步骤的命令:javac HelloWorld.java
, javac
是编译命令, 后面跟着java源文件名
, 带.java
后缀.
如果编译不出现错误, 将得到一个名为HelloWorld.class
的文件, 是类HelloWorld的字节码文件, 否则修改程序再编译, 直至编译成功.
1 | javac HelloWorld.java |
第三步
用Java虚拟机执行字节码.
该步骤命令:java HelloWorld
, java
是执行字节码命令, 后面跟着主类名, 不带后缀, 不是HelloWorld.class字节码文件名.
运行结果是在终端设备输出:Hello,World!
注意:Java解释器后面跟随的HelloWorld是主类名!
1 | java HelloWorld |
当一个Java程序由若干个Java源文件组成时, 编译方法有如下几种:
- javac后面跟源文件列表, 文件名之间用空格隔开. 如果源文件不是位于当前路径, 需要用全路径文件名;
- 将各个源文件放在一个目录下, 然后执行命令:
javac *.java
每个Java类编译完成后生成一个class文件, 文件名与类名相同, 后缀是.class
. 当修改某个类时, 只需重新编译该类即可, 不必重新编译其它类.
六、配置JDK环境变量
- JAVA_HOME:
C:\ProgramFiles\Java\jdk-8.0.101
- PATH:
%JAVA_HOME%\bin
- CLASS_HOME:
.;%JAVA_HOME%\lib