AI悦创

V1

2022/10/22阅读:23主题:凝夜紫

03-环境搭建

你好,我是悦创。

原文首发:https://bornforthis.cn/column/Java/chapter01/03.html

0. 摘要

注意: JDK 是 Java 编译和运行的环境。严格来说和游戏还不大一样,游戏相当于是 JRE, 只是 Java 运行的环境。 JDK 相当于是游戏 + 游戏编辑器。JDK 和 JRE 什么具体的区别呢?开始学习的时候不要在意这些细节。 这个小坑我们后面来填一下~

1. 环境搭建

  • 下载安装(JDK)(Java Development Kit)
  • 检测 JDK 安装是否成功
  • 编写运行第一个程序——Hello World
  • 初识 Java 程序
  • 练习题

2. 下载安装

2.1 下载地址

便捷下载:

  • Mac:【下载后,解压即可安装】

jdk-11.0.2_osx-x64_bin.zip

  • Windows:【下载后,解压即可安装】

jdk-11.0.2_windows-x64_bin.zip

2.2 Mac 安装&代码测试

2.2.1 打开安装包

image.png 会弹出如下窗口: image.png

2.2.2 点击图标

image.png 下图是一个标准的安装向导: image.png

2.2.3 点击继续

image.png
image.png

2.2.4 点击安装并输入密码

image.png image.png image.png

2.2.5 安装验证 1「java」

点击启动台>其他>终端

➜  ~ java
用法:java [options] <主类> [args...]
(执行类)
或  java [options] -jar <jar 文件> [args...]
(执行 jar 文件)
或  java [options] -m <模块>[/<主类>] [args...]
java [options] --module <模块>[/<主类>] [args...]
(执行模块中的主类)
或  java [options] <源文件> [args]
(执行单个源文件程序)

将主类、源文件、-jar <jar 文件>、-m 或
--module <模块>/<主类> 后的参数作为参数
传递到主类。

其中,选项包括:

-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
--class-path <目录和 zip/jar 文件的类搜索路径>
使用 : 分隔的, 用于搜索类文件的目录, JAR 档案
和 ZIP 档案列表。
-p <模块路径>
--module-path <模块路径>...
    用 : 分隔的目录列表, 每个目录
    都是一个包含模块的目录。
    --upgrade-module-path <模块路径>...
        用 : 分隔的目录列表, 每个目录
        都是一个包含模块的目录, 这些模块
        用于替换运行时映像中的可升级模块
        --add-modules <模块名称>[,<模块名称>...]
        除了初始模块之外要解析的根模块。
        <模块名称> 还可以为 ALL-DEFAULTALL-SYSTEM,
ALL-MODULE-PATH.
    --list-modules
    列出可观察模块并退出
    -d <module name>
    --describe-module <模块名称>
    描述模块并退出
    --dry-run     创建 VM 并加载主类, 但不执行 main 方法。
    此 --dry-run 选项对于验证诸如
    模块系统配置这样的命令行选项可能非常有用。
    --validate-modules
    验证所有模块并退出
    --validate-modules 选项对于查找
    模块路径中模块的冲突及其他错误可能非常有用。
    -D<名称>
