Java 基础入门
1. Java 概述
1.1 Java 语言发展史
语言:人与人交流沟通的表达方式
计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言
1.1.1 Java 语言
Java 语言是美国Sun公司(Stanford University Network)在1995年推出的计算机语言
Java 之父:詹姆斯·高斯林(James Gosling)
1.1.2 Java 语言发展史
1.2 Java语言跨平台原理
1.2.1 平台
指的是操作系统
1.2.2 跨平台
Java 程序可以在任意操作系统上运行
1.2.3 跨平台原理
图例:
Java 开发工具想要在不同的平台上运行,需要依赖 JVM 充当翻译功能,从而达到跨平台的效果
总结:在需要运行 Java 应用程序的操作系统上
安装一个与操作系统相对应的 Java 虚拟机(JVM Java Virtual Machine)即可
1.3 JRE和JDK
1.3.1 JRE (Java Runtime Environment)
作用:
是 Java 程序运行时的环境,包含 JVM 和运行时所需要的核心类库
我们想要运行一个已有的 Java 程序,那么只需要安装 JRE 即可
1.3.2 JDK(Java Development Kit)
作用:
是 Java 程序开发工具包,包含 JRE 和开发人员使用的工具
其中的开发工具:
编译工具(javac.exe)和运行工具(java.exe)
我们想要开发一个全新的 Java 程序,那么就必须安装 JDK
1.3.3 JDK , JRE 和 JVM 的关系
图例:
1.4 JDK的下载和安装
1.4.1 JDK 的下载
通过官方网站获取 JDK
http://www.oracle.com
注意:针对不同的操作系统,下载对应的 JDK
1.4.2 JDK 的安装目录
目录名称 | 说明 |
---|
bin | 该路径下存放了 JDK 的各种工具命令,javac 和 java 就放在这个目录 | conf | 该路径下存放了 JDK 的相关配置文件 | include | 该路径下存放了一些平台特定的头文件 | jmods | 该路径下存放了 JDK 的各种模块 | legal | 该路径下存放了 JDK 各种模块的授权文档 | lib | 该路径下存放了 JDK 工具的一些补充 JAR 包 |
其余文件为说明性文档
2. 常用 DOS 命令
2.1 打开命令提示符窗口
-
按下 win + R -
输入 cmd -
按下回车键(enter)

2.2 常用命令
操作 | 说明 |
---|
盘符名称 : | 盘符切换,E:回车,表示切换到E盘 | dir | 查看当前路径下的内容 | cd 目录 | 进入单级目录,cd itheima | cd … | 回退到上一级目录 | cd 目录1\目录2\ … | 进入多级目录,cd itheima\JavaSE | cd \ | 回退到盘符目录 | cls | 清屏 | exit | 退出命令提示符窗口 |
- 切换盘符
- dir 查看当前路径的文件
- cd 目录 进入下一级文件夹
- 回退目录
- 想直接进入指定文件夹 例如直接进入课程工具包
- 想直接一次性回退到盘符目录 例如E盘
3. Path 环境变量的配置
3.1 为什么要配置 Path 环境变量
开发 Java 程序,需要使用 JDK 提供的开发工具,而这些工具在 JDK 的安装目录的 bin 目录下
直接使用 cmd 命令运行 javac:
想使用 cmd命令 直接运行 javac 或者 java 需要加上开发工具的路径
小技巧:在 cmd 命令窗口使用👆键,可以查看输入历史从而减少输入时间
直接使用 cmd 命令运行 Java:
在win10 系统中,Java path 环境变量已经提前设置好了,不需要输入路径了
配置 Path 环境变量步骤:
https://www.bilibili.com/video/BV18J411W7cE?p=6&spm_id_from=pageDriver
4. HelloWorld 案例
4.1 Java 程序开发运行流程
开发 Java 程序,需要三个步骤:编写程序,编译程序,运行程序
图例:
4.2 HelloWorld 案例的编写
-
新建文本文档,修改名称为 HelloWorld.java -
用记事本打开 HelloWorld.java 文件,输入程序内容

