Java零基础学习完整笔记,基于Intellij IDEA开发工具,笔记持续更新中
本文介绍了Java基础学习资源与开发环境搭建。推荐毕向东老师的《传智播客》Java基础视频作为学习资料,详细讲解Java语言概述、三种技术架构(JAVAEE/JAVASE/JAVAME)和跨平台原理。重点指导JDK下载安装与环境变量配置(JAVA_HOME、CLASSPATH、Path),并通过java -version命令验证配置。同时介绍了IntelliJ IDEA开发工具的下载安装,建议使用
绪言
Java基础学习视频推荐《传智播客》毕向东老师的视频,很详细易懂。
哔哩哔哩视频:https://www.bilibili.com/video/BV1pt41127na/?share_source=copy_web&vd_source=93c33487936bc576e614294b6118010d
本学习笔记也是基于该视频完成,望砥砺前行。
一、计算机语言概述
我们交流用的是母语,在国外沟通用的外语,同理计算机语言就是计算机能认识的语言,例如:C、C++、Java等,由于计算机只能识别二进制数,就是简单的0和1,这些语言最终都会编译转换成计算机能够识别的机器码。
1.1 软件开发
软件定义:一系列按照特定顺序组织的计算机数据和指令的集合(大白话就是一系列操作数据的集合)。
常见的系统软件:DOS、Windows、Linux、MacOS等等。
常见的应用软件:扫雷、微信、网易云音乐等等。
开发的定义:制作软件。
1.2 人机交互
定义:人与软件之间的互动,看到的界面和反馈数据信息都是交互的方式。
图形化界面(Graphical User Interface):简称GUI,软件界面,通过点击输入等一些操作,简单直观易上手。
指令交互(Command Line Interface):简称CLI,控制台输入特定的指令,让计算机完成一些操作。
二、Java语言概述
Java是SUN(Stanford University Network)斯坦福大学网络公司1995年推出的一门高级编程语言,于2009年4月20日被Oracle公司以74亿美元收购。
Java是一种面向Internet的编程语言。随着Java技术在Web方面的不断成熟,已经成为Web应用程序的首选开发语言。简单易学,完全面向对象,安全可靠,跨平台的编程语言。
2.1 Java三种技术架构
- J2EE(Java 2 Platform Enterprise Edition,JAVAEE)企业版
适用于企业级应用开发,提供分布式、多层架构支持。典型场景包括大型电商平台、银行系统、ERP等需要高并发、高可靠性的场景。核心技术包括EJB、JMS、Servlet/JSP,依赖应用服务器(如WebLogic、WildFly)。 - J2SE(Java 2 Platform Standard Edition,JAVASE)标准版
Java核心平台,适用于桌面应用、工具开发和小型服务端程序。典型场景包括Swing桌面程序、Android开发基础库、嵌入式设备应用。核心特性涵盖集合框架、IO、多线程等基础API,直接运行于JVM。 - J2ME(Java 2 Platform Micro Edition,JAVAME)小型版
针对资源受限设备优化,适用于嵌入式系统和移动端开发。典型场景包括功能手机应用、物联网设备(如传感器)、智能卡程序。技术特点为精简的JVM(CLDC配置)和专用API(如MIDP),现已逐步被Android替代。
说明:Java5.0版本后,更名为JAVAEE、JAVASE、JAVAME。
2.2 Java跨平台原理
Java跨平台是基于JVM虚拟机,因为Java程序在JVM上执行,所以只要不同的操作系统安装对应操作系统的JVM,同一个Java程序就能在不同操作系统上执行,实现了Java程序的跨平台性。
注意:JVM不跨平台,需要安装对应操作系统的JVM,实现一次编写,到处运行的跨平台特性。
原理图如下:

