第 2 篇:Java 入门实战(JDK8 版)—— 编写第一个 Java 程序,理解基础运行逻辑
用 IntelliJ IDEA 写第一个 Java 8 程序:Hello World 实操指南
作为 Java 初学者,“Hello World” 是你接触这门语言的第一个里程碑。本文会聚焦 Java 8(经典 LTS 版本,企业级开发常用) 和 IntelliJ IDEA(当前主流 Java 开发工具),用简洁连贯的步骤带你完成从环境准备到程序运行的全过程,避免零散的列表,让操作流程更易跟随。
一、先做好准备:安装 Java 8 和 IntelliJ IDEA
在写代码前,需要先搭好开发环境——核心是 Java 8 开发工具包(JDK 8)和 IntelliJ IDEA,两者都要选适配当前系统的版本,避免后续兼容问题。
首先装 JDK 8:Java 8 作为长期支持版本,至今仍是很多企业项目的首选,推荐从 Oracle 官网或 Adoptium(开源免费,适配性好)下载。注意区分系统:Windows 选 “Windows x64 Installer”,macOS 选 “macOS x64 .dmg”,安装时建议选无中文、无空格的路径(比如 Windows 装在 D:\Java\jdk1.8.0_301
,macOS 会自动默认路径),装完后可以打开命令行(Windows 用 cmd,macOS 用终端),输入 java -version
验证,能显示 “java version “1.8.0_xxx”” 就说明 JDK 8 装好了。
接着装 IntelliJ IDEA:选社区版(Community Edition)就行,免费且足够满足新手需求,从 JetBrains 官网下载对应系统版本。安装时注意勾选“创建桌面快捷方式”(方便后续打开),Windows 还可以勾选“关联 .java 文件”,macOS 拖到应用程序文件夹即可。首次打开 IDE 时,按提示完成初始配置(比如选主题、安装必要插件),不用额外装 Java 插件——IDEA 社区版默认自带 Java 开发支持。
二、用 IntelliJ IDEA 创建 Java 8 项目
打开 IntelliJ IDEA 后,不用急着写代码,先创建一个标准的 Java 项目,让 IDE 帮你管理文件结构,避免手动建文件夹的麻烦。
首次打开 IDE 会看到“Welcome to IntelliJ IDEA”界面,点击“Create New Project”;如果已经打开过其他项目,就从顶部菜单栏选“File -> New -> Project”。接下来在弹出的项目配置窗口里,左边选“Java”,右边会提示“Project SDK”——这里要选我们刚装的 Java 8,要是下拉列表里没有,就点“Add SDK -> JDK”,然后找到 JDK 8 的安装目录(比如 Windows 下的 D:\Java\jdk1.8.0_301
,macOS 下的 /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
),选中后点击“OK”。
项目 SDK 配置好后,点击“Next”,不用勾选“Create project from template”(新手先从空白项目开始,更清楚文件结构),再点“Next”。然后设置项目名称,建议叫“HelloWorldApp”(见名知意),项目路径可以默认,也可以自己选(同样避免中文和空格),最后点击“Finish”。
等待 IDE 加载项目,加载完成后,你会看到左侧“Project”面板里有“HelloWorldApp”项目,下面有“src”文件夹——这是用来放 Java 源代码的地方,所有 .java 文件都要放在这里面。
三、写代码:在 IDEA 里创建 HelloWorld 类
项目建好后,接下来创建第一个 Java 类,也就是写代码的地方。在左侧“Project”面板里,右键点击“src”文件夹,选“New -> Java Class”,弹出的输入框里填类名“HelloWorld”——注意 Java 是大小写敏感的,类名首字母要大写,而且这个名字会和后续的 .java 文件名一致,不能乱填。
点击“OK”后,IDEA 会自动生成一个空白的类文件,里面只有类的定义代码。接下来把以下代码复制进去,或者手动输入(建议手动输,熟悉语法):
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!"); // 输出问候语}
}
输入的时候可以留意 IDEA 的小技巧:比如输入“main”后,按 Tab 键,IDE 会自动补全 main 方法的完整代码(public static void main(String[] args) {}
),不用手动敲全;输入“sout”后按 Tab 键,会自动补全 System.out.println()
,只需要在括号里填要输出的内容就行——这些功能能帮你减少拼写错误,提高效率。
代码输完后,记得按 Ctrl+S(Windows)或 Command+S(macOS)保存文件,不过 IDEA 也会自动保存,不用担心代码丢失。
四、运行程序:看 Hello World 输出结果
代码写好后,就可以运行程序了,IDEA 会帮你自动完成编译(把 .java 文件转成 JVM 能识别的 .class 字节码文件),不用手动敲编译命令。
运行的方法很简单:在代码编辑区的任意位置右键点击,选“Run ‘HelloWorld.main()’”;或者看类名“HelloWorld”旁边,会有一个绿色的小三角图标,点击这个图标也能运行;还有一种方式是用快捷键,Windows 按 Shift+F10,macOS 按 Control+R。
点击运行后,IDE 底部会弹出“Run”面板(也就是控制台),稍等一下,就能看到里面输出了“Hello World!”——这说明你的第一个 Java 8 程序成功运行了!如果没看到输出,先检查代码有没有拼写错误(比如少了分号、括号不匹配),再看看项目的 SDK 是不是选的 Java 8,一般新手遇到的问题大多是这两类。
五、额外:用命令行验证(了解底层流程)
如果想更清楚 Java 程序的编译和运行逻辑,也可以用命令行手动操作,这能帮你理解 IDEA 背后的工作原理。
首先找到项目的源代码路径:在 IDEA 里,右键点击“HelloWorld.java”文件,选“Copy Path -> Absolute Path”,复制后打开命令行,用“cd”命令导航到这个路径(比如 Windows 输入 cd D:\HelloWorldApp\src
,macOS 输入 cd /Users/你的用户名/HelloWorldApp/src
)。
然后输入 javac HelloWorld.java
编译代码——这一步会生成 HelloWorld.class 文件(字节码文件),如果命令行没有报错,就说明编译成功;接着输入 java HelloWorld
运行程序,同样能看到“Hello World!”的输出。
这里要注意:命令行运行时,java
命令后面跟的是类名(HelloWorld),不是文件名(HelloWorld.java),而且不能加 .class
后缀,这是新手常犯的错误;另外要确保命令行里的 JDK 是 Java 8,输入 java -version
确认一下,要是显示其他版本,就检查环境变量是不是配置了 Java 8 的路径。
六、基础常见问题:新手容易踩的坑
刚开始写程序时,难免会遇到问题,这里先整理几个高频基础问题,帮你快速排查。
如果 IDEA 提示“Project SDK is not defined”,说明项目没关联 JDK 8,解决方法是从顶部菜单栏选“File -> Project Structure”,在“Project”选项卡下的“Project SDK”里重新选择 Java 8 的路径,点击“OK”即可。
如果运行后控制台提示“Error: Could not find or load main class HelloWorld”,大概率是类名和文件名不一致(比如类名是 HelloWorld,文件名却写成 helloWorld.java),或者命令行导航的路径不对——先检查文件名是否和类名完全一致(包括大小写),再确认命令行当前路径是不是 src 文件夹下。
如果编译时提示“illegal character: \ufffd”,基本是代码里混入了中文符号(比如用了中文分号、中文括号),解决方法是把代码里的所有符号换成英文的,IDEA 里会用红色波浪线标出错误位置,点击波浪线还会有修复提示。
七、深入理解代码:Hello World 的核心组成
虽然 Hello World 程序简单,但每个部分都有其作用,搞懂这些能帮你打好 Java 基础,后续学习更轻松。
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!"); // 输出问候语}
}
首先是源代码注释,注释会被编译器忽略,但能帮其他程序员理解代码,Java 支持三种注释类型:第一种是“/* 文本 /”,这种注释可以跨多行,比如包裹一段代码的说明;第二种是“/* 文档注释 */”,也叫 doc 注释,除了注释功能,还能被 javadoc
工具识别,自动生成 HTML 格式的文档(比如生成类的说明手册);第三种是“// 单行注释”,从//开始到行尾的内容都会被忽略,适合写简短的代码说明,比如我们代码里的“// 输出问候语”。
然后是类定义,代码里的 public class HelloWorld
就是类的定义——Java 是面向对象的语言,所有代码都必须放在类里。“public”是访问修饰符,表示这个类是公开的,能被其他类访问;“class”是关键字,用来声明类;“HelloWorld”是类名,必须和文件名完全一致(包括大小写),这是 Java 的强制要求,一旦不一致就会编译报错。类的所有代码都放在后面的大括号 {}
里,这是 Java 代码块的基本格式。
最后是main 方法,public static void main(String[] args)
是整个程序的入口——不管程序多复杂,JVM 都会从 main 方法开始执行。“public static”是修饰符,“public”保证 main 方法能被 JVM 访问,“static”表示不用创建类的对象就能直接调用;“void”表示方法没有返回值;“main”是方法名,这是 JVM 规定的入口方法名,不能随便改;“String[] args”是方法的参数,是一个字符串数组,用来接收命令行传入的参数(比如运行程序时输入 java HelloWorld arg1
,args 数组里就会有“arg1”这个元素),新手暂时用不到这个参数,但必须保留,否则 JVM 找不到入口。
而 System.out.println("Hello World!")
是输出语句,“System”是 Java 核心库中的类,“out”是 System 类的静态属性,表示标准输出(也就是控制台),“println”是 out 对象的方法,作用是把括号里的内容打印到控制台并换行——这行代码就是我们能看到“Hello World!”输出的关键。
八、问题与练习:巩固 Hello World 知识
理解代码后,可以通过几个问题和练习来检验学习效果,加深对基础的掌握。
问题1:当你编译 Java 程序时,编译器会把人类可读的 .java 源文件转换成 JVM 能理解的平台无关代码,这种代码叫什么?答案其实前面提到过,就是字节码,对应的文件后缀是 .class,这也是 Java 能“一次编写,到处运行”的核心。
问题2:以下哪项不是有效的注释?选项分别是 a. /** 注释 /、b. / 注释 /、c. / 注释 、d. // 注释 。这里要注意,/* 和 / 是成对出现的,选项 c 只有开头的 / 没有结尾的 */,所以是无效的,编译器会报错。
问题3:如果运行时看到“Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorldApp.java”,首先该检查什么?这个错误说明 JVM 找不到要运行的类,大概率是你在运行时误写了文件名(比如输入 java HelloWorldApp.java
),正确的应该是输入类名 java HelloWorldApp
,所以首先要检查运行命令里是不是多写了 .java 后缀。
问题4:main 方法的正确签名是什么?正确的签名就是 public static void main(String[] args)
,这里要注意几个点:main 方法名不能错,参数必须是 String 数组(可以写成 String args[],但习惯上用 String[] args),修饰符 public 和 static 的顺序可以换,但一般按 public static 的顺序写。
问题5:声明 main 方法时,哪个修饰符必须放在前面,是 public 还是 static?其实两个修饰符都必须有,但从 JVM 访问的角度看,public 是必须的——如果少了 public,JVM 无法访问 main 方法,会提示“找不到 main 方法”;而少了 static,JVM 无法直接调用,也会报错,所以两个都不能少,但问题问的是“必须放在前面”,其实更核心的是 public,因为它决定了访问权限。
问题6:main 方法定义了哪些参数?就是一个 String 类型的数组,参数名通常是 args(也可以叫其他名字,比如 argv),用来接收命令行传入的参数。
再来看练习1:把 HelloWorldApp.java 程序修改为显示“Hola Mundo!”而不是“Hello World!”。其实很简单,只需要把输出语句里的字符串改成“Hola Mundo!”,也就是把 System.out.println("Hello World!")
改成 System.out.println("Hola Mundo!")
,然后重新运行,就能看到新的输出。
练习2:有一个修改版的程序 HelloWorldApp2.java,运行时有错误,该怎么修复?常见的错误可能有几种:比如类名写成了 HelloWorldApp2,但文件名是 HelloWorldApp.java,导致类名和文件名不一致;或者少了 main 方法的某个修饰符(比如漏了 static);又或者输出语句里少了分号——只需要对照正确的 HelloWorld 代码,检查这几处,把不一致的地方改过来,程序就能正常编译运行了。
九、更全面的常见问题:编译器与运行时错误
除了基础问题,编译和运行时还可能遇到其他错误,这里整理更全面的情况,帮你应对更多场景。
编译器问题(不同系统常见错误)
在 Windows 系统上,最常见的错误是“‘javac’ is not recognized as an internal or external command”,这说明 Windows 找不到 javac 编译器。如果 JDK 安装路径是 C:\jdk1.8.0
,可以暂时在命令行输入 C:\jdk1.8.0\bin\javac HelloWorldApp.java
来编译,但每次都这样太麻烦,最好的解决方法是配置环境变量,把 JDK 的 bin 目录(比如 C:\jdk1.8.0\bin
)添加到系统的 PATH 变量里,具体步骤可以参考 JDK 8 的安装说明,配置后重启命令行就能直接用 javac 命令了。
还有一个错误是“Class names, ‘HelloWorldApp’, are only accepted if annotation processing is explicitly requested”,这是因为编译时忘了加 .java 后缀,比如输入 javac HelloWorldApp
而不是 javac HelloWorldApp.java
,只要加上 .java 后缀就能解决。
在 UNIX 或 macOS 系统上,类似的错误是“javac: Command not found”,解决方法和 Windows 类似,暂时可以用 /usr/local/jdk1.8.0/bin/javac HelloWorldApp.java
编译,长期解决则需要把 JDK 的 bin 目录添加到 PATH 变量里,具体步骤根据使用的 shell 不同略有差异,比如 bash shell 可以编辑 ~/.bashrc 文件,添加 export PATH=$PATH:/usr/local/jdk1.8.0/bin
,然后执行 source ~/.bashrc
生效。
另外,不管什么系统,都可能遇到语法错误,比如少了分号、括号不匹配等,编译器会提示错误位置(比如“Testing.java:8: error: ‘;’ expected”),只要根据提示找到对应的行,修复语法问题,再重新编译就行。
运行时问题(全系统常见错误)
最常见的运行时错误是“Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorldApp”,这说明 JVM 找不到 .class 文件。首先要检查当前目录是不是 .class 文件所在的目录(比如 src 文件夹),如果不是,用 cd 命令切换过去;如果还是不行,可以尝试清除 CLASSPATH 变量——Windows 输入 set CLASSPATH=
,UNIX 或 macOS 输入 unset CLASSPATH
,然后再重新运行,如果能成功,就需要重新配置 CLASSPATH 变量,确保 JVM 能找到类文件。
还有一个新手常犯的错误是“Could not find or load main class HelloWorldApp.class”,这是因为运行时误把 .class 文件名当成了类名,比如输入 java HelloWorldApp.class
,正确的应该是输入类名 java HelloWorldApp
,去掉 .class 后缀就行。
如果看到“Exception in thread “main” java.lang.NoSuchMethodError: main”,说明类里没有正确的 main 方法,可能是方法名写错了(比如写成了 Main),或者少了修饰符(比如漏了 public 或 static),又或者参数不对(比如写成了 String args 而不是 String[] args),只要对照正确的 main 方法签名修改,就能解决。
十、总结:下一步该学什么
完成第一个 Hello World 并解决常见问题后,你已经迈过了 Java 学习的第一道坎。接下来可以试着做一些小修改,比如在输出语句后再加一行 System.out.println("Java 8 入门成功!")
,运行后看看控制台会不会显示两行内容;或者尝试用不同的注释类型给代码加说明,熟悉注释的用法。
等你对 Hello World 相关的基础操作熟练后,就可以开始学习 Java 8 的核心语法了——比如变量的定义(怎么声明整数、字符串变量)、基本数据类型(int、String、boolean 等)、运算符(加减乘除、逻辑运算),这些是写复杂程序的基础。而 IntelliJ IDEA 的更多功能,比如代码调试(设置断点、查看变量值)、代码重构(重命名类或方法),可以在后续学习中慢慢探索,不用一开始就掌握所有操作。
记住,Java 8 作为经典的 LTS 版本,不仅资料丰富,而且至今仍是很多企业项目的首选,打好这个版本的基础,后续学习 Java 17、Java 21 等新版本时,会更容易理解版本间的差异和升级点,让整个学习过程更顺畅。