public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("HelloWorld");
}
}
4.3 HelloWorld 案例的编译和运行
打开命令提示符窗口,进入到HelloWorld.java 所在的目录,输入指令编译和执行
编译语法:javac 文件名.java
范例:javac HelloWorld.java
执行语法:java 类名
范例:java HelloWorld
操作步骤:
- 进入 HelloWorld.java 文件所在的目录

- 编译文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VianEv4K-1627314044533)(https://cdn.jsdelivr.net/gh/MagicCD/picture-C-/img/image-20210725154429423.png)]](https://img-blog.csdnimg.cn/68c2557ec9f24c1ea19ebf265bb6de7b.png)
- 执行文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uK9TP1D1-1627314044534)(https://cdn.jsdelivr.net/gh/MagicCD/picture-C-/img/image-20210725154535656.png)]](https://img-blog.csdnimg.cn/41e3aa32096f4f08bd83bc1c8085a228.png)
5. HelloWorld 案例常见问题
5.1 BUG
由来:
Bug一词的原意是臭虫或虫子。第一代计算机是由许多庞大的真空管组成,并利用大量的电力来使真空管发光。引得一只小虫子Bug钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来。
与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。遗憾的是,在中文里面,至今仍没有与“Bug”准确对应的词汇,于是只能直接引用“Bug”一词。虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。

5.2 BUG 的解决
-
具备识别 BUG 的能力:多看 -
具备分析 BUG 的能力:多思考,多查阅资料 -
具备解决 BUG 的能力:多尝试,多总结
提供以下代码:
public class HelloWorld
{
public static void main(Sting[] args)
{
system.out.println("HelloWorld");
}
}
运行后出现的结果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vc2JVRdS-1627314044537)(https://cdn.jsdelivr.net/gh/MagicCD/picture-C-/img/image-20210725160343765.png)]](https://img-blog.csdnimg.cn/943b4db164534e1cb0d028ed8c084e64.png)
解读:
Java:5 说明错误在第5行,先看第二个,需要 ‘ ; ’ 说明是 HelloWorld 后面出问题了,修改后再编译
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cithQEkI-1627314044538)(https://cdn.jsdelivr.net/gh/MagicCD/picture-C-/img/image-20210725161429325.png)]](https://img-blog.csdnimg.cn/ef2a5d1267d84fd0980ee1202bd1cdbf.png)
Java:5 说明错误在第5行,system不存在,很可能是我们写错了导致的
6. Notepad 软件的安装和使用
6.1 为什么要安装 Notepad 软件
6.2 Notepad 软件的配置
6.3 Notepad 软件的使用
使用:通过 Notepad 软件编写 HelloWorld 案例
小技巧:在命令提示符窗口下写 javac HelloWorld.java 时,只需要写 javac H 然后按下 Tab 键
系统就会自动补齐剩下的所有内容
非常方便的哈!

7. 基础语法
7.1 注释
概述:
- 注释是在程序指定位置添加的说明性信息
- 注释不参与程序运行,仅仅起到说明作用
注释分类:
格式:// 注释信息
格式:/* 注释信息 */
格式:/** 注释信息 **/
示例:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello");
}
}
7.2 关键字
概述:
就是被 Java 语言赋予了特定含义的单词
特点:
- 关键字的字母全部小写
- 常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观
标紫的就是关键字:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello");
}
}
7.4 常量
常量的概念:在程序运行过程中,其值不可以发生改变的量
常量的分类:
常量类型 | 说明 | 举例 |
---|
字符串常量 | 用双引号括起来的内容 | “hellworld” , “黑马程序员” | 整数常量 | 不带小数的数字 | 666,88 | 小数常量 | 带小数的数字 | 13.14 -5.12 | 字符常量 | 用单引号括起来的内容 | ‘ a ’ , ’ 0 ’ , ‘我’ | 布尔常量 | 布尔值,表示真假 | 只有两个值:ture , false | 空常量 | 一个特殊的值,空值 | 值是:null |
示例:
public class ConstantDemo{
public static void main(String[] args){
System.out.println("hellworld");
System.out.println("黑马程序员");
System.out.println("-----------");
System.out.println(666);
System.out.println(-88);
System.out.println("-----------");
System.out.println(13.14);
System.out.println(-5.21);
System.out.println("-----------");
System.out.println('A');
System.out.println('0');
System.out.println('我');
System.out.println("-----------");
System.out.println(true);
System.out.println(false);
System.out.println("-----------");
System.out.println(null);
}
}
8. 数据类型
8.1 计算机存储单元
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫 “位(bit)”
我们又称之为 “比特位”,通常用小写的字母 “b“ 表示。而计算机最小的存储单元叫 ”字节(byte)“
通常用大写字母 ”B“ 表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,大家比较熟悉,我们一起来看看:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
8.2 数据类型
Java 语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间
所以他们表示的数据大小也是不一样的 
8.3 数据类型内存占用和取值范围
说明:E + 38表示的是乘以10的38次方,同样,E - 45表示乘以10的负45次方
9. 变量
假设我需要修改数值,但是数据输出太多了,这种方法的工作量大。因此我们引入一个变量来暂存数据
把输出位置设定为暂存数据,那么我们只要修改暂存数据,输出的值也会随之改变