说明:JavaC编译器,在安装JDK后,JDK所在bin目录下的Javac.exe可执行文件。
三、Java开发环境搭建
3.1 什么是JDK和JRE?
- JRE(Java Runtime Environment):Java运行环境
JRE包含Java虚拟机(JVM,Java Virtual Machine)和Java程序所需的核心类库等,如果要运行一个开发好的Java程序,计算机只需安装JRE。 - JDK(Java Development Kit):Java开发工具包
JDK是提供给Java开发人员使用,其中包含Java的开发工具,也包含了JRE,所以安装了JDK,就不用单独安装JRE了。其中开发工具包含:编译工具(javac.exe)、打包工具(jar.exe)等
简单而言:JDK开发完的Java程序,交给JRE去运行。
3.2 JDK官网下载
Oracle官网下载:https://www.oracle.com/cn/java/technologies/downloads/。
访问官网下载页,滚动页面找到如下,选择Java8,根据自身Windows系统选择x64或x86位。

说明:Oracle官网需要登录账号后才能下载,没有的话需要注册一个,或在CSDN资源里下载《Oracle JDK8 Windows版x64》,或蓝奏云下载:https://wwln.lanzoul.com/ibB0q39j4jte。
3.3 JDK安装和环境配置
3.3.1 JDK安装
下载后找到所在的目录,双击.exe文件进行安装(根据提示点击下一步就行),注意安装过程中修改一下安装路径,默认在C盘,不建议放C盘(如果只有一个C盘那就默认)。
3.3.2 JDK系统环境配置
在任务栏中的搜索框中输入编辑系统环境变量。
在系统属性界面,选择环境变量。
配置环境变量。
| 变量名 | 配置路径 | 说明 |
|---|---|---|
| JAVA_HOME | D:\Softwares\……\Java\jdk1.8.0_351(参考) | JDK安装所在目录(根据自己安装目录设置) |
| CLASSPATH | .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar | class文件路径,该路径用于JVM查找编译后的class文件(注意路径前面前面的.) |
| Path | %JAVA_HOME%\bin | 运行的二进制文件路径(其中%JAVA_HOME%是引用前面JAVA_HOME变量的意思) |
补充说明:
- JAVA_HOME和CLASSPATH变量需要新建,Path不需要新建,找到已有的Path变量编辑,新增路径(如果是单行输入框,多个路径用分号
;隔开),最后点确认。 - CLASSPATH配置是为了JVM找到编译后的字节码文件,如果不配置ClASSPATH,默认是在当前目录下查找。
- 环境配置是为了在Dos窗口下的任意目录都可以使用JDK可执行文件(编译运行),如果是使用IntelliJ IDEA工具,可以不配置系统环境,直接在IDEA导入本地的JDK(不过还是建议配置一下啦)。
3.4 JDK系统环境自测
配置完后,检验配置是否成功,在Windows任务栏的搜索框输入cmd(命令提示符),打开DOS命令窗口,输入java -version。
如果输入指令后显示Java版本,则环境配置成功,若提示无效指令,请重新检查配置的环境变量是否正确。
3.5 Windows Dos常用指令(了解)
| 指令语法 | 说明 |
|---|---|
| dir | 列出当前目录下所有的文件和文件夹 |
| cd [当前目录下的文件夹名] | [\其他盘符名 指定目录路径] | 进入指定目录 |
| cd .. | 退回上一级目录 |
| cd \ | 退回根目录 |
| md [文件夹名] | 创建文件夹 |
| rd [文件夹名] | 删除文件夹(前提要是空文件夹) |
| del [文件名] | 删除文件(删除所有文件可以用 del *) |
| exit | 退出dos窗口 |
| help | help 指令名 | 【重要】查看dos帮助文件,里面包含所有的dos指令 |

四、Intellij IDEA工具下载安装设置
为了开发效率,我们直接使用Intellij IDEA工具进行开发,不用笔记本和Exlipse开发,也可以提前熟悉这款开发工具,市场上企业级开发用的都是它。
4.1 Intellij IDEA下载
Jetbrains官网下载:https://www.jetbrains.com/idea/download/?section=windows。
访问官网下载页,这里直接点Download是下载最新版本,选择Other versions下载其他版本,这里我下载2021.2.2版本。

