03-环境搭建
0. 摘要
注意: JDK 是 Java 编译和运行的环境。严格来说和游戏还不大一样,游戏相当于是 JRE, 只是 Java 运行的环境。 JDK 相当于是游戏 + 游戏编辑器。JDK 和 JRE 什么具体的区别呢?开始学习的时候不要在意这些细节。
这个小坑我们后面来填一下~
1. 环境搭建
- 下载安装(JDK)(Java Development Kit)
- 检测 JDK 安装是否成功
- 编写运行第一个程序——Hello World
- 初识 Java 程序
- 练习题
2. 下载安装
2.1 下载地址
- Mac 下载链接:https://www.oracle.com/java/technologies/downloads/#jdk18-mac
- Windows 下载链接:https://www.oracle.com/java/technologies/downloads/#jdk18-windows
便捷下载:
- Mac:【下载后,解压即可安装】
- Windows:【下载后,解压即可安装】
jdk-11.0.2_windows-x64_bin.zip
2.2 Mac 安装&代码测试
2.2.1 打开安装包
会弹出如下窗口:
2.2.2 点击图标
下图是一个标准的安装向导:
2.2.3 点击继续
2.2.4 点击安装并输入密码
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/download
选择你需要的系统安装包,下载安装即可。
2.2.10 打开 SublimeText
2.2.11 编写代码
public class QuickSand{
public static void main(String[] args){
System.out.println("Hello QuickSand!");
}
}
这样就编写完成了,我们来保存代码。
2.2.12 保存
保存,这里我们使用快捷键:Command + S 就可以保存了。
修改我们的保存文件名称,这个文件名称要和我们代码里面的类名一致。后缀名称必须是 .java
保存之后,你会看见代码被 SublimeText 高亮显示了。这个时候 SublimeText 的使命就已经完成了,接下来进入终端,进入保存源代码的目录。
2.2.13 启动终端&进入目标路径&运行代码「javac 就是 java compiler 的缩写」
➜ ~ 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!");
}
}
还记得如何运行吗?来一起运行吧:
➜ 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!");
}
}
运行:
➜ JavaCoder javac QuickSand.java
➜ JavaCoder java QuickSand
你好,流沙团队! Go Go Go!
2.2.16 小结
- 程序要用英文字符来编写;
- 大小写要和我敲的一样;
- 程序的所有标点符号一律要用英文;
- 缩进,为了让代码整洁一致;
- 保存的文件名称,一定要和我们的类名称是一致的;「大小写都要一样哦!」
- 后缀名一定要
.java
; - 输出的字符呢,可以是任意字符;「也就是,我们用输入法可以输入的字符,都可以放在双引号里面」
2.2.17 故意出错?
2.2.17.1 测试一
如果我们的类名和文件名称不一样,会出现什么问题呢?
当前文件情况:
- 类名: QuickSand
- 文件名称: QuickSand.java
修改后:
- 类名: Quicksand
- 文件名称: QuickSand.java
运行情况:
➜ JavaCoder javac QuickSand.java
QuickSand.java:1: 错误: 类 Quicksand 是公共的, 应在名为 Quicksand.java 的文件中声明
public class Quicksand{
^
1 个错误
测试运行之后,恢复成正常代码,我们继续测试。
2.2.17.2 测试二
把 public class Quicksand
修改为:Public class Quicksand
。
运行后:「语法错误,我们目前可以理解为:编译出错,就是语法出现错误的文件。」
➜ JavaCoder javac QuickSand.java
QuickSand.java:1: 错误: 需要class, interface或enum
Public class Quicksand{
^
1 个错误
2.2.17.3 测试三
把 {}
修改为:「」
。
运行后:
➜ JavaCoder javac QuickSand.java
QuickSand.java:1: 错误: 非法字符: '\u300c'
public class QuickSand「
^
QuickSand.java:5: 错误: 非法字符: '\u300d'
」
^
QuickSand.java:5: 错误: 进行语法分析时已到达文件结尾
」
^
3 个错误
2.2.17.4 测试四
把双引号修改成中文双引号。
运行后:
➜ 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 打开安装包
2.3.2 点击下一步
2.3.3 等待安装完成即可
2.3.4 设置 Java 环境变量
设置 Java 的环境变量,以便我们正常访问。
首先,我们要找到 Java 在电脑上的安装路径。
复制我们的安装路径:
C:\Program Files\Java\jdk-11.0.2
2.3.5 打开我的电脑>属性
2.3.6 点击高级系统设置
2.3.7 点击环境变量
2.3.8 点击系统变量>新建
因为,这台电脑是我的私人电脑,所以我可以直接在系统环境中创建我的 Java 环境变量。如果你这台电脑是共享的电脑,你就可以选择为你的这个用户创建 Java 环境变量。
2.3.9 填写如下数据
2.3.10 设置系统环境变量下的 Path 并添加
C:\Program Files\Java\jdk-11.0.2\bin
2.3.11 验证安装环境
启动命令行:Win + R:
输入 Java 即可:
2.3.12 查看 Java 版本 【java -version】
2.3.13 检测 Javac
2.3.14 查看 Javac 版本【javac -version】
2.3.15 编写代码并测试,打开 Windows 自带的文本编辑器
2.3.16 编写如下代码
public class QuickSand{
public static void main(String[] args){
System.out.println("Hello QuickSand!");
}
}
2.3.17 保存代码【CTRL+S】
2.3.18 启动命令行&运行代码
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 下载地址:https://www.jetbrains.com.cn/idea/download/#section=mac
- Windows 下载地址:https://www.jetbrains.com.cn/idea/download/#section=windows
选择社区版本即可,如下图:
MacOS:
Windows:
3.2 MacOS 安装
3.2.1 打开
3.2.2 拖拽到 Applications
3.2.3 IDE「Integrated Development Environment」
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
你也可以理解为:我们就不需要在命令行、编辑器之间来回切换了。
3.2.4 打开 IDE
3.2.5 新建项目
3.2.6 新建 Java 文件
3.2.7 编写代码
public class QuickSand {
public static void main(String[] args){
System.out.println("Hello QuickSand!");
}
}
3.2.8 运行代码
3.3 Windows 安装
3.3.1 打开安装包
3.3.2 点击 Next & 使用默认路径安装
3.3.3 点击 Next & 全部勾选
3.3.4 点击 install
3.3.5 运行 IDE
3.3.6 新建项目
3.3.7 新建源代码文件
3.3.8 编写代码
public class QuickSand {
public static void main(String[] args){
System.out.println("QuickSand!");
}
}
3.3.9 运行代码
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 更多表达的是,如何完成一件事情
举个例子:比如我们现在要把大象放进冰箱里,我们怎么做到这件事呢?——分三步:
- 打开冰箱门;
- 把大象放进冰箱;
- 关掉冰箱门;
那把上面的操作映射到 Java 里面呢?
- 首先,创建一个方法(方法名):把大象放到冰箱里;
- 方法体,就是把大象放进冰箱中一步一步的操作,所对应的代码,这样我们就有了方法;
- 它有一个名字,也有完成这件事情的一步一步的步骤,这两个组合起来就完成了特定的事情——这就叫做一个方法。
接下来,我们来看看 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
方法一:QQ
方法二:微信:Jiabcdefh
- 0
- 0
- 0
- 0
- 0
- 0