java 概述
java 程序为什么具有跨平台性
当把java程序编译成Test.class时候,Test.class就可以在Linux,windows,mac上运行。就是因为每个平台上都安装了相应的JVM。
JVM包含在jdk的软件中,可以一起安装。
所以说,java之所以能够做到一次编译,到处运行这么横, 其实功劳归功于JVM。
java virtual machine(JVM)
- jvm 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
- 不同的平台有着不同的JVM
- java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行。
java 运行机制
java程序是不能直接运行的,必须通过编译器将源文件进行编译,如果程序没有错误,生成.class字节码文件。然后通过java命令将.class文件装载到JVM上在各个操作系统上运行。
JDK和JRE
JDK的全称(Java Development kit)java开发工具包
JDK = JRE + java 的开发工具【java, javac, javadoc, javap等】
JDK是提供给java开发人员使用的,其中包含了java的开发工具,也包含了JRE。
JRE (Java Runtime Environment)Java运行环境
JRE = JVM + Java的核心类库[类]
如果向运行开发好了的java程序,只安装JRE就可以了。
所以我们可以这样理解: JDK = JVM + Java的核心类库 + Java的开发工具。
下载JDK
https://www.oracle.com/java/technologies/downloads/
从hello World 开始
publicclassHello{publicstaticvoidmain(String[]args){System.out.println("hello, world~");}}- java 的文件名要和类型一样,否则会报错。
2.代码文件中有中文,需要设置gbk或者gk2312
3.代码更改需要重新编译,才可生效。
开发细节
Java源文件以
.java为扩展名。源文件的基本组成部分是类(class), 如本类中的Hello 类。Java应用程序的执行入口是
main方法。它有固定的书写格式:public static void main(String[]args) {...}Java语言严格区分大小写。
Java方法由一条条语句构成,每个语句以;广结束。
大括号都是成对出现的,缺一不可。[习惯,先写。再写代码]
一个源文件中最多只能有一个
public类(也可以没有public类)。其它类的个数不限。如果源文件包含一个public类,则文件名必须按该类名命名!
也可以将main方法写在非 public类中,然后指定运行非public类,这样入口方法就是非public的main方法
java 中不存在使用
private、protected修饰符来修饰类java编译器生成的.class字节码文件是以java源文件的中的类为单位生成的。也就是说源文件中有多少类,就会生成多少个.class字节码文件。
转义符
public class EscapeChar { public static void main(String[] args){ System.out.println("北京上海广东"); System.out.println("北京\t上海\t广东"); //制表符 System.out.println("北京\n上海\n广东"); //换行符 System.out.println("F:\\学习笔记\\java笔记\\j2se"); //输出 System.out.println("陈平安:\"平平安安才是福\""); //输出双引号 System.out.println("阿良:\"要好好活着\"\r宁姚"); System.out.println("陈平安:\r\n\"平平安安才是福\""); } }\r会将其后边的字符替换掉前面的。假如后边有3个字符,前边有5个字符,将替换前边字符开始位置向后的3个字符。例如:"阿良:\"要好好活着\"\r宁姚"会输出宁姚:"要好好活着"
如果不想替换使用"\r\n"就可以了
文档注释
文档注释可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的程序说明文档,一般卸载类名上方。
/** * @author light * @version 1.0 */publicclassCommitDoc{publicstaticvoidmain(String[]args){//输出文档System.out.println("输出文档")}}@author 和 @version 就是对应的文档标签。
生成对应文档
javadoc -d 文件夹 -xx -yy xxx.java //-xx -yy 表示文档标签文档标签
| 标签 | 描述 | 标签类型 |
|---|---|---|
| @author | 作者标识 | 包、 类、接口 |
| @deprecated | 标识当前API已经过期,仅为了保证兼容性依然存在,以此告之开发者不应再用这个API | 包、类、接口、值域、构造函数、 方法 |
| {@docRoot} | 指明当前文档根目录的路径 | |
| @exception | 标志一个类抛出的异常 | 构造函数、 方法 |
| {@inheritDoc} | 从直接父类继承的注释 | |
| {@link} | 链接到某个特定的成员对应的文档中 | 包、类、接口、值域、构造函数、 方法 |
| {@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | 包、类、接口、值域、构造函数、 方法 |
| @param | 方法的入参名及描述信息,如入参有特别要求,可在此注释 | 构造函数、方法 |
| @return | 对函数返回值的注释 | 方法 |
| @see | 引用,查看相关内容,如类、方法、变量等 | 包、类、接口、值域、构造函数、 方法 |
| @serial | 说明一个序列化属性 | |
| @serialData | 说明通过writeObject( ) 和 writeExternal( )方法写的数据 | |
| @serialField | 说明一个ObjectStreamField组件 | @ |
| @since | 描述文本,API在什么程序的什么版本后开发支持 | 包、类、接口、值域、构造函数、 方法 |
| @throws | 构造函数或方法所会抛出的异常 | 构造函数、 方法 |
| {@value} | 显示常量的值,该常量必须是static属性 | 静态值域 |
| @version | 版本号 | 包、 类、接口 |
对两种标签格式的说明:
- @tag 格式的标签(不被{ }包围的标签)为块标签,只能在主要描述(类注释中对该类的详细说明为主要描述)后面的标签部分(如果块标签放在主要描述的前面,则生成 API 帮助文档时会检测不到主要描述)。
- {@tag} 格式的标签(由{ }包围的标签)为内联标签,可以放在主要描述中的任何位置或块标签的注释中。
Javadoc 标签注意事项:
- Javadoc 标签必须从一行的开头开始,否则将被视为普通文本。
- 一般具有相同名称的标签放在一起。
- Javadoc 标签区分大小写,代码中对于大小写错误的标签不会发生编译错误,但是在生成 API 帮助文档时会检测不到该注释内容。
代码规范
dos命令
dos 原理
当在dos控制台输入命令回车后,dos系统会接受到指令并解析指令,然后执行指令并操作windows操作系统。
常用dos命令
tree 查看所有子目录 cls(苍老师) 清屏exit退出dos md 创建目录 rd 删除目录 copy 拷贝文件 del 删除文件echo输入内容到文件 move 剪切java API文档
java8 中文版
https://www.matools.com/api/java8
11 中文版
https://www.apiref.com/java11-zh/index.html