4.2 Intellij IDEA的安装和设置
找到下载后的路径,双击.exe文件进行安装,注意安装过程中默认在C盘,建议安装到其他盘(如果只有一个C盘那就默认)。
Intellij IDEA详细设置和快捷键:https://blog.csdn.net/qq_45674493/article/details/135400839。
Intellij IDEA 2021.2.2无限试用:https://blog.csdn.net/qq_45674493/article/details/129038576。
五、Intellij IDEA工具快速上手
在使用之前,我们先简单了解项目结构,一个项目里可以包含多个功能模块,一个功能模块里可以包含多个类包,一个类包里可以包含多个类文件。
我们使用Intellij IDEA新建一个项目,后面学习都在该项目中,项目名为JavaBaseStudy。
5.1 创建Project(项目)
打开Intellij IDEA,新建一个新项目。
Project SDK我们选择上面安装的JDK(如果配置了系统环境,这里下拉会有提示,version是JDK版本;如果没有配置系统环境,就需要自己手动导入一下),然后Next下一步。
不勾选Create project from template(根据模板创建项目),Next下一步。
修改Project name项目名为JavaBaseStudy,项目路径建议放其他盘(不建议放C盘),然后点Finish完成。
完成后进入项目(上标题栏是IDEA操作栏,左侧是项目目录和相关文件,右侧灰色区域是代码编辑区)。
5.2 创建Module(功能模块)
在JavaBaseStudy项目下,鼠标右键新建Module。
这里和新建项目时一样,选择本地安装的JDK(我本地安装了二个版本的JDK,这里选择1.8版本),Next下一步。
模块命名(注意:模块名称字母全部小写,多个词可以用-隔开),模块路径默认在当前项目下,Finish完成。
模块Module就创建完成,在自己项目下就能看到。
5.3 创建Package(类包)
在功能模块(Module)下的src目录下,鼠标右键新建Package包。
给包命名(注意:包名统一使用小写,使用单数形式,点分隔符之间有且仅有一个自然语义的英语单词;例如:域名+个人/组织/公司名称缩写+包名称;每个点分隔符表示下级目录),然后回车创建包。
创建完包后,可以看到在src目录下创建了一个多级目录。
5.4 创建Class(类)
在指定的demo包下,鼠标右键新建一个类。
给新建的类命名(注意:类名使用 UpperCamelCase 风格,每个单词首字母大写,POJO类命名除外),默认选中Class,回车创建。
可以在指定的demo包下看到一个HelloWorldDemo.java文件,类就创建好了。
5.5 演示HelloWorld(程序执行的过程)
在HelloWorldDemo类中编写并运行输出Hello World!字符串,可以复制下面源代码,然后在自己本地运行看看运行结果。
源代码:
public class HelloWorldDemo {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
点击main主函数左边的绿色三角形,选择Run 'HelloWorldDemo.main()'运行,并在控制台看到输出的结果。
我们运行完后会发现左侧目录下生成了out文件夹,这是存储编译后生成的class字节码文件目录。
程序执行流程:
说明:如果javac编译出错,则不会生成class文件;java运行会启用JVM虚拟机,虚拟机会识别class的main主函数入口,并执行该方法,最后输出结果。
六、Java基础语法
6.1 关键字(50个)
关键字都是小写字母,Java关键字总共有50个。这些关键字是Java语言中的保留字,不能用作标识符(如变量名或方法名)。以下是按作用分类排序列出的Markdown表格,包含每个关键字的分类和简要说明。分类基于主要用途分为:访问控制、修饰符、流程控制、异常处理、包控制、基本类型、类和对象、其他(包括未使用的保留字)。
| 关键字 | 作用 | 说明 |
|---|---|---|
| package | 包管理 | 声明类所在的包 |
| import | 包管理 | 导入其他包的类 |
| class | 类与对象 | 声明类 |
| interface | 类与对象 | 声明接口 |
| enum | 类与对象 | 声明枚举类型(Java 5+) |
| extends | 类与对象 | 表示继承关系 |
| implements | 类与对象 | 实现接口 |
| new | 类与对象 | 创建对象实例 |
| this | 类与对象 | 引用当前对象 |
| super | 类与对象 | 引用父类对象或构造器 |
| instanceof | 类与对象 | 检查对象是否为指定类的实例 |
| public | 访问控制 | 公开访问权限 |
| protected | 访问控制 | 受保护访问权限(同包或子类) |
| private | 访问控制 | 私有访问权限(仅本类) |
| abstract | 修饰符 | 声明抽象类或方法 |
| final | 修饰符 | 声明不可继承的类/不可重写的方法/常量 |
| static | 修饰符 | 声明静态成员(类级共享) |
| volatile | 修饰符 | 确保变量在多线程中的可见性 |
| transient | 修饰符 | 标记不参与序列化的字段 |
| synchronized | 修饰符 | 声明同步方法或代码块(线程安全) |
| native | 修饰符 | 声明本地方法(由 JNI 实现) |
| strictfp | 修饰符 | 声明严格浮点计算 |
| void | 返回类型 | 表示方法无返回值 |
| boolean | 基本数据类型 | 布尔类型(true/false) |
| byte | 基本数据类型 | 8 位整数类型 |
| char | 基本数据类型 | 16 位 Unicode 字符 |
| double | 基本数据类型 | 双精度浮点数 |
| float | 基本数据类型 | 单精度浮点数 |
| int | 基本数据类型 | 32 位整数 |
| long | 基本数据类型 | 64 位整数 |
| short | 基本数据类型 | 16 位整数 |
| if | 流程控制 | 条件判断 |
| else | 流程控制 | if 的否定分支 |
| switch | 流程控制 | 多分支选择 |
| case | 流程控制 | switch 的分支标签 |
| default | 流程控制 | switch 的默认分支 |
| while | 流程控制 | 循环结构 |
| do | 流程控制 | while 循环前置执行 |
| for | 流程控制 | 通用循环结构 |
| break | 流程控制 | 跳出循环或 switch |
| continue | 流程控制 | 跳过当前循环迭代 |
| return | 流程控制 | 从方法返回值 |
| try | 异常处理 | 声明需捕获异常的代码块 |
| catch | 异常处理 | 捕获并处理异常 |
| finally | 异常处理 | 无论是否异常都执行的代码块 |
| throw | 异常处理 | 主动抛出异常 |
| throws | 异常处理 | 声明方法可能抛出的异常 |
| assert | 异常处理 | 断言条件(需启用 -ea 参数) |
| const | 保留字(未使用) | 保留关键字,无实际作用 |
| goto | 保留字(未使用) | 保留关键字,无实际作用 |
关键说明:
- 保留字:
const和goto在 Java 中无实际功能,仅为保留字。 - 字面量:
true/false/null不属于关键字,是特殊字面量。 - 版本差异:
enum是 Java 5 新增,_(下划线)在 Java 9 后成为保留字(未列入表格)。
6.2 标识符(命名规则)
Java标识符是程序中用于命名变量、方法、类、接口、包等元素的自定义名称。它们相当于程序实体的唯一标识符,标识符必须遵循特定规则,以确保代码的可读性和正确性(见名知意)。
标识符命名组成:
- 字母(A-Z, a-z):包括英文字母和Unicode字符(如中文,但不推荐)。
- 数字(0-9):但不能作为首字母开头。
- 特殊符号:仅允许下划线
_和美元符号$(注意:空格也是符号)。
标识符命名规则:
-
首字符规则:
必须以字母、_或$开头,不能以数字开头。 -
区分大小写:
age和Age被视为不同标识符。 -
长度无限制:
理论上长度任意,但建议保持简洁(通常不超过255字符)。 -
禁止关键字:
不能使用Java的50个保留关键字。
合法示例:
_count,$price,user123,学生姓名(不推荐)
非法示例:
2user(数字开头),first-name(含连字符),class(关键字)
演示结果: 不符合标识符命名的变量,编译都会失败。
行业命名约定:
- 类名/接口名:大驼峰式(首字母大写),例如:
EmployeeManager,PaymentService。 - 方法名/变量名:小驼峰式(首字母小写),例如:
getUserName(),studentCount。 - 常量名:全大写+下划线分隔,例如:
MAX_SIZE,PI_VALUE。 - 包名:全小写+点分隔,例如:
com.example.project。
参考阿里Java开发手册(黄山版):https://wwln.lanzoul.com/iCI7O39qvudi
6.3 注释(单行/多行/文档注释)
注释用于程序员对代码进行解释说明,有助于代码的可阅读性。注释不会参与代码的编译,注释有文档注释、多行注释、单行注释。
注释的作用:
- 对代码解释说明。
- 定位问题。
- 保留暂时不用的代码。
文档注释语法:
/**
这是一个文档注释,一般用于类、接口和方法的说明。
*/
多行注释语法:
/*
这是一个多行注释,一般用于变量、代码片段的说明。
*/
单行注释语法:
// 这是一个单行注释,一般用于变量、代码片段的说明。
说明:单行注释和多行注释可以嵌套使用,多行注释不能互相嵌套。
源代码:
/**
* 这是一个测试方法
*/
public static void test(){
//定义一个变量
int a = 1;
int b = 2;
int c = a + b;
/*
输出变量c;
其中变量c的值为变量a和变量b的和
*/
System.out.println(c);
}
如下所示,源文件编译后,生成的字节码文件里,是没有注释的,所以注释不参与代码的编译。

6.4 数值常量类型
定义:不能改变的数值;大白话就是一旦定义了的数值就不会发生改变。
| 类型 | 关键字 | 说明 |
|---|---|---|
| 整数型 | byte | short | int | long | 所有整数 |
| 小数型 | float | double | 所有小数 |
| 布尔型 | boolean | 只有true和false |
| 字符型 | chart | 将一个数字、字母或符号用单引号标识('') |
| 字符串型 | String | 将一个或多个字符用双引号标识("") |
| null | null | 只有一个数值就是null |
源代码示例:
public static void numTypeTest(){
//整数
byte byteVal = 1; //8位整数
short shortVal = 3; //16位整数
int intVal = 39; //32位整数
long longVal = 354678900; //64位整数
//浮点数
float floatVal = 3.14f; //单精度浮点数
double doubleVal = 3.14; //双精度浮点数
//布尔
boolean blnVal = true;
//字符
char charVal = 'a';
//字符串
String strVal = "hello world";
//null
String nullVal = null;
}
6.5 进制和转换
整数类型分别有:byte、short、int、long四种类型,每个类型对应的精度不同。
| 整数类型 | 对应的bit位 |
|---|---|
| byte | 8位 |
| short | 16位 |
| int | 32位 |
| long | 64位 |
进制表现形式:
| 进制 | 表现形式 | 说明 |
|---|---|---|
| 二进制 | 0,1 | 满2进1 |
| 八进制 | 0-7 | 满8进1,用0开头 |
| 十进制 | 0-9 | 满10进1 |
| 十六进制 | 0-9,A-F | 满16进1,用0x开头 |
注意:整数默认是十进制形式表示,计算机中的二进制0或1其实就是1个比特(bit),1个字节(byte)等于8个比特(bit)。
进制转换参考文章:https://xinzhi.wenda.so.com/a/1537180588200142
6.5.1 负数的二进制
负数的二进制表示是通过补码来实现,补码不仅用于表示负数,还用于二进制的算术运算,因为它简化了加法和减法运算的硬件实现。了解负数的二进制表示,首先需要理解几个基本概念:原码、反码和补码。
原码:
原码是将一个数值直接转换为二进制形式,但在最高位加上符号位,其中0表示正数,1表示负数。
5的原码:
00000000 00000000 00000000 00000101
-5的原码:10000000 00000000 00000000 00000101
反码:
反码是将原码的非符号位取反(即1变为0,0变为1)。正数的反码与其原码相同,而负数的反码则是将其原码(除符号位外)的每一位取反。
-5的反码:
11111111 11111111 11111111 11111010
补码:
补码是在反码的基础上加1。正数的补码与其原码相同,而负数的补码是在其反码的基础上加1。
-5的补码:
11111111 11111111 11111111 11111011
说明:补码的优点在于它消除了+0和-0的区别,只有一个零的表示,并且使得加法和减法运算可以统一处理。例如,5 - 5可以表示为5 + (-5),在补码系统中,这两个操作是等价的。
6.6 变量
更多推荐
所有评论(0)