概述:在程序运行过程中,其值可以发生改变的量
从本质上讲,变量是内存中一小块区域

9.1 变量定义
语法格式:数据类型 变量名 = 变量值
范例: int a = 10;
对暂存位置做一个标记 —> 变量名
因为 Java 是强语言,所以我们要给这个变量一个明确的数据类型
而且这个变量还得有值,这样才有意义
9.2 变量的使用
变量的使用:取值和修改值
-
取值格式:变量名 -
范例:a -
修改格式:变量名 = 变量值 -
范例:a = 20;
示例:
public class VariableDemo01{
public static void main(String[] args){
int a = 10;
System.out.println(a);
a = 900;
System.out.println(a);
}
}
9.3 变量使用的注意事项
- 变量名不能重复
- 变量未赋值,不能使用
- long 类型的变量定义的时候,为了防止整数过大,后面要加L
- float 类型定义的时候为了防止类型不兼容,后面要加F
10. 标识符
概念:就是给类,方法,变量等起名字的符号
定义规则:
- 由 数字,字母,下划线(_) 和 美元符($) 组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
判断下面哪些变量名不符合规则:
bj b2 2b
class _2b #ithema
ak47 Class helloworld
为了使变量清晰易懂,我们对变量的命名做一些约定:
小驼峰命名法:针对 方法 和 变量 的命名规则
-
标识符是一个单词的时候,首字母小写 例如:name -
标识符是由多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写 例如:firstName
大驼峰命名法:针对 类 的命名规则
-
标识符是一个单词的时候,首字母大写 例如:Student -
标识符由多个单词组成的时候,每个单词的首字母大写 例如:GoodStudent
11. 类型转换分类
11.1 自动类型转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
例如:double d = 10;
byte 强转成 char 的结果:
11.2强制类型转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
语法格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
注意:这里的 值或者变量 要比 目标数据类型 所表示的 范围 要大
例如:int k = (int)88.88;
88.88 属于 浮点类型的数值,int 是整数类型的数值,整型 所表示的范围 < 浮点型 所表示的范围
无强制转换的结果:
示例:
public class ConversionDemo{
public static void main(String[] args){
double d = 10;
System.out.println(d);
byte b = 10;
short s = b;
int i = b;
System.out.println(b);
int k = (int)88.88;
System.out.println(k);
}
}
12. 运算符
12.1 运算符和表达式
举例说明:
? int a = 10;
? int b = 20;
? int c = a + b;
+:是运算符,并且是算术运算符
a + b:是表达式,由于 + 是算数运算符,所以这个表达式叫算术表达式
12.1.1 算术运算符
符号 | 作用 | 说明 |
---|
+ | 加 | 与平常生活中的算术规则一样 | - | 减 | 与平常生活中的算术规则一样 | * | 乘 | 与平常生活中的算术规则一样 | / | 除 | 与平常生活中的算术规则一样 | % | 取余 | 获取的是两个数据做除法的余数 |
总结1:/ 取结果的商,% 取结果的余数
总结2:整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
示例:
public class OperatorDemo01{
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
a = 6;
b = 4;
System.out.println(a / b);
System.out.println(6.0 / 4);
}
}
12.1.2 字符的 “ + ” 操作
概述:拿字符在计算机底层对应的数值来进行计算的

算术表达式中包含多个基本类型的值的时候,整个算术表达式的类型会自动进行提升
提升规则:
-
byte 类型,short 类型和 char 类型将被提升到 int 类型 -
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型 等级顺序:byte , short , char —> int —> long —> float —> double
示例:
public class OperatorDemo02{ public static void main(String[] args){
12.1.3 字符串的 " + "操作
当 " + " 操作出现在字符串时,这个 " + " 是字符串连接符,而不是算术运算
- “itheima” + 666 = itheima666
在 " + " 操作中,如果出现了字符串,就是连接运算符,否则就是算术运算,当连续进行 " + " 操作时,从左到右逐个执行
示例:
public class OperatorDemo03{ public static void main(String[] args){ System.out.println("it" + "heima");
12.1.4 赋值运算符
符号 | 作用 | 说明 |
---|
= | 赋值 | a = 10,将10赋值给变量a | += | 加后赋值 | a += b,将 a+b 的值给a | -= | 减后赋值 | a -= b,将 a-b 的值给a | *= | 乘后赋值 | a *= b,将 axb 的值给a | /= | 除后赋值 | a /= b,将 a÷b 的商给a | %= | 取余后赋值 | a %= b,将a÷b的余数给a |
注意:扩展的赋值运算符底层隐含了强制转换
示例:
public class OperatorDemo04{
public static void main(String[] args){
int i = 10;
System.out.println("i:" + i);
i += 20;
System.out.println("i:" + i);
short s = 10;
s += 20;
System.out.println("s:" + s);
s = s + 20;
System.out.println("s:" + s);
s = s + 20中属于字符的 "+" 操作,有short和int类型,所以表达式自动提升到int类型运算
因此 s + 20 应该用int类型来接收数值而不是用short类型
s = (short)(s + 20);
System.out.println("s:" + s);
}
}
12.1.5 自增自减运算符
符号 | 作用 | 说明 |
---|
++ | 自增 | 变量的值加1 | – | 自减 | 变量的值减1 |
注意事项:
- ++ 和 – 既可以放在变量的后边,也可以放在变量的前边。
- 单独使用的时候,++ 和 – 无论是放在变量的前边还是后边,结果是一样的
- 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–
- 参与操作的时候,如果放在变量的前边,先拿变量做 ++ 或者 – ,后拿变量参与操作
最常见的用法:单独使用
示例:
public class OperatorDemo05{
public static void main(String[] args){
int i = 10;
System.out.println("i:" + i);
i++;
System.out.println("i:" + i);
++i;
System.out.println("i:" + i);
System.out.println("----------------");
i = 10;
int j = i++;
System.out.println("i:" + i);
System.out.println("j:" + j);
System.out.println("----------------");
i = 10;
j = ++i;
System.out.println("i:" + i);
System.out.println("j:" + j);
}
}
12.1.6 关系运算符
符号 | 说明 |
---|
= = | a = = b,判断 a和b 的值是否相等,成立为true,不成立为 false | ! = | a ! = b,判断 a和b 的值是否不相等,成立为true,不成立为 false | > | a > b,判断 a是否大于b,成立为true,不成立为 false | > = | a > = b,判断 a是否大于等于b,成立为true,不成立为 false | < | a < b,判断 a是否小于b,成立为true,不成立为 false | < = | a < = b,判断 a是否小于等于b,成立为true,不成立为 false |
示例:
public class exp1{
public static void main(String[] args){
int i = 10;
int j = 20;
int k = 10;
System.out.println(i == j);
System.out.println(i == k);
System.out.println("---------------");
System.out.println(i != j);
System.out.println(i != k);
System.out.println("---------------");
System.out.println(i > j);
System.out.println(i > k);
System.out.println("---------------");
System.out.println(i >= j);
System.out.println(i >= k);
System.out.println("---------------");
System.out.println(i = j);
}
}
注意:关系运算符的结果都是Boolean类型,要么是true,要么是false
千万不要把 " == " 写成 ” = “
12.1.7 逻辑运算符
概述:在数学中,一个数据x,大于3,小于6,我们可以这样来表示:3 < x < 6
在 Java 中,需要把上面的式子先进行拆解,再进行合并表达
- 拆解为:x > 3 和 x < 6
- 合并后:x > 3 && x < 6
&&其实就是一个逻辑运算符 我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符 当然,逻辑运算符也可以直接连接布尔类型的常量或者变量
符号 | 作用 | 说明 |
---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false | | | 逻辑或 | alb,a和b都是false,结果为false,否则为true | ^ | 逻辑异或(相同为false,不同为true) | a^b,a和b结果不同为true,相同为false | ! | 逻辑非(取反) | !a,结果和a的结果正好相反 |
示例:
public class exp2{
public static void main(String[] args){
int i = 10;
int j = 20;
int k = 30;
System.out.println((i > j) & (i > k));
System.out.println((i < j) & (i > k));
System.out.println((i > j) & (i < k));
System.out.println((i < j) & (i < k));
System.out.println("----------");
System.out.println((i > j) | (i > k));
System.out.println((i < j) | (i > k));
System.out.println((i > j) | (i < k));
System.out.println((i < j) | (i < k));
System.out.println("----------");
System.out.println((i > j) ^ (i > k));
System.out.println((i < j) ^ (i > k));
System.out.println((i > j) ^ (i < k));
System.out.println((i < j) ^ (i < k));
System.out.println("----------");
System.out.println((i > j));
System.out.println(!(i > j));
System.out.println(!!(i > j));
System.out.println(!!!(i > j));
}
}
12.1.8 短路逻辑运算符
符号 | 作用 | 说明 |
---|
&& | 短路与 | 作用和&相同,但是有短路效果 | || | 短路或 | 作用和|相同,但是有短路效果 |
注意事项:
- 逻辑与==&,无论左边真假,右边都要执行
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行== - 逻辑或==|,无论左边真假,右边都要执行
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行==
最常用的逻辑运算符:&&,||,!
示例:
public class exp3{
public static void main(String[] args){
int i = 10;
int j = 20;
int k = 30;
System.out.println((i > j) && (i > k));
System.out.println((i < j) && (i > k));
System.out.println((i > j) && (i < k));
System.out.println((i < j) && (i < k));
System.out.println("----------");
System.out.println((i > j) || (i > k));
System.out.println((i < j) || (i > k));
System.out.println((i > j) || (i < k));
System.out.println((i < j) || (i < k));
System.out.println("----------");
System.out.println((i++ > 100) & (j++ > 100));
System.out.println((i++ > 100) && (j++ > 100));
System.out.println((i++ > 100) & (j++ > 100));
System.out.println("i:" + i);
System.out.println("j:" + j);
i = 10;
j = 20;
System.out.println((i++ > 100) && (j++ > 100));
System.out.println("i:" + i);
System.out.println("j:" + j);
}
}
12.1.9 三元运算符
语法:关系表达式 ? 表达式1 : 表达式2;
范例:a > b ? a : b;
计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
示例:
public class exp4{
public static void main(String[] args){
int a = 10;
int b = 20;
int max = a > b ? a : b;
System.out.println("max = " + max);
}
}
|