>[success] # 安装Java
1. 通过官网下载 www.sun.com www.oracle.com
2. 若下载的是安装版,则一路点击下一步安装即可, 若下载的是绿色版,则直接解压即可,**安装的路径中不要有
中文,不要有空格等一些特殊的符号**
3. 下载完成后JDK 目录
| 目录名称 | 说明 |
| --- | --- |
| bin | 该路径下存放了JDK的各种工具命令以及其它的一系列用于开发诊断、分析、调试、管理的工具和命令。javac和java就放在这个目录。 |
| conf | 该路径下存放了JDK的相关配置文件。 |
| include | 该路径下存放了一些平台特定的头文件。 |
| jmods | 该路径下存放了JDK的各种模块。 |
| legal | 该路径下存放了JDK各模块的授权文档。 |
| lib | 该路径下存放了JDK工具的一些补充JAR包。 |
| jre| 在java11开始jdk 文件里面就没有了这个目录,现在鼓励的是通过 jlink 自行构建所需的 runtime,理解成按需导入运行环境需要那些使用的api 按需生成对应运行环境支持api即可,参考文章https://blog.csdn.net/zbr0819/article/details/102793155 |
* **java8 对比 java11**
Java 11 中不再单独提供 JRE,而是将 JRE 的功能合并到了 JDK 中,所以在 Java 11 安装目录下并没有`jre`目录。同时,Java 11 中还引入了模块化系统,因此多了一个`jmods`目录。
| 目录 | Java 8 | Java 11 | 主要内容 |
| --- | --- | --- | --- |
| bin | jdk1.8.0\_x\\bin | jdk-11\\bin | Java 开发工具和命令行工具 |
| include | jdk1.8.0\_x\\include | jdk-11\\include | Java Native Interface (JNI) 头文件 |
| jre | jdk1.8.0\_x\\jre | \- | JRE(Java 运行环境)和 Java 应用程序包 |
| lib | jdk1.8.0\_x\\lib | jdk-11\\lib | Java 类库和支持文件 |
| conf | \- | jdk-11\\conf | JDK 配置文件 |
| legal | \- | jdk-11\\legal | 包含了许可证和版权信息 |
| jmods | \- | jdk-11\\jmods | jmod 文件,Java 模块化系统的打包形式 |
| include.zip | jdk1.8.0\_x\\include.zip | \- | JNI 头文件的压缩包 |
| src.zip | jdk1.8.0\_x\\src.zip | \- | Java 开发工具源码的压缩包 |
| demo | jdk1.8.0\_x\\demo | \- | 演示示例 |
| sample | \- | jdk-11\\sample | 示例代码和演示应用程序 |
| man | jdk1.8.0\_x\\man | jdk-11\\man | JDK 文档的 Unix 手册页 |
>[danger] ##### java 执行运行
1. 开发Java程序,需要三个步骤:**编写程序,编译程序,运行程序**
* 编写程序就是需要安装java 规范编写 后缀为 `java` 的文件
* 使用 `javac` 指令执行 **java文件编译**,将文件转换成字节码,产生`class`文件,其中`class` 作为**交给计算机执行的文件**
* 使用 `java` 指令 用来执行`class`文件程序运行
>[danger] ##### 配置环境变量
为了可以在`cmd`任何地方都可以执行 `java` 和 `javac` 两个指令,需要将两个执行配置到全局环境中,否则就只能在其脚本目录文件执行
**配置方式**
`计算机 => 右击,选择属性 => 高级系统设置 => 高级 => 环境变量 => 系统变量 => 找到Path,
点击编辑 => 将javac.exe所在的路径信息配置到 Path变量值的最前面,加上英文版的分号 => 一路点击确定即可`
* **以前下载的老版本**的JDK是没有自动配置的,而且自动配置的也只包含了4个工具而已,所以我们需要删掉已经配置完毕的,再次重新配置Path环境变量
![](https://img.kancloud.cn/ad/b2/adb2a05d74542f4af1da27b7af6fc7d4_1264x363.png)
以前下载的老版本的JDK是没有自动配置的,而且自动配置的也只包含了4个工具而已,所以我们需要删掉已经配置完毕的,再次重新配置Path环境变量。
配置方式将`JDK安装`在了哪个位置具体位置进行配置,这里设置全局系统环境变量`JAVA_HOME`,在 `path `位置使用变量配置,这样好处使用其他软件时候可以直接配置变量`JAVA_HOME`
![](https://img.kancloud.cn/75/77/7577a97c93a72c8984eacd1d4a809673_783x205.png)
![](https://img.kancloud.cn/da/5e/da5ee64db2528cbd8ed407941c52b479_693x222.png)
`bin `文件中可执行的命令更多
![](https://img.kancloud.cn/1a/d3/1ad3095466383b680b756ed318f890ac_361x514.png)
* **注意现在最新从官网上下载**的`JDK`安装时会自动配置`javac`、`java`命令的路径到Path环境变量中去 ,所以`javac`、`java`可以直接使用
>[danger] ##### win10 失效问题
当电脑重启之后,环境变量失效了。表示操作系统不支持自定义的环境变量。
**步骤**:
* 还是要配置`JAVA_HOME`给以后的相关软件去使用
* 我们可以把java和javac的完整路径配置到PATH当中。**新配置** `JAVA_HOME` 配置 为`C:\JDK\bin` path 为`%JAVA_HOME` 。**老配置**是`C:\JDK` 在path 拼接时候`%JAVA_HOME\bin`
>[danger] ##### 在jdk 中更多指令
1. `java`:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
2. `javac`:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾);
3. `jar`:用于把一组.class文件打包成一个.jar文件,便于发布;
4. `javadoc`:用于从Java源码中自动提取注释并生成文档;
5. `jdb`:Java调试器,用于开发阶段的运行调试。
>[success] # 初识java
1. Java版本`Java SE`、`Java EE`、`Java ME`
* `Java SE ,(Java Platform, Standard Edition)`称之为 **Java平台标准版,是 Java平台的基础是其他两个版本的基础**包含了运行Java应用所需要的**基础环境**和**核心类库**还定义了**基于桌面应用的基础类库**,通过使用这些类库 我们可以去写一些桌面应用
* `Java EE,(Java Platform,Enterprise Edition)`称之为Java平台企业版,Java EE构建在Java SE基础之上,用于构建企业级应用,用于Web方向的网站开发
* `Java ME (Java Platform,Micro Edition)`称之为Java 平台微型版,用于嵌入式消费类电子设备或者小型移动设备的开发。为机顶盒、移动电话和PDA等嵌入式消费电子设备提供的Java解决方案
2. `Java SE`就是标准版,包含标准的`JVM和标准库`,其中 `EE `和 `SE `用的是一套JVM 即java虚拟机,`Java EE`只是在`Java SE`的基础上加上了大量的`API`和库,以便方便开发Web应用、数据库、消息服务等,`ME `比较特殊`SE`无在`ME`上运行,其中`JVM`也是瘦身版本
![](https://img.kancloud.cn/63/37/6337692d4bd34b272438ae0d10720a56_391x201.png)
3. `Java`向下兼容。新的版本只是在原有的基础上添加了一些新的功能而已,因此高版本可以运行低版本代码,但低版本代码不一定能运行高版本(高版本可能用了低版本不支持的api)
>[danger] ##### JDK、JRE、JVM
![](https://img.kancloud.cn/ba/5f/ba5f9287fe594339b7cc187a66f3406e_1634x351.png)
1. `JDK(Java Development Kit)` 称为**Java开发工具**,包含了JRE和开发工具,是开发阶段使用,安装了JDK,就无需再单独安装JRE了,其中的开发工具:**编译工具(javac.exe),打包工具(jar.exe)** 等
2. `JRE全称Java Runtime Environment`即 **java运行环境**,`Jre`大部分都是 C 和 C++ 语言编写的,他是我们在编译包含一些核心类库主要是`java.lang`包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包,简单来说 JRE 就是 ** JVM + 核心类库+运行工具**
二者最大区别在于 如果是开发使用需要安装`JDK` 使用 `JDK `中的一些开发工具,`JDK` 包含了 `JRE` Java 运行环境,仅仅是想运行一个开发好的`Java`程序,计算机中只需要安装`JRE`即可,他们关系`JDK 包含JRE 包含 JVM`,如果只有`Java`源码,要编译成`Java`字节码,就需要`JDK`,因为`JDK`除了包含`JRE`,还提供了**编译器、调试器等开发工具。**
3. JVM全称`Java Virtual Machine` 即**java虚拟机**,不同平台有自己虚拟机因此可以跨平台运行
![](https://img.kancloud.cn/e2/cb/e2cb1244ff2a6b2cce3993b7cd2db501_512x203.png)
>[danger] ##### Java语言跨平台的原理
1. 现在js 运行环境一般都是**v8 引擎**,不同系统环境安装对应的**v8 引擎** 即可在不同环境下运行`js`,java 同理
将其编译为扩展名为 `.class` 的字节码。如果想要**执行字节码文件**,平台上面必须安装`JVM`,`JVM `解释器会将字节码解释成**依赖于平台的机器码**
![](https://img.kancloud.cn/5b/1c/5b1cb59fd03fdce4cb2c5f0ede4fcdde_1714x697.png)
![](https://img.kancloud.cn/c4/2a/c42a38d7aafa687c701864246438f96a_1050x394.png)
- windows -- 环境变量
- Vscode -- 编写java
- 初始java
- java -- 关键字
- 编写第一个java程序
- java -- 注释
- 计算机存储 -- 进制
- java -- 类型
- java -- 变量
- 数字类型
- 布尔类型
- 字符类型
- 类型转换
- 双等比较是什么
- java -- 运算符
- 算数运算符
- 字符串拼接
- 关系/比较运算符
- 自增减运算符
- 逻辑运算符
- 三目运算
- 赋值运算符
- 移位运算符
- 位运算符
- 运算符优先级
- java -- 流程控制语句
- if /else if /if -- 判断
- switch case分支结构
- for -- 循环
- 用双重for循环
- while -- 循环
- do while -- 循环
- 案例练习
- java -- 数组
- 数组的存储
- 数组的增删改查
- 数组的特点
- 数组案例
- 二维数组
- 数组的工具方法
- java -- 方法
- java -- 方法的重载
- java -- 方法的调用流程
- java -- 类方法传参注意事项
- java -- 方法练习案例
- 对比 return break continue
- for each循环
- java -- 基础练习
- java -- 面向对象
- java -- 创建类和对象
- java -- 访问控制符
- java -- 类成员方法
- java -- 构造方法
- java -- this
- java -- 封装
- java -- 对象内存图
- java -- 创建对象案例
- java -- static
- java -- 继承
- super -- 关键字
- java -- 构造块和静态代码块
- java -- 重写
- java -- final
- java -- 多态
- java -- 抽象类
- java -- 接口
- 引用类型数据转换
- 综合案例
- java -- 内部类
- java -- 回调模式
- java -- 枚举类型
- java -- switch 使用枚举
- java -- 枚举方法使用
- java -- 枚举类实现接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 递归练习
- java -- 设计模式
- 单例模式
- java -- 注解
- java -- 元注解
- Java -- 核心类库
- java -- 处理字符串
- Java -- String
- String -- 常用方法
- String -- 正则
- Java -- StringBuilder 和 StringBuffer
- 知识点
- Java -- StringJoiner 字符串拼接
- 练习题
- 字符串的总结
- Java -- 包装类
- Integer
- Double
- Boolean
- Character
- java -- 集合类
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 获取当前时间戳
- Java -- 异常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法