Java必备知识


JDK和JRE

jdk:java development kit ,java开发工具箱;该套工具箱包含编译、和运行所要使用的所有程序,如:javac、java、jvm
jre:java runtime environment,只负责执行java字节码文件。其不包含javac命令

package和import的作用

package
  • 为了避免命名冲突,Java中引入package关键字用于指定该原文件编译生成字节码文件时所在的包。同时,包名与字节码文件所在的目录是一致的。
  • 一个类名的完整名称是由包名和类名共同组成。同一个包下的类可以直接使用类名互相访问,不同包中的类互相访问必须通过“包名.类名”的方式。
  • 包允许嵌套,但是父包和子包中的类互相访问必须要以完整的包名.类名。
import

要实现不同包之间的类互相访问,必须通过“包名.类名”的方式,但是,Java中可以通过import关键字来简化操作,例如:import com.orical.* 表示com.orical包中的所有类都可以直接使用类名的方式进行访问。

java中常用的包(位于rt.jar包之中)

  • java.lang:java语言核心类,包括Math System Thread String等,这个包不必要使用import,系统自动导入这个包。
  • java.util:(utility,实用的的)Collection ArrayList Set一些常用类
  • java.net:网络相关的类或者接口
  • java.io:输入输出相关的类或者接口
  • java.text:格式化相关的类
  • java.sql:连接数据库相关的类
  • java.awt:(Abstract window toolkits)抽象窗体工具类,常用于图形用户接口的开发(GUI)
  • java.Swing:构建与平台无关的图形界面相关类或接口

包名

包名既是唯一标识符,也是目录

带有Package的类的编译和运行

程序中第一个非注释行为"package 包名",可以将这个类打包到该包下,通常,源码程序也要位于和该包名具有相同结构的目录之下。.java文件可以通过目录结构来组织文件,但是.class文件必须通过package语法来组织文件结构。
javac
/b/c/a.java源码如下

package com.test
public class{
    public void printit("helloWorld!");
}
javac -d . /b/c/a.java

【注】在linux中,将/b/c目录下的a.java文件编译成a.class文件,并将该文件放置于当前目录之下,如果a.java中有package语法,则在该目录下形成包名相同的目录结构/b/c/a.class
java:

java b.c.a

【注】java命令后必须要接完整的类名,即使.class在当前目录下,因为jvm是通过完整名来辨别一个类的,一个.class完整的名字为:包名.类名。即:b.c.a,其同时也表示b/c/a.class,jvm的类加载器自动将b.c.a解释为${CLASSPATH}/b/c/a,这个classpath是环境变量,用户可按需配置。java命令后的所有字符串将被作为.class文件的唯一标识符号,同时结合操作系统中配置的CLASSPATH变量,jvm就能准确找到该类

CLASSPATH的作用

jvm运行java程序时,通过搜寻CLASSPATH中指定的目录来加载java类。
为了简化上述java指令的操作,现在可以将你的项目目录添加到这个CLASSPATH中。