熟悉的环境变量
想要学习JAVA,第一步安装JDK,安装好了配置环境变量,PATH ,JAVA_HOME,CLASSPATH 这三个配置好,就可以开始编码了。
配置环境变量的时候,JAVA_HOME,CLASSPATH这俩个是不必须的。JDK1.5之后CLASSPATH是可以不配置的,JRE会从目录文件夹下加载需要的jar,这也是刚开始的时候会疑惑百度出来的CLASSPATH会让我们添加这样一串:
.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar
那么这么一串有什么用?首先明确2点:
1.在没有配置CLASSPATH环境变量时,java命令在找class文件时是默认在当前目录下寻找的
2.配置过CLASSPATH环境后,java命令是按照CLASSPATH变量中的路径来的寻找class文件的。
上面这一串 .;
是干嘛的呢?可以这么理解:
;
是分割自定义的classpath,这里定义了3个路径,一个是.
,一个是%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar
,.
代表当前路径,%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar
分别指向了dt.jar和tools.jar,分别是指的是编译时候用到的类库,和包含swing的运行环境类库。
不过值得注意的是,jdk9以后,已经没有dt.jar和tools.jar了,在配置classpath的时候要么不配置(从当前路径读取),要么可以根据需要配置路径。这也是为什么JAVA官网明确可以不用配置它的原因了。
JAVA中的Package
关于包网上也有很多关于它的讲解,Think in java 和JAVA核心技术都有关于它的介绍,这里列出我的2点理解。 1.防止名字相同的类产生冲突。 2.方便管理。
例如,两个工程师张三和李四在不知情的情况下写了同一个类 Wwang.java,最后都给了你,这个时候为了防止在工程中出现相同类名的冲突就引入了Package。
注意:定义了包的类,在使用javac
编译的时候,需要在包的最外层进行编译,不然在引入了别的类的java文件编译时会出现找不到符号等问题。
以上是关于现阶段对它们的理解,后期会结合着类加载机制详细记录一下。