Java基础入门:从环境搭建到第一个程序全解析

发布时间:2026/10/15 7:23:39
Java基础入门:从环境搭建到第一个程序全解析 很多刚开始学Java的朋友都会纠结一个问题Java基础到底先学什么是直接背语法还是先跑通第一个程序我做了十多年Java开发也带过不少新人我的答案始终是——先把开发环境搭好亲手跑通一个最简单的程序把编译运行这条链路走通后面学什么都顺。这篇Java基础第一篇就带你把环境、第一个程序、核心语法地基一次搞清楚适合完全零基础、刚准备转行或者自学到一半卡住的人。1. 先搭台子还是先学语法——Java基础第一课的思路拆解1.1 为什么先搞定环境而不是先啃语法书我见过太多人一上来就抱着几百页的语法书从第一章“Java简介”开始看看到面向对象就崩溃了。原因很简单语法是抽象的环境是具体的。如果你连代码在哪写、怎么跑起来都不知道那些概念就是空中楼阁。反过来你先把JDK装好写一个最简单的HelloWorld看到屏幕上输出那一行字你大脑里就会建立一条完整的链路源文件 - 编译 - 字节码 - JVM执行 - 结果输出。这条链路一旦建立后面学的每一个语法点都能挂在这条链路上理解起来快得多。所以“Java基础-1”这门课核心不是让你记住多少语法而是让你知道Java程序从诞生到运行的完整过程并且自己亲手操作一次。这就是我把它放在第一课的原因。1.2 JDK、JRE、JVM到底谁是谁很多新手被这三个缩写绕晕我习惯用一个生活化的类比JVM是汽车发动机JRE是装好发动机的整车JDK是生产整车的工厂。JVMJava Virtual MachineJava虚拟机负责把字节码翻译成当前操作系统能懂的机器指令。Java能跨平台就是因为它在不同系统上都装了对应的JVM。JREJava Runtime EnvironmentJava运行环境包含JVM和运行时需要的核心类库。如果你只是跑别人写好的Java程序装JRE就够了。JDKJava Development KitJava开发工具包包含JRE还额外带了javac编译器、javadoc文档工具、jar打包工具这些开发工具。你要写代码必须装JDK。记住一句话写代码装JDK跑代码有JRE运行靠JVM。三者是包含关系JDK JRE JVM。1.3 Java版本怎么选Java现在已经不是当年只有Java 8的年代了版本号一路涨Oracle还改成了每半年发一版的节奏。很多新手一上来就问我该装Java 8还是Java 17还是Java 21我的建议是如果你是零基础入门直接装最新的稳定LTS版本长期支持版比如Java 17或者Java 21。原因有两个第一新版本有更好的性能和更友好的语法特性比如增强的switch表达式、var关键字这些会让你的早期代码更简洁。 第二你现在学的是基础API和语法核心变化不大只要避开一些废弃用法以后企业用老版本也能很快适应。但如果你所在的公司或学校明确要求Java 8那你就装Java 8配合IDE使用差别不会太大。切记不要同时装一堆版本在PATH里混着用环境变量指向哪个就生效哪个这会造成很多莫名其妙的坑。2. 手把手搭好Java开发环境2.1 JDK安装与下载注意事项先说下载渠道。最权威的是Oracle官网但国内访问有时候慢。如果网络不方便也可以选OpenJDK发行版。这里多说一句不要随便去第三方网站下“绿色版”、“精简版”你永远不知道里面的javac被改动过什么老老实实用官方构建。下载时注意选对系统版本。Windows下就是.exe或.msi安装包macOS有.dmgLinux一般用压缩包.tar.gz。另外注意操作系统是32位还是64位现在基本都是64位但老电脑要确认一下。安装过程本身没什么难度一路下一步就行。但要注意两点一是安装路径不要带空格和中文比如C:\Program Files\Java\jdk-21其实没问题但为了后续命令行操作方便我习惯装到D:\Java\jdk-21这类简单路径反正别装到像C:\Users\张三\Java这种带中文的路径环境变量和IDE识别都可能出问题。二是安装完成后别急着走确认一下Java安装目录下的关键文件在不在。比如javac.exe和java.exe一个负责编译一个负责运行后面全靠它们。2.2 环境变量配置详解这一步是新手翻车重灾区。你要配两个东西JAVA_HOME和PATH。JAVA_HOME是给系统和Java相关工具看的指向JDK的安装根目录。PATH是给操作系统命令识别器用的让系统在全局任何目录下都能找到java和javac命令。Windows下的配置步骤我给你写清楚右键“此电脑” - 属性 - 高级系统设置 - 环境变量。在“系统变量”里点击“新建”变量名填JAVA_HOME变量值填你的JDK安装目录比如D:\Java\jdk-21。然后在“系统变量”里找到Path双击编辑点击“新建”填%JAVA_HOME%\bin确定保存。这里有个容易弄错的地方如果你直接新建一行只是JAVA_HOME\bin而不带百分号在Windows环境下会无法解析。百分号是引用变量的语法表示“动态读取JAVA_HOME变量的值”这样以后换JDK版本只要改JAVA_HOME就够了Path不用动。macOS用户通常不用手动配JDK安装后会在/Library/Java/JavaVirtualMachines里注册。Linux用户可以在/etc/profile或~/.bashrc里追加export语句不展开说了。2.3 验证环境与IDE安装配置完环境变量一定要验证不要急着写代码。打开命令行终端按下WinR输入cmd回车或者直接在终端里敲java -version javac -version如果看到类似下面这样的输出说明JDK和PATH都配好了java version 17.0.9 2023-10-17 LTS Java(TM) SE Runtime Environment (build 17.0.911-LTS) Java HotSpot(TM) 64-Bit Server VM (build 17.0.911-LTS, mixed mode, sharing)注意javac -version也有输出不只是java -version。很多人卡在这一步就是javac报“不是内部或外部命令”说明Path里的bin目录没配对。至于IDE集成开发环境新手阶段我建议用IntelliJ IDEA的社区版免费且是最主流的Java开发IDE。安装没什么好说的就是下载安装包一路下一步。重点是装完之后你要创建一个新项目但初期不要过度依赖IDE的智能提示尤其是前几课你最好还是在命令行里手动编译运行几次理解底层发生了什么再回到IDE里享受自动化的便利。3. 第一个Java程序跑通编译与运行3.1 HelloWorld怎么写才对环境搞定后新建一个文本文件命名为HelloWorld.java注意扩展名是.java然后用任何文本编辑器打开写入以下代码public class HelloWorld { public static void main(String[] args) { System.out.println(Hello, Java!); } }这里有几个硬性要求第一课必须记住文件名必须和public class后面的类名完全一致包括大小写。也就是说文件名是HelloWorld.java类名是HelloWorld不能写helloworld.java或helloWorld.java。大括号要成对出现。public class HelloWorld后要有一个类体大括号main方法后也要有一个方法体大括号。如果括号不匹配编译直接报错。public、static、void这三个关键字现在先照着写后面章节会专门讲它们的含义。写好后打开命令行切到文件所在目录执行javac HelloWorld.java这条命令的作用是编译。如果代码没有语法错误它会在相同目录下生成一个HelloWorld.class文件这就是字节码文件。你可能会觉得奇怪为什么生成的文件后缀是.class而不是.exe这涉及Java跨平台的原理我们接下来说。3.2 编译与运行背后的原理编译完成后运行命令是java HelloWorld注意这里不要再写.class后缀也不要写文件名前面的路径直接写类名。很多人写成java HelloWorld.class会报找不到或无法加载主类因为java命令期望的是类名不是文件路径。运行后你会在终端看到输出Hello, Java!到这里第一个Java程序就成功跑通了。这个过程中发生了什么我建议你认真理解一下.java源文件是给人看的JVM看不懂。javac把源文件编译成.class字节码文件。字节码是一种中间语言不针对任何具体操作系统。java启动JVMJVM加载.class文件并逐行执行字节码把它翻译成当前操作系统能懂的指令最终输出结果。这就是Java“一次编写到处运行”的秘密你的.class文件到任何装有JVM的系统上都能运行而C编译出来的.exe只能运行在特定系统上。3.3 代码结构里的几个关键点class HelloWorld表示声明一个类Java程序的代码必须放在类里。类名推荐使用大驼峰命名法即每个单词首字母大写比如HelloWorld、CustomerOrder、PaymentService。这只是约定不强制但你要养成好习惯。public static void main(String[] args)是Java程序的入口方法也叫主方法。JVM启动后第一个找的就是它。这个签名在Java中是固定的public是访问修饰符表示公开static表示静态void表示无返回值main是方法名String[] args是命令行参数。现在不用深究但慢慢你会发现JVM在调用main方法时不需要创建对象所以要求它是public static的。System.out.println(Hello, Java!);是输出语句。System.out代表标准输出流println表示打印一行并换行。如果你不想换行可以用System.out.print。字符串必须用双引号括起来单引号在Java里只能包单个字符这是一个非常容易踩的小坑。4. 变量与数据类型Java的基础地基4.1 变量怎么定义和命名第一个程序跑通后就可以开始塞点真东西了。变量是编程语言最基本的存储单元你可以把它理解为一个带名字的盒子盒子里面放着一个值。定义一个变量的语法是数据类型 变量名 初始值;比如int age 25; double price 9.9; String name 小明;等号右边是初始值左边是变量名。你可以只声明不赋值int score;但在使用之前必须赋值否则编译阶段就会报错“可能尚未初始化变量”。这是Java相比JavaScript这类动态语言严格的地方它要求变量必须明确类型也必须明确赋值后才使用这样做的好处是很多错误在编译期就暴露了。变量命名的规则要记牢只能包含字母、数字、下划线和$符号不能以数字开头。不能使用Java保留的关键字比如class、public、int、void这些。推荐使用小驼峰命名法首字母小写后面每个单词首字母大写比如userName、orderCount。名字要见名知意不要起a、b、c这种毫无意义的变量名。我见过新手写代码喜欢用单字母变量图省事结果过几天自己都看不懂了。培养好的命名习惯从第一个变量开始。4.2 8种基本数据类型要点Java有8种基本数据类型第一课至少要把它们的分类和取值范围记住。范围不要求背得烂熟但心中要有概念尤其是整数和浮点。类型字节数取值范围示例byte1-128 ~ 127byte b 100;short2-32768 ~ 32767short s 2000;int4约 -21亿 ~ 21亿int i 10;long8极大范围long l 100L;float4约 ±3.4E38精度低float f 1.5F;double8约 ±1.7E308double d 1.5;char20 ~ 65535单个字符char c A;boolean不定true / falseboolean flag true;实际操作中需要注意几点long类型赋值时超过int范围的数字后面必须加L后缀否则编译报错。比如long big 3000000000L;不加L会被当成int处理直接溢出报错。float类型赋值时必须加F或f后缀因为小数默认是double类型。不加后缀就把double塞进float属于是丢了精度编译直接报错。char用单引号包一个字符String不是基本类型它是类用双引号包一串字符两者完全不同不要混用。4.3 类型转换与常见坑Java有两种类型转换自动类型转换和强制类型转换。从小范围类型转换到大范围类型会自动发生。比如int转long、int转double系统直接提升不需要你写任何东西int num 10; long bigNum num; // 自动转换不会有问题 double d num; // 自动转换结果是10.0从大范围转换到小范围必须强制转换。格式是在值前面加括号和小类型名long big 123456L; int small (int) big; // 强制转换但可能丢失精度强制转换如果遇到超过目标类型范围的值会发生截断结果会出乎意料。比如int a 300; byte b (byte) a;byte最大只能存127300转换成byte后结果是44。这就是传说中的数据溢出不会报错但结果完全错误。所以强制转换前一定要判断范围是否安全。另外整数相除会丢弃小数部分这是新手最常见的坑int a 7; int b 2; double result a / b; // 结果是3.0不是3.5因为a / b是两个int相除先把结果算成3然后给double赋值变成了3.0。如果你想要3.5至少要把其中一个换成doubledouble result a / (double) b; // 3.5这些细节第一课不要求你全部背下来但遇到了要知道原因后面写算法题会经常碰到。5. 新手常见问题与排查技巧实录5.1 环境变量没生效cmd里java还是不能运行装完JDK、配完Path后如果新开的命令窗口还是提示“java不是内部或外部命令”大概率是Path没配对。先检查你的Path里是否写的是%JAVA_HOME%\bin如果直接写成了D:\Java\jdk-21\bin也能用但改用变量更灵活。还有一种情况是配完后之前的窗口没有刷新。环境变量是在进程启动时读取的所以旧窗口不生效很正常重新开一个cmd窗口再试。如果重新开了窗口还是不行就检查JAVA_HOME本身是不是配错了或者你安装的目录和你填写的目录不一致。最简单的验证方式是在文件资源管理器里输入%JAVA_HOME%\bin看能不能跳转到对应目录能跳转就说明变量本身没问题。5.2 编译时报“找不到或无法加载主类”这个问题分两种情况。一种发生在运行阶段java HelloWorld时一种发生在编译阶段。先说运行阶段。你敲java HelloWorld时JVM在当前目录找HelloWorld.class文件但有时候class文件在别的位置或者你用了java HelloWorld.class导致格式错误。解决办法是使用java -cp . HelloWorld指定当前目录为classpath并直接用类名不带后缀。提示如果class文件确实存在但依然提示找不到主类检查代码里主类上是否有public class声明并且类名和文件名是否完全一致。另一种是编译错误比如同步给同事共享代码时对方一直报“找不到符号”多半是他编译的.java文件里出现了中文编码问题或者用了IDE的错误代码段。建议先全选代码重新复制到干净文件里用javac重新编译一次。5.3 编译时中文乱码问题在Windows下用命令编译含中文的Java文件经常会出现乱码因为默认编码是ANSI或GBK。比如你的代码里有System.out.println(你好);编译时可能报错误编码GBK的不可映射字符。解决方法是把源文件保存为UTF-8格式然后在编译时指定编码javac -encoding UTF-8 HelloWorld.java运行时的字符输出乱码通常是控制台显示编码问题。在IDEA里经常是Settings - Editor - File Encodings里全局和项目都设为UTF-8同时VM启动参数里加上-Dfile.encodingUTF-8。这个问题第二个项目再遇到时你会头大第一课就记住一个原则源文件统一UTF-8编译时加-encoding UTF-8。5.4 main方法签名写错导致程序无法启动main方法写错的形式五花八门最常见的有这么几种public void main(String[] args) // 缺少static public static void main(String args) // 参数写错 static void main(String[] args) // 缺少public这些情况下编译可能不报错甚至也能编译成功但运行时都会提示“找不到或无法加载主类”或“方法应该返回void”。因为JVM严格要求main方法的签名是public static void main(String[] args)。参数名倒是无所谓args可以改成a但类型必须是String[]。还有的人会把类名写错比如文件名是Test.java类名写成了HelloWorld编译时报错“类HelloWorld是公共的, 应在名为HelloWorld.java的文件中声明”。记住public类的名字必须等于文件名。5.5 关于编码和IDE的两条实用建议第一课不要指望一次把所有概念都弄懂但可以把下面两条记下来后面会一直用第一使用IDE时不要一上来就点绿色运行按钮至少在命令行手动编译运行5次以上。这个过程能帮你直观感知编译和运行是两回事以后遇到“编译通过了但运行报错”的情况你能迅速定位是JVM加载问题还是逻辑问题。第二初学阶段尽量把IDE的自动导入关闭多用手动引入Java类你才会意识到要搞清楚一个类的所在包。虽然现在自动导入很方便但依赖泛滥会让你意识不到自己到底用了哪个类。我个人的体会是Java基础的第一课难度不在于语法而在于环境链路和心态建设。我见过太多人栽在环境变量和第一个编译错误上就放弃了其实这些坑每一个老手都踩过。你只要静下心来一行行核对命令和代码跑通一次后面学习速度会越来越快。接下来第二篇可以聊聊流程控制、运算符或者直接深入面向对象都行但先把这篇的所有命令自己敲两遍再继续。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询