=<值>
    设置系统属性
    -verbose:[class|module|gc|jni]
    启用详细输出
    -version      将产品版本输出到错误流并退出
    --version     将产品版本输出到输出流并退出
    -showversion  将产品版本输出到错误流并继续
    --show-version
    将产品版本输出到输出流并继续
    --show-module-resolution
    在启动过程中显示模块解析输出
    -? -h -help
    将此帮助消息输出到错误流
    --help        将此帮助消息输出到输出流
    -X            将额外选项的帮助输出到错误流
    --help-extra  将额外选项的帮助输出到输出流
    -ea[:<程序包名称>...|:<类名>]
    -enableassertions[:<程序包名称>...|:<类名>]
    按指定的粒度启用断言
    -da[:<程序包名称>...|:<类名>]
    -disableassertions[:<程序包名称>...|:<类名>]
    按指定的粒度禁用断言
    -esa | -enablesystemassertions
    启用系统断言
    -dsa | -disablesystemassertions
    禁用系统断言
    -agentlib:<库名>[
=<选项>]
    加载本机代理库 <库名>, 例如 -agentlib:jdwp
    另请参阅 -agentlib:jdwp=help
    -agentpath:<路径名>[=<选项>]
    按完整路径名加载本机代理库
    -javaagent:<jar 路径>[=<选项>]
    加载 Java 编程语言代理, 请参阅 java.lang.instrument
    -splash:<图像路径>
    使用指定的图像显示启动屏幕
    自动支持和使用 HiDPI 缩放图像
    (如果可用)。应始终将未缩放的图像文件名 (例如, image.ext)
        作为参数传递给 -splash 选项。
        将自动选取提供的最合适的缩放
        图像。
        有关详细信息, 请参阅 SplashScreen API 文档
        @argument 文件
        一个或多个包含选项的参数文件
        -disable-@files
        阻止进一步扩展参数文件
        --enable-preview
        允许类依赖于此发行版的预览功能
        要为长选项指定参数, 可以使用 --<名称>=<值> 或
        --<名称> <值>。
        
➜  ~ 

Java 这个命令是来执行 Java 这个程序的。

2.2.6 安装验证 2「java -version」

➜  ~ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

2.2.7 安装验证 3「javac」

➜  ~ javac
用法: javac <options> <source files>
其中, 可能的选项包括:
  @<filename>                  从文件读取选项和文件名
  -Akey[=value]                传递给注释处理程序的选项
  --add-modules <模块>(,<模块>)*
        除了初始模块之外要解析的根模块; 如果 <module>
                为 ALL-MODULE-PATH, 则为模块路径中的所有模块。
  --boot-class-path <path>, -bootclasspath <path>
        覆盖引导类文件的位置
  --class-path <path>, -classpath <path>, -cp <path>
        指定查找用户类文件和注释处理程序的位置
  -d <directory>               指定放置生成的类文件的位置
  -deprecation                 输出使用已过时的 API 的源位置
  --enable-preview             启用预览语言功能。要与 -source 或 --release 一起使用。
  -encoding <encoding>         指定源文件使用的字符编码
  -endorseddirs <dirs>         覆盖签名的标准路径的位置
  -extdirs <dirs>              覆盖所安装扩展的位置
  -g                           生成所有调试信息
  -g:
{lines,vars,source}       只生成某些调试信息
  -g:none                      不生成任何调试信息
  -h <directory>               指定放置生成的本机标头文件的位置
  --help, -help, -?            输出此帮助消息
  --help-extra, -X             输出额外选项的帮助
  -implicit:{none,class}       指定是否为隐式引用文件生成类文件
  -J<flag>                     直接将 <标记> 传递给运行时系统
  --limit-modules <模块>(,<模块>)*
        限制可观察模块的领域
  --module <module-name>, -m <module-name>
        只编译指定的模块, 请检查时间戳
  --module-path <path>, -p <path>
        指定查找应用程序模块的位置
  --module-source-path <module-source-path>
        指定查找多个模块的输入源文件的位置
  --module-version <版本>        指定正在编译的模块版本
  -nowarn                      不生成任何警告
  -parameters                  生成元数据以用于方法参数的反射
  -proc:
{none,only}            控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...]
        要运行的注释处理程序的名称; 绕过默认的搜索进程
  --processor-module-path <path>
        指定查找注释处理程序的模块路径
  --processor-path <path>, -processorpath <path>
        指定查找注释处理程序的位置
  -profile <profile>           请确保使用的 API 在指定的配置文件中可用
  --release <release>          针对特定 VM 版本进行编译。支持的目标: 67891011
  -s <directory>               指定放置生成的源文件的位置
  -source <release>            提供与指定发行版的源兼容性
  --source-path <path>, -sourcepath <path>
        指定查找输入源文件的位置
  --system <jdk>|none          覆盖系统模块位置
  -target <release>            生成特定 VM 版本的类文件
  --upgrade-module-path <path>
        覆盖可升级模块位置
  -verbose                     输出有关编译器正在执行的操作的消息
  --version, -version          版本信息
  -Werror                      出现警告时终止编译

