1、java语言特性
-
跨平台/可移植 (JVM机制)
- Java程序并没有和底层的操作系统直接交互,java程序实际上运行在JVM当中,JVM与操作系统交互,不同的操作系统中必须安装不同版本的JVM。
- 在可移植性方面表现非常好,一次编译,到处运行。
- 但是为了达到可移植,必须提前在操作系统中安装JRE,JRE有了之后才会有JVM。(JVM不能单独安装)
-
开源、免费、纯面向对象
-
java支持多线程
-
自动垃圾回收机制(GC机制)
2、JDK、JRE、JVM
-
JDK【Java开发工具箱】
-
JRE【Java的运行时环境】
-
JVM【Java虚拟机】
三者之间的关系: JDK 中包含JRE,JRE中包含JVM。
3、java分为3大块
-
JavaSE(J2SE)【Java标准版】:
基础,无论是以后走EE还是ME,SE是必须要精通的。 J2SE是SUN公司为java程序员准备的一套“基础类库”,这套基础类库学习之后,可以完成最基本的操作, 例如,文件的读写、线程的控制....
-
JavaEE(J2EE)【Java企业版】:
这是SUN公司为程序员专门准备的一套“类库”,这套类库可以协助程序员完成企业级软件的开发 企业级软件:OA办公系统、进销存系统、超市系统.......
-
JavaME(J2ME)【Java微型版】
这是SUN公司为java程序员专门准备的另一套“类库”,这套类库可以协助程序员完成微型设备的嵌入式开发, Java最初就是做微型设备嵌入式开发的。
4、java命令
- javac 源文件路径:编译文件
- java 类名:运行文件
- native2ascii 回车 输入文字:将文字转换成unicode编码形式
5、java的编译与运行
-
编译阶段
-
在硬盘的某个位置创建一个xxx.java源文件
-
打开源文件,在该文件当中编写符合java语法的源程序,然后保存。
-
使用javac命令对java源程序进行编译(编译语法格式:打开DOS命令窗口,输入:javac 源文件路径)
- 编译通过:在硬盘上生成一个或者多个字节码文件【xxx.class】
- 编译失败:说明源程序某个位置不符合java语法格式。
注意
- 源文件路径可以是绝对路径,也可以是相对路径。
- 编译之后,其实java源文件删除不会影响程序的执行。
-
-
运行阶段
- 打开命令窗口,在命令窗口中使用java命令运行java程序,语法格式:java 类名(类名不是路径)
执行原理
- java命令执行会启动:JVM
- JVM启动之后,马上启动“类加载器-Class Loader”
- ClassLoader负责去硬盘的“某个位置”上搜索“类名.class”字节码文件。
- 找到了这个.class文件之后将.class文件转换成"二进制",操作系统可以直接识别二进制, 操作系统执行二进制码和底层的硬件平台进行交互。(若找不到这个.class文件,则报错)
注意:java命令必须在.class文件目录下执行
编译和运行可以在不同的操作系统中完成
6、java的类
假设硬盘上有一个文件,叫做Hello.class,那么类名就叫做:Hello 假设硬盘上有一个文件,叫做Student.class,那么类名就叫做:Student 假设硬盘上有一个文件,叫做User.class,那么类名就叫做:User 假设硬盘上有一个文件,叫做Product.class,那么类名就叫做:Product
7、java的注释
-
单行注释
// 注释内容 -
多行注释:
/* 注释内容 */ -
javadoc注释:会被javadoc.exe工具提取解析并生成帮助文档
/** *注释内容 *注释内容 */
注释不会被编译到.class字节码文件中
8、classpath的配置
默认情况下,ClassLoader从当前路径下加载xxx.class字节码文件,当然,也可以让ClassLoader去某个指定的路径下加载字节码文件,这时需要配置环境变量classpath
- classpath环境变量属于java语言中的环境变量,不属于windows操作系统【PATH环境变量属于操作系统】
- classpath是给ClassLoader类加载器指路的。
- 设置这样的环境变量:classpath=D:\course\JavaProjects\02-JavaSE\day02
- 打开dos命令窗口在任意位置,都可以执行:java HelloWorld
- classpath环境变量没有配置的话,类加载器默认从当前路径下找字节码文件,当classpath环境变量配置为某个指定的路径之后,类加载器只去指定的路径当中加载字节码文件。
- 综上所述,不配置classpath时,类加载器会自动从当前路径下加载class字节码文件。所以,每一次执行.class程序的时候,需要在DOS命令窗口中先切换到.class字节码文件所在的路径下,然后运行。
- 当然,classpath也可以这样配置:classpath=.
9、public class和class的区别
-
一个java源文件当中可以定义多个class
-
一个java源文件当中public的class不是必须的
-
一个class会定义生成一个xxx.class字节码文件
-
一个java源文件当中定义公开的类的话,只能有一个,并且该类名称必须和java源文件名称一致。
-
每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:java B, 想执行X.class当中的main方法:java X
-
注意:当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法。没有主方法会出现运行 阶段的错误: D:\course\JavaProjects\02-JavaSE\day02>java Hello 错误: 在类 B 中找不到主方法, 请将主方法定义为: public static void main(String[] args)
10、java的SE类库
java程序中SUN提供了一套庞大的类库,java程序是基于这套基础的类库来进行开发的。
SE类库的字节码路径:D:\JDK\jdk1.8.0_181\jre\lib\rt.jar\java\lang
SE类库源码路径:D:\JDK\jdk1.8.0_181\src.zip\java\lang