5. 配置环境变量

5.1 配置path环境变量

  1. 配置环境变量的原因、目的
    当我们直接在DOS命令中输入javac命令时,会出现一个错误,’javac’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    这说明:windows操作系统没有发现“javac.exe”命令在哪里,这是便需要配置环境变量

  2. 配置path环境变量步骤
    桌面计算机上右键—>属性—>高级系统设置—>环境变量,找到path,鼠标双击;path环境变量当中都是路径,路径和路径之间必须采用“半角的分号”分隔。将JDK下bin文件的路径复制到path中。
    注意:环境变量包括“系统变量”和“用户变量”
    系统变量:范围比较大,系统变量会让计算机所有用户都起作用。
    用户变量:范围比较小,这个变量只是作用于当前用户。

  3. path环境变量的作用
    给windows操作系统指路的。

  4. path环境变量不是java中的机制,是windows操作系统中的机制

  5. 查看编译器版本使用javac -version命令、java虚拟机的版本使用java -version命令

5.2 javac、java命令怎么用

格式:
javac java源文件的路径
java 类名
注意:
java这个命令,后面跟的是“类名”,而绝对不能跟“文件路径”,使用Java命令时,一定要将当前路径切换到class文件的路径上,不然会报错:“错误: 找不到或无法加载主类”

把java源文件直接拖进到DOS命令窗口,那么DOS命令窗口就有这个路径了。 怎么在DOS命令窗口中快速定位到某个路径呢? 打开计算机—>打开一些文件夹—>在地址栏上直接输入cmd回车,这样直接就过去了。

5.3 “java HelloWorld”的执行过程以及原理

第一步:
会先启动JVM(java虚拟机)
第二步:
JVM启动之后,JVM会去启动“类加载器classloader”

类加载器的作用:加载类的。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件。

第三步:
类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装载到JVM当中,
JVM启动 “解释器”将字节码解释为“101010000…”这种二进制码,操作系统执行二进制码和
硬件交互。

默认情况下,类加载器去硬盘上找“字节码”文件的时候,默认从哪找??? 默认情况下类加载器(classloader)会从当前路径下找。 而这就是为啥,java命令必须要把当前路径切换到class文件下的原因,这也引出了一个配置 classpath环境变量。

5.4 其他环境变量

对于Java的JDK所属的环境变量,有一个叫做:

  1. - JAVA_HOME

这个JAVA_HOME目前我们不需要,不配置这个环境变量也不会影响当前java程序的运行。
但是后期学习到JavaWeb的时候需要安装Tomcat服务器,那个时候JAVA_HOME就必须配置

  1. - classpath
  2. 它是给“类加载器”指路的,classpath环境变量不属于windows操作系统,classpath环境变量 隶属于java。这个环境变量在windows中没有,需要新建;配置了classpath=D:\course之后, 类加载器只会去D:\course目录下找“xxx.class”文件,不再从当前路径下找了。

5.5 JDK的一个新特性

java后面直接加java源文件的路径:
这个特性是为了简化开发而提出,但实际上底层的实现原理还是和以前一样的,以上命令在执行过程中,还是会先进行编译,然后再运行。并且以上的运行方式,编译生成的class文件在硬盘上不存在,看不到。

5.6 注释

  1. //单行注释
  2. /*
  3. 多行注释
  4. */
  5. /**
  6. * javadoc注释:这里的注释信息可以自动被javadoc.exe命令解析提取并生成到帮助文档当中。
  7. */

5.7 class和public class的区别

  1. - 一个java源文件中可以定义多个class。每个class中都可以定义一个主方法,但是一般一个程序只有一个主方法
  2. - public的类不是必须的。可以没有。
  3. - 在源文件中只要有一个class的定义,那么必然会对应生成一个class文件。
  4. - public的类可以没有,但如果有的话,public修饰的类名必须和源文件名保持一致。
  5. - public的类有也只能有1个。

5.8 类体中不能直接写输出语句

  1. public class Test5{
  2. //不可以这样,编译就会报错
  3. System.out.println("hello1");
  4. // main方法是程序的入口,一个程序必须要有个主方法,不然编译会报错:无法加载主类
  5. //args是可以改变的,他是一个参数名
  6. public static void main(String[] args){
  7. }
  8. //不可以这样,编译就会报错
  9. System.out.println("hello2");
  10. }