➜  ~ 

2.2.8 安装验证 4「javac -version」

➜  ~ javac -version
javac 11.0.2

2.2.9 测试安装并运行代码

因为,Mac 没有自带好用的编辑器,所以这里我们先使用 SublimeText 来编写运行。 下载地址:https://www.sublimetext.com/download image.png 选择你需要的系统安装包,下载安装即可。

2.2.10 打开 SublimeText

image.png
image.png

2.2.11 编写代码

public class QuickSand{
 public static void main(String[] args){
  System.out.println("Hello QuickSand!");
 }
}

image.png 这样就编写完成了,我们来保存代码。

2.2.12 保存

保存,这里我们使用快捷键:Command + S 就可以保存了。 image.png 修改我们的保存文件名称,这个文件名称要和我们代码里面的类名一致。后缀名称必须是 .java image.png 保存之后,你会看见代码被 SublimeText 高亮显示了。这个时候 SublimeText 的使命就已经完成了,接下来进入终端,进入保存源代码的目录。

2.2.13 启动终端&进入目标路径&运行代码「javac 就是 java compiler 的缩写」

image.png
image.png
➜  ~ cd Desktop/iMacCoder/JavaCoder 
➜  JavaCoder ls
QuickSand.java
➜  JavaCoder javac QuickSand.java # 进行我们的编译
➜  JavaCoder ls
QuickSand.class QuickSand.java
➜  JavaCoder java QuickSand # 执行我们的 Java 程序,后面不要带任何后缀
Hello QuickSand!
➜  JavaCoder 
  • .java 文件是给人读的
  • .class 是给机器读的,给 java 执行用的

2.2.14 加餐「自己修改一下输出吧!」

public class QuickSand{
 public static void main(String[] args){
  System.out.println("Hello QuickSand! Go Go Go!");
 }
}

还记得如何运行吗?来一起运行吧: image.png

➜  JavaCoder javac QuickSand.java                                     
➜  JavaCoder java QuickSand      
Hello QuickSand! Go Go Go!

2.2.15 加餐「换成中文版本的输出吧!」

public class QuickSand{
 public static void main(String[] args){
  System.out.println("你好,流沙团队! Go Go Go!");
 }
}

运行: image.png

➜  JavaCoder javac QuickSand.java
➜  JavaCoder java QuickSand 
你好,流沙团队! Go Go Go!

2.2.16 小结

  1. 程序要用英文字符来编写;
  2. 大小写要和我敲的一样;
  3. 程序的所有标点符号一律要用英文;
  4. 缩进,为了让代码整洁一致;
  5. 保存的文件名称,一定要和我们的名称是一致的;「大小写都要一样哦!」
  6. 后缀名一定要 .java
  7. 输出的字符呢,可以是任意字符;「也就是,我们用输入法可以输入的字符,都可以放在双引号里面」

2.2.17 故意出错?

2.2.17.1 测试一

如果我们的类名和文件名称不一样,会出现什么问题呢? 当前文件情况:

  • 类名:QuickSand
  • 文件名称:QuickSand.java

修改后:

  • 类名:Quicksand
  • 文件名称:QuickSand.java

image.png 运行情况: image.png

➜  JavaCoder javac QuickSand.java 
QuickSand.java:1: 错误: 类 Quicksand 是公共的, 应在名为 Quicksand.java 的文件中声明
public class Quicksand{
       ^
1 个错误

测试运行之后,恢复成正常代码,我们继续测试。

2.2.17.2 测试二

**把 **public class Quicksand修改为:Public class Quicksandimage.png 运行后:「语法错误,我们目前可以理解为:编译出错,就是语法出现错误的文件。」 image.png

➜  JavaCoder javac QuickSand.java
QuickSand.java:1: 错误: 需要classinterfaceenum
Public class Quicksand
{
^
1 个错误

2.2.17.3 测试三

{} 修改为:「」image.png 运行后: image.png

➜  JavaCoder javac QuickSand.java
QuickSand.java:1: 错误: 非法字符: '\u300c'
public class QuickSand
                      ^
QuickSand.java:5: 错误: 非法字符: '\u300d'

^
QuickSand.java:5: 错误: 进行语法分析时已到达文件结尾

 ^
3 个错误

2.2.17.4 测试四

把双引号修改成中文双引号。 image.png 运行后: image.png

➜  JavaCoder javac QuickSand.java
QuickSand.java:3: 错误: 非法字符: '\u201c'
  System.out.println(“你好,流沙团队! Go Go Go!”);
                     ^
QuickSand.java:3: 错误: 非法字符: '\uff0c'
  System.out.println(“你好,流沙团队! Go Go Go!”);
                        ^
QuickSand.java:3: 错误: 不是语句
  System.out.println(“你好,流沙团队! Go Go Go!”);
                      ^
QuickSand.java:3: 错误: 不是语句
  System.out.println(“你好,流沙团队! Go Go Go!”);
                         ^
QuickSand.java:3: 错误: 需要';'
  System.out.println(“你好,流沙团队! Go Go Go!”);
                             ^
QuickSand.java:3: 错误: 需要';'
  System.out.println(“你好,流沙团队! Go Go Go!”);
                                    ^
QuickSand.java:3: 错误: 不是语句
  System.out.println(“你好,流沙团队! Go Go Go!”);
                                     ^
QuickSand.java:3: 错误: 需要';'
  System.out.println(“你好,流沙团队! Go Go Go!”);
                                       ^
QuickSand.java:3: 错误: 非法字符: '\u201d'
  System.out.println(“你好,流沙团队! Go Go Go!”);
                                        ^
9 个错误

2.3 Windows 安装

2.3.1 打开安装包

image.png
image.png

2.3.2 点击下一步

image.png image.png

2.3.3 等待安装完成即可

image.png
image.png

2.3.4 设置 Java 环境变量

设置 Java 的环境变量,以便我们正常访问。 首先,我们要找到 Java 在电脑上的安装路径。 image.png 复制我们的安装路径:

C:\Program Files\Java\jdk-11.0.2

2.3.5 打开我的电脑>属性

image.png
image.png

2.3.6 点击高级系统设置

image.png image.png

2.3.7 点击环境变量

image.png image.png

2.3.8 点击系统变量>新建

因为,这台电脑是我的私人电脑,所以我可以直接在系统环境中创建我的 Java 环境变量。如果你这台电脑是共享的电脑,你就可以选择为你的这个用户创建 Java 环境变量。 image.png image.png

2.3.9 填写如下数据

image.png
image.png

2.3.10 设置系统环境变量下的 Path 并添加

C:\Program Files\Java\jdk-11.0.2\bin

image.png image.png

2.3.11 验证安装环境

启动命令行:Win + R: image.png image.png 输入 Java 即可: image.png

2.3.12 查看 Java 版本 【java -version】

image.png
image.png

2.3.13 检测 Javac

image.png
image.png

2.3.14 查看 Javac 版本【javac -version】

image.png
image.png

2.3.15 编写代码并测试,打开 Windows 自带的文本编辑器

image.png image.png

2.3.16 编写如下代码

public class QuickSand{
 public static void main(String[] args){
  System.out.println("Hello QuickSand!");
 }
}
image.png
image.png

2.3.17 保存代码【CTRL+S】

image.png
image.png

2.3.18 启动命令行&运行代码

image.png image.png

C:\>cd Users\clela\Desktop\JavaCoder

C:\Users\clela\Desktop\JavaCoder>javac QuickSand.java

C:\Users\clela\Desktop\JavaCoder>dir
 驱动器 C 中的卷是 OS
 卷的序列号是 0AED-8BC3

 C:\Users\clela\Desktop\JavaCoder 的目录

2022/06/06  22:01    <DIR>          .
2022/06/06  22:01    <DIR>          ..
2022/06/06  23:55               428 QuickSand.class
2022/06/06  17:30               115 QuickSand.java
               2 个文件            543 字节
               2 个目录 255,316,078,592 可用字节

C:\Users\clela\Desktop\JavaCoder>java QuickSand
Hello QuickSand!

接下来自行修改输出内容,具体的可以查看 MacOS 安装教程中的内容。2.2.9

2.3.19 作业

尝试用程序输出不同的字符出来,可以尝试不同的长度,中文等。

3. IntelliJ IDEA 集成开发环境的安装和使用

之前,我们是通过文本编辑器「SublimeText」来编写程序,通过终端来编译运行程序。相信你能体会到,这样来回切换是很麻烦且浪费时间的。接下来,我们来下载和安装 IDE。

3.1 下载

选择社区版本即可,如下图: MacOS: image.png Windows: image.png

3.2 MacOS 安装

3.2.1 打开

image.png image.png

3.2.2 拖拽到 Applications

image.png
image.png

3.2.3 IDE「Integrated Development Environment」

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器调试器图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。 你也可以理解为:我们就不需要在命令行、编辑器之间来回切换了。

3.2.4 打开 IDE

截屏2022-06-06 01.01.17.png image.png image.png

3.2.5 新建项目

image.png image.png image.png image.png

3.2.6 新建 Java 文件

image.png image.png image.png image.png

3.2.7 编写代码

public class QuickSand {
    public static void main(String[] args){
        System.out.println("Hello QuickSand!");
    }
}

3.2.8 运行代码

image.png image.png

3.3 Windows 安装

3.3.1 打开安装包

image.png
image.png

3.3.2 点击 Next & 使用默认路径安装

image.png
image.png

3.3.3 点击 Next & 全部勾选

image.png image.png

3.3.4 点击 install

image.png image.png

3.3.5 运行 IDE

image.png
image.png

3.3.6 新建项目

image.png image.png

3.3.7 新建源代码文件

image.png image.png image.png

3.3.8 编写代码

public class QuickSand {
    public static void main(String[] args){
        System.out.println("QuickSand!");
    }
}

3.3.9 运行代码

image.png
image.png

4. 详解 QuickSand 程序

前面我们自己编写编译并运行了我们第一个 Java 程序,虽然代码不多,但是五脏俱全。接下来,我们来分析一下程序各个组成部分。

4.1 类(class)语法元素

public class QuickSand{ }

  • 类——class;
  • QuickSand 是类名,要与文件名一致;
  • public class 是类修饰符,告诉 Java 类名要与代码文件名一致;
  • 大括号内是类的内容——类体、class body;

Java 程序就是由一个个类组成的,我们编写 Java 程序的过程,其实就是编写一个个类,并且往类里面添加我们类里面内容的过程。

4.2 main 方法(main method)语法元素

public class QuickSand{ public static void main(String[] args){ **} ** }

  • public static void 是方法修饰符;
  • **main **方法最为特殊的一点是,它是 Java 程序的入口——就好像游戏的开始按键;
  • 所以:public static void main(String[] args)——main 方法的定义。告诉 Java 这是程序入口,也就是程序开始执行的地方;
  • 小括号内是方法的参数(parameter);
  • String[] args 是方法参数;
  • 大括号内是方法的内容,又称方法体(method body)

一个 class 里面,可以有很多方法。但是很多方法,Java 如何进去(开始)执行呢?——它会找到 public static void main(String[] args) 的 main 方法。

4.3 method 更多表达的是,如何完成一件事情

举个例子:比如我们现在要把大象放进冰箱里,我们怎么做到这件事呢?——分三步:

  1. 打开冰箱门;
  2. 把大象放进冰箱;
  3. 关掉冰箱门;

那把上面的操作映射到 Java 里面呢?

  1. 首先,创建一个方法(方法名):把大象放到冰箱里;
  2. 方法体,就是把大象放进冰箱中一步一步的操作,所对应的代码,这样我们就有了方法;
  3. 它有一个名字,也有完成这件事情的一步一步的步骤,这两个组合起来就完成了特定的事情——这就叫做一个方法。

接下来,我们来看看 main 方法的一个方法体。

4.4 System.out.println

public class QuickSand{ public static void main(String[] args){ System.out.println("Hello QuickSand!"); } }

  • println:print line
  • System.out.println:是 Java 平台提供的类库的内容(Java 提供的内置功能)。可以将内容输出到标准输出,在我们的例子里,就是命令行(command line)
  • 小括号里的内容还是参数(parameter)。
  • 没有参数的情况下,System.out.println()会输出一行空行,也就是类似于我们敲下一个回车。

4.5 字符串

public class QuickSand{ public static void main(String[] args){ System.out.println("Hello QuickSand!"); } }

  • 在 Java 里,双引号引起来的内容叫做一个字符串。
  • 字符串不是语法内容,可以写任意字符。

4.6 初识 Java 程序

4.6.1 初识 class

  • Java 语言中的一等公民,Java 程序就是一个个的类组成的
  • 类由修饰符,类名和类的内容组成。
  • 类名必须与保存类源文件的文件名相同

4.6.2 初识 main 方法

  • main 方法是 Java 程序执行的入口。
  • 方法由方法修饰符,方法名,参数列表和方法体等组成。

4.7 关键知识点

  • class 后面的名字是类名;
  • 类名必须与源文件的文件名相同,文件名后缀必须是小写 java;
  • main 方法是 Java 程序执行的入口。

5. 学员提问

老师你好, 是这样的,我的 mbp 重新装了系统,格式化所有磁盘重装的那种,然后我跟你的课程一起学一起敲,同时我自己有个仓库保存这些代码,我也把课程的源代码: LetsJava 克隆下来了,重装之后我重新下了idea的社区版,开了两个窗口,一边是我自己的仓库,一边是LetsJava,然后两个窗口行为不一: 1.LetsJava一切正常,重新设置了jdk之后即可运行(我还是装的之前的jdk 8) 2.我自己的代码就不一样了,首先是java文件的图标都变了,不再有java那个浅蓝色圆圈包裹的C的图标,同时package路径的颜色不对,也没有了run,一切都不对,糟糕透了 仔细对比之后我发现我的代码和你的代码有两个不同的地方: 1. 你的代码有4样:.idea code.iml out src 2. 而我的我只有一样:src 同时我自己新建的项目就能正常的被idea识别并运行,因此我找到了原因:是因为没有idea的配置文件,确切的说是当初我第一次敲的时候是肯定有的,只是我把它们加到了.gitignore中,提交的时候没有一并提交到仓库中,导致了我这个仓库中的代码没法被idea识别和运行!!!!! .idea code.iml out,前两个是配置文件,后一个是编译之后的.class文件,这个课程里你说过我记得,疑问在于 1. 实际项目中,这3个文件是如何处理的?都要提交吗?还是只提交.idea code.iml即可,因为out能编译生成 2. 如果都不提交,比如我这个就没提交,那此时应该在idea中如何操作让idea帮我们重新生成配置文件好继续进行开发工作? 我问题有点多,还望老师不吝赐教,感谢感谢!

AI悦创·编程一对一

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh

C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh

分类:

后端

标签:

Java

作者介绍

AI悦创
V1

编程一对一教学,微信:Jiabcdefh