java重要特性:跨平台(平台:操作系统),一次编译,到处运行。
java虚拟机:不跨平台
java环境搭建:
jre:java运行环境。 jre = java虚拟机 + 核心类库(辅助java虚拟机运行的文件)
jdk:java开发工具集。 jdk = jre + java开发工具 (jdk安装路径不能出现中文和空格)
JDK目录分析:
bin目录:存放的是java的开发工具。例如:java.exe 、 javac.exe
java.exe:启动java虚拟机解释并执行指定的class文件。
javac.exe:启动java编译器对指定的java源文件进行编译。
db目录:存放的是jdk7.0附带的一个轻量级的数据库,名字叫做Derby。
include目录:存放的是调用系统资源的接口文件。
jre:java的运行环境。
lib:核心类库。
src.zip:因为java是开源的。这里是java开放出来的原始代码。
编译:javac java源文件
编译过程中,面临的问题:每次编译的时候,都需要写上java源文件的完整路径。烦!
解决方案:如果可以在任意的路径下,都可以找到java的开发工具,那么该问题就解决了。
在控制台写一个可执行文件的文件名 的执行原理:
在控制台写一个可执行文件的文件名,那么系统首选会在控制台当前路径下去搜索是否存在该文件,如果可以找到指定的文件,那么就执行该文件;如果找不到该文件,那么系统还会根据path的环境变量所保存的路径信息下 去搜索是否有指定的文件,如果能找到,那么就执行该文件。
配置path环境变量:
path:将javac所在的路径拷贝到path环境变量中,用;与其他隔开即可。
编译:javac Demo.java
运行:java Demo(Demo是类名,不需要加.class)
path环境变量除了保存我们自己的配置的信息以外,还有系统自带的信息。如果一不小心删除了path环境变量信息,那么就可能导致系统部分功能无法使用。所以要尽量避免修改path环境变量信息。如何避免频繁修改path环境变量?
解决办法:新建一个环境变量保存jdk安装目录会发生变化的部分,然后在path环境变量上引用新环境变量所保存的信息。
1、在系统变量中,新建JAVA_HOME环境变量,值例如D:\JDK\JDK(把会发生变化的路径写入JAVA_HOME的值中)
2、在path变量中,引用JAVA_HOME的值,%JAVA_HOME%\bin;(bin是系统生成的文件夹名,不会发生变化)
需求:临时环境变量
在现实开发中有时候jdk版本的信息只会使用一次或者几次就不再使用了,如果是这种需求,我们一般都是通过set命令配置临时环境变量。临时环境变量就是仅对于当前控制台窗口起作用,窗口一旦关闭,那么配置的临时环境变量信息就会发生消失。
set命令:【注意:但凡是看到set命令设置的环境变量信息,都是临时环境变量信息。】
set 查看所有的环境变量信息
set 环境变量的名字 查看制定的环境变量信息 例如:set path
set 环境变量的名字=路径信息 设置指定的环境变量信息 例如:set path=E:\JDK5.0\bin
set 环境变量的名字=空 清空指定的环境变量信息 例如:set path=
set 环境变量的名字=新路径;%环境变量名% 在指定的环境变量的原有信息前,加入新信息
例如:set path=F:\aa;%path%
第一个hello world例子常见的问题:
1、找不到对应的文件
原因:1、系统中文件后缀名被隐藏了,你的不是java文件而是txt文件;
2、javac编译的时候写错了文件名。
2、找不到或无法加载主类Demo1
原因:java运行的时候写错了类名,注意,class文件的文件名 对应的是java文件中的类名,而不是java文件的文件名。
3、java的代码是严格区分大小写的
4、‘javac’不是内部或外部命令
原因:没有配置path环境变量信息,或者配置错误了。
classpath环境变量:(不建议大家把classpath配置成永久环境变量)
当设置了classpath环境变量时,启动JVM(java虚拟机)的时候,JVM就会根据classpath环境变量所保存的路径信息下,去寻找对应的class文件。(解决以下问题:Demo.class文件在E:\,控制台当前盘符在F:\ ,此时去执行java Demo运行 时找不到class文件的问题)
设置classpath环境变量信息 有分号与无分号的区别:
1、如果配置classpath信息时,没有加上分号,那么JVM仅会在classpath所保存的路径下 去搜索对应的class文件,不会在当前路径下去搜索了;
2、如果配置classpath信息时,加上了分号,那么JVM除了会在classpath所保存的路径下 去搜索对应的class文件 之外,如果能找到对应的class文件,那么就马上运行对应的class文件,否则还会去当前路径下去搜索;
3、把classpath中的分号想象成当前路径,如果分号在指定盘符后(classpath=F:\;),那么先检索指定盘符,在检索当前路径;如果分号在指定盘符前(classpath=;F:\),那么先检索当前路径,再检索指定盘符。若“set classpath=;” 意思就是只检索当前路径。
配置classpath的作用:设置了class文件的路径信息。
main方法:程序的主入口,代码是从主方法上开始执行的;
写法是固定的;
定义一个类中使用;
如果一个类需要独立运行的时候,就需要main方法。