跳至主要內容

03-环境搭建

AI悦创原创Java体系课Java体系课大约 20 分钟...约 6041 字

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.zipopen in new window

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

jdk-11.0.2_windows-x64_bin.zipopen in new window

2.2 Mac 安装&代码测试

2.2.1 打开安装包

image.png

会弹出如下窗口:

image.png

2.2.2 点击图标

image.png

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

image.png
image.png

2.2.3 点击继续

image.png
image.png

2.2.4 点击安装并输入密码

image.png
image.png
image.png
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-DEFAULT, ALL-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 版本进行编译。支持的目标: 6, 7, 8, 9, 10, 11
  -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/downloadopen in new window

image.png
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
image.png

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

2.2.12 保存

保存,这里我们使用快捷键:Command + S 就可以保存了。

image.png
image.png

修改我们的保存文件名称,这个文件名称要和我们代码里面的类名一致。后缀名称必须是 .java

image.png
image.png

保存之后,你会看见代码被 SublimeText 高亮显示了。这个时候 SublimeText 的使命就已经完成了,接下来进入终端,进入保存源代码的目录。

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

image.png
image.png
~ cd Desktop/iMacCoder/JavaCoderJavaCoder 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
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

运行情况:

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 Quicksand

image.png
image.png

运行后:「语法错误,我们目前可以理解为:编译出错,就是语法出现错误的文件。」

image.png
image.png
JavaCoder javac QuickSand.java
QuickSand.java:1: 错误: 需要class, interfaceenum
Public class Quicksand{
^
1 个错误
2.2.17.3 测试三

{} 修改为:「」

image.png
image.png

运行后:

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

运行后:

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
image.png
image.png

2.3.3 等待安装完成即可

image.png
image.png

2.3.4 设置 Java 环境变量

设置 Java 的环境变量,以便我们正常访问。

首先,我们要找到 Java 在电脑上的安装路径。

image.png
image.png

复制我们的安装路径:

C:\Program Files\Java\jdk-11.0.2

2.3.5 打开我的电脑>属性

image.png
image.png

2.3.6 点击高级系统设置

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

2.3.7 点击环境变量

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

2.3.8 点击系统变量>新建

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

image.png
image.png
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
image.png
image.png

2.3.11 验证安装环境

启动命令行:Win + R:

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

输入 Java 即可:

image.png
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
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
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
image.png

Windows:

image.png
image.png

3.2 MacOS 安装

3.2.1 打开

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

3.2.2 拖拽到 Applications

image.png
image.png

3.2.3 IDE「Integrated Development Environment」

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

3.2.4 打开 IDE

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

3.2.5 新建项目

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

3.2.6 新建 Java 文件

image.png
image.png
image.png
image.png
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
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
image.png
image.png

3.3.4 点击 install

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

3.3.5 运行 IDE

image.png
image.png

3.3.6 新建项目

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

3.3.7 新建源代码文件

image.png
image.png
image.png
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悦创【二维码】

AI悦创·编程一对一

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

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

方法一:QQopen in new window

方法二:微信:Jiabcdefh

上次编辑于:
贡献者: AndersonHJB,AI悦创
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度