1 环境变量
1.1 与JAVA相关的三个环境变量
有些环境变量只是为了简化开发流程提高开发效率,可以不设置。环境变量分为:PATH、CLASSPATH、JAVA_HOME。其中CLASSPATH、JAVA_HOME是Java特有的环境变量,PATH的默认变量值为C:\Windows\System32目录。
名称 | 作用对象 | 作用 |
---|---|---|
PATH | 操作系统 | 让操作系统更加快捷地找到并使用这个路径下的命令(应用程序的名字)。 |
CLASSPATH | 类加载器 | 让类加载器明确去哪里寻找.class。 |
JAVA_HOME | 其他程序 | 告诉其他程序或来访机器JDK的位置,多用于网络、WEB等开发。 |
- PATH可类比“C:\Windows\System32中计算器、记事本通过控制台找到并使用”理解,在这里的意义是让操作系统通过PATH可以找到java、javac等指令,来执行它们各自对任意目录下源文件、字节码文件的操作。
- .java文件编译成功后在当前目录生成.class文件,如果CLASSPATH设置为E:\java,类加载器只会到E:\java下寻找.class文件,无法搜索其他目录的.class文件(这个变量通常不设置,默认为".",指当前.java文件所在目录)。
1.2 配置环境变量
1.2.1 在控制台中设置(一次性)
在Linux/Unix中常用,在Windows中不常用。
set XXX=值
set PATH=C:\Program Files\Java\jdk1.X.0_XX\bin
set PATH = 值 [错误的 等号两边不能加空格]
set PATH [意为找到所有以PATH开头的环境变量的值]
set [意为找到所有的环境变量的值]
set CLASSPATH=. [默认可以不写,意为找到所有的环境变量的值]
set PATH=C:\Program Files\Java\jdk1.X.0_XX\bin
或
set CLASSPATH=. [默认可以不写,意为找到所有的环境变量的值]
set JAVA_HOME=C:\Program Files\Java\jdk1.X.0_XX
set PATH=%JAVA_HOME%\bin
- “%%”的意义是取双百分号“%%”中间环境变量名中的路径,如果设置了JAVA_HOME,在PATH中直接使用“%JAVA_HOME%\bin”即可。需要注意的是,Windows10系统的PATH变量要写绝对路径,否则会出现bin目录中只有“java”指令可以使用的情况。
- 环境变量的名字尽量大写(Windows不区分大小写;但是Linux/Unix区分大小写,必须要)。
- 若有多个环境变量路径,其之间使用分号“;”隔开。
1.2.2 添加到“此电脑”属性中(长效)
右键 此电脑–>属性–>高级系统属性–>环境变量,以此修改系统或者用户的PATH路径。
2 第一个Java程序
//定义一个公共的类,类名叫HelloWorld
//class:表示下面要定义的是一个类,class是java中的关键字,创建对象的模板
//HelloWorld:类名,标识符(名词)
//public修饰的类,main方法类名需要和文件名一模一样。一个文件里面最多可以出现1个public修饰的类
//{}:类体
class HelloWorld{
//方法的定义需要三个部分:
//修饰符 + 返回类型 + 方法签名(方法名 + 参数)
//修饰符(形容词):public static
//public static void main(String[] args){}
//public:公共的,表示谁都可以访问的
//static:静态的
//void:表示没有返回类型(方法执行结束之后,返回给我们数据的类型)
//main:方法名,作为程序的入口,程序一旦执行底层只找main方法
//():方法参数,方法执行的过程中,需要我们提供的数据
//String[]:参数,String为官方提供的核心类*,[]表示数组
//args:参数名 标识符
//{}:方法体
//意为定义一个公共的/静态的/没有返回类型的main方法
public static void main(String[] args){
//打印显示内容
//System:Sun公司官方提供的核心类*
//“.”:表示“的”,java中的调用用.表示
//out:表示输出
//println:打印显示一行数据(print line)
//“;”:java中每个语句的结束需要加";"
System.out.println("Hello World : )");
}
}
- *Sun公司官方提供的核心类:查看方法:jdk目录–>src目录
- 修饰符:public、static等,形容词。
- 标识符:类名、方法名、引用等自定义的名词。
- 关键字:官方保留的具有特殊意义的名词。
- 保留字:源码已被官方收编但是还没有赋予意思的名词,属于关键字的一种,比如unit。
- 返回类型:方法执行结束之后,返回给我们的数据。
- 方法参数:方法执行的过程中,需要我们提供的数据。
- 例:中午请你帮我带饭:
调用者:我
执行者:你
执行的方法:带饭
修饰符+返回类型 + 方法签名(方法名 + 参数)
public 饭 带饭(double money){
}
学信网 通过身份证查询一个学生的信息
修饰符 + 返回类型 + 方法签名(方法名 + 参数)
public Student 查询(String id){
}
注册QQ的时候 需要用户提供用户名和密码
修饰符+返回类型 + 方法签名(方法名 + 参数)
public User getUser(String name,String passWord){
}
- 面试题:public static和static public有区别吗
没有区别,但是习惯上将修饰词摆在第一位。当看到修饰符为private,后面的就都不用看了,这样效率更高。
如何在cmd里面编译运行:
1. 打开cmd,此时默认在c盘,如果源文件在E:\课件\HelloWorld.java
2. 需要先切换盘符:E:回车
3. 进入目录:cd 这个源文件所在的文件夹(将所在的文件夹拖拽进来)
4. 编译阶段:javac HelloWorld.java,必须给出扩展名,Windows中可不区分大小写
5. 运行阶段:java HelloWorld,不给出扩展名,因在JVM上运行,所以一定区分大小写
3 软件包结构
包结构 = 操作系统中的目录/文件夹
3.1 目录(包)的作用
- 按照文件的功能、性质进行分类,方便查找
- 给出不同的命名空间,从而让重名的文件可以同时存在
3.2 打包语句
package com.xx.xx;
3.3 打包需要注意的问题
-
打包语句必须将此放在.java源文件的第一行,需要注意的是,打包语句是package,导包语句是import,一个程序中必须有这两种时,打包语句一定在首行。另外导包时需要注意,Java中java.lang包(包含String等)的内容是都不需要导入的,其它必须导入,Java中底层加载的时候就用java.lang,因为省资源。
-
包名(目录/文件名)不能命名为:
- com1-com9:打印机设备
- con:网络设备
- nul:空设备
-
具有包名时控制台调试有所改变:
- 编译阶段:
以前:javac XXX.java
现在:javac -d . XXX.java (这里的“-d”的意思是后面的这个参数将指定目录且指定的目录一定存在;第一个“.”指的是当前目录;如果.java中指定的package位置不存在,本条语句将自动创建包路径的目录) - 运行阶段:
以前:java XXX
现在:java 包结构.xx.xx(如com.xx.xx)
- 编译阶段:
3.4 例子
需求:在桌面写一个程序,定义包名为a.b,且将包编译到E盘根目录下并运行
package a.b;
class Exec110604{
public static void main(String[] args){
System.out.println("Hello World : )");
}
}
4 常用工具命令(非重点)
这些工具命令的应用程序均在jdk–>bin目录下,这里着重介绍四个:java、javac、javadoc、jar。
4.1 java
编译指令
4.2 javac
运行指令
4.3 javadoc
javadoc -d 目录 XXX.java
意为在这个目录(如果没有自动创建)下生成XXX.java的帮助文档(说明书)
注意:
- 能出现在文档中的注释都是标注在公共类、公共类的公共方法、公共变量上的
- 注释的方式只能是“/***/”
4.4 jar
简要说其中一种压缩的语句: jar cvf XXX.jar YYY.class
意为将编译完成的字节码文件YYY.class生成可执行的压缩归档文件XXX,jar
注意:
- 如果想将jar文件改为双击即可执行的应用程序,可查看.jar的压缩包,在META-INF目录下找到“MANIFEST.MF”清单文件,并在文档末尾添加一行“Main-Class: XXX”并在这行下面再另起一个空行,XXX代表主类类名。
- 不过能双击的可执行jar文件是少数,多数不可执行。
4.5 native2ascii
可以将汉字转为对应的ASCII编码