JavaSE 基础 (1) java 环境搭建及入门
Java 语言背景介绍
Java 语言
语言:人与人交流沟通的表达方式。
计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言
Java 语言是美国 Sun 公司 (Stanford University Network) 在 1995 年推出的计算机语言。
Java 之父:詹姆斯高斯林 (James Gosling)。
Java 语言的三个版本
- Java SE: Java 的标准版, 其实就是 Java 基础, 又叫做 “J2SE”
- Java ME: Java 的小型版, 主要做嵌入式开发, 已经被 Android 替代, 又叫做 “J2ME”
- Java EE: Java 的企业版, 其实就是网站, 又叫做 “J2EE”
Java SE
Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础。
桌面应用:用户只要打开程序,程序的界面 会让用户在最短的时间内找到他们需要的功能,同时主动带领用户完成他们的工作并得到最好的体验。

图1
)学习 Java SE 的目的:为 Java EE 开发,打基础。
Java ME
Java ME:Java 语言的(小型版),用于嵌入式消费类电子设备

图2
)Java EE
Java EE:Java 语言的(企业版),用于 Web 方向的 网站 开发。
网页:通过浏览器将 数据展示 在用户面前,跟后台服务器没有交互
网站:通过跟后台 服务器的交互,将查询到的真实数据 再通过网页展示出来。
简单理解:网站 = 网页 + 后台服务器
java 语言跨平台原理
平台与跨平台
平台:指的是操作系统。
- Windows
- Mac
- Linux
跨平台:Java 程序可以在 任意操作系统上运行。
跨平台原理

图3
)
图4
)总结:在不同的操作系统中,都安装一个与操作系统对应的 Java 虚拟机 (JVM Java Virtual Machine) 即可。
分析:JVM 本身是否可以跨平台?
答:JVM 虚拟机本身不允许跨平台,允许跨平台的是 Java 程序。
JRE 和 JDK
Java 程序开发的三个步骤
开发 Java 程序,需要三个步骤:编写代码、编译代码、运行代码。

图5
)
图6
)JDK、JRE 和 JVM 的关系

图7
)JDK 的下载和安装
Java 语言发展史

图8
)JDK 的下载
通过官方网站获取 JDK,http://www.oracle.com
注意:针对不同操作系统,下载对应的 JDK。

图9
)
图10
)
图11
)JDK 的安装目录
目录名称 | 说明 |
---|---|
bin | 该路径下存放了 JDK 的各种工具命令。Javac 和 java 就放在这个目录 |
conf | 该路径下存放了 JDK 的相关配置文件 |
include | 该路径下存放了一些平台特定的头文件 |
jmods | 该路径下存放了 JDK 的各种模块 |
legal | 该路径下存放了 JDK 各模块的授权文档 |
lib | 该路径下存放了 JDK 工具的一些补充 JAR 包 |
Javac 是编译命令, java 是运行命令, 告诉虚拟机运行那些字节码文件
常用 D0S 命令
- 常用 DOS 命令
- Path 环境变量的配置
- HelloWorld 案例编写和执行
- HelloWorld 案例常见问题
- Notepad 软件的使用
DOS 命令提示符
为什么要学习 DOS 命令提示符?
目的:为了能够使用 JDK, bin 目录中的 (javac.exe) 编译和 (java.exe) 运行工具。

图12
)结论:JDK 提供的编译和运行工具,并不是双击运行去使用的。
正确使用方式:在 DOS 中通过指令去运行。
如何打开DOS命令提示符?
(1) 按下 Win+R,在运行输入框中,输入 cmd,回车。
(2) 打开指定文件夹,在 “路径栏” 中,直接输入 cmd,然后点击回车 (推荐)

图13
)问题原因:javac.exe 存放于 D 盘的 JDK 安装目录,而当前却在 C 盘中进行访问,没有找到。
命令提示符窗口中的常用命令
操作 | 说明 |
---|---|
盘符: | 切换到对应的盘符, E: 回车, 表示切换到 E 盘 |
cd 目录路径 | 进入一个目录 |
cd.. | 进入父目录 |
cd / | 回到盘符根目录 |
dir | 显示当前文件夹中的所有内容 |
cls | 清屏 |
exit | 退出 |
上下键 | 查找敲过的命令 |
tab键 | 自动补齐命令 |
ctrl+c | 终止程序的运行 |
快速进入 bin 目录所在 DOS 命令提示符
Path 环境变里的配置
为什么要配置 Path 环境变量

图16
)弊端:只能在 bin 目录下才能使用 javac 和 java 工具, 今后的代码都放在 bin 目录下不便于管理

图17
)假如要运行这个 A.java
文件, 我需要运行 javac
命令, 但是 javac
命令在 jdk12\bin
目录下, 也就是说只能把 A.java
文件放到 jdk12\bin
目录下, 在这个目录里打开 DOS
窗口, 才能运行 javac
命令, 综上所述, 需要 文件
和 javac
命令处于同一目录, 但是随着文件越来越多, 都放到 bin
目录下, 不便于管理, 所以我们需要配置环境变量, 让文件无论放在那个位置, 都能够找到 javac.exe
作用:能够在任意目录(文件夹路径) 下,都能 访问到 bin 目录中的 javac 和 java 工具
配置 Path 环境变量
按下 Win键+E, 找到计算机

图18
)
图19
)
图20
)
图21
)
图22
)问题:变量名一定要叫 JAVA_HOME 吗?
答案:不一定,但建议叫 JAVA_HOME, 后续要使用的软件,只会识别该名称。

图23
)% % 代表引用

图24
)校验是否配置成功:重新打开 DOS 窗口,输入 javac 命令查看结果
He11o World 案例
操作步骤
① 创建一个文本文件
② 把文件的名字修改为 “HelloWorld.java”
③ 用记事本打开该文件,在文件中书写代码
|
|
④ 在 Dos 窗口中找到该文件
⑤ 编译并运行
编译: javac 文件名.java
运行: java 类名

图25
)Notepad 软件的安装和使用

图26
)
图27
)
图28
)注释
注释概念
- 注释是在程序 指定位置 添加的 说明性信息
- 简单理解:对代码的一种解释说明,方便 我们程序员更好的去 阅读代码
概述: 就是对代码进行 "解释说明" 的文字.
格式:
单行注释: // 注释内容
多行注释: /* 注释内容 */
文档注释: /** 注释内容 */
关键字
关键字概念
- 关键字:被 java 赋予了特定含义的英文单词

图29
)概念: 在 Java 中 "被赋予特定含义" 的单词.
特点:
1.全小写.
2.会变色.
main 是关键字吗?
main 不是关键字,但是他是比关键字更为关键的一个单词,因为 JVM 在执行代码的时候,只会识别该单词
常量
常量概念
- 常量:在程序的 执行过程 中,其值 不会发生改变 的量(数据)

图30
)常量分类:
字符串: 被双引号包括起来. "abc","我爱Java".
字符: 被单引号包括起来的一个字或符号. 'a','5','我'
整数: 1,3,5,-9,-13
浮点: 1.3,5.4,-2.2
布尔: true,false 注意:布尔常量单独打印没有意义
空: null,表示什么都没有. 注意:null 空常量不能输出打印
像 helloword 1 2 3 称字符常量 用 final 修饰称符号常量
常量优化机制

图31
)当常量在左侧的范围内时, 编译时不会报错, (隐藏了强制类型转换)?
数据类型
计算机存储单元
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫 “位(bit)",我们又称之为 “比特位”,通常用小写的字母 “b” 表示。而计算机中最小的存储单元叫 “字节(byte)",通常用大写字母 “B” 表示,字节是由连续的 8 个位组成。
常用的存储单位,大家比较熟悉,我们一起来看看:
- 1B(字节)=8bit
- 1KB=1024B
- 1MB=1024KB
- 1GB=1024MB
- 1TB=1024GB
- 1PB=1024TB
数据类型
Java 语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的 数据类型 也分配了不同的 内存空间,所以它们表示的 数据大小 也是不一样的。
- 不同的 数据类型 也分配了不同的内存空间,所以它们表示的 数据大小 也是不一样的。

图32
)说明:e+38 表示是乘以 10 的 38 次方,同样,e-45 表示乘以 10 的负 45 次方
- 常量【没有手动指定数据类型】但只要是数据,就会存在数据类型

图33
)java 的数据类型可分为两大类:基本数据类型 和 引用数据类型

图34
)整数类型

图35
)
图36
)一个字节有 8 位,每位有 0 和 1 两种状态,一共可以表示 2 的 8 次方个信息
byte: 1 字节, 28=256
1-256 , 从零开始 0-255, 从负数开始 -128 到 127(-128 到 -1 是 128 个状态,0 到 127 是 128 个状态), 所以是-27~27-1
整型常数默认为 int 型,声明 long 型常量可以后加 l 或 L
浮点类型
金融领域不允许误差,需使用 BigDecimal 类
float (精确到 7 位) 4 字节 -3.403E38(E38 是 10 的 38 次方) 到 3.403E38
double (精确到 15,16 位) 8 字节 -1.798E308 到 1.798E308
java 浮点型常量有两种表示形式
- 十进制数形式,例如:3.14 314.0 0.314
- 科学记数法形式,如:3.14E0 3.14E2 3.14E-1
默认为 double 类型,float 类型赋值时需要添加后缀 F/f
浮点数是不精确的,尽量不要直接进行比较
字符型
占 2 个字节, 表示 1 个字符
char 类型用来表示在 Unicode 编码表中的字符。Unicode 编码被设计用来处理各种语言的文字,它占 2 个字节,可允许有 65536 个字符。
其他语言使用的是 ASCII 字符集,占 1 个字节,256 位,对英语来说绰绰有余,但对汉字来说是不够的。
Unicode 具有从 0 ~ 65535 之间的编码,他们通常用从 ‘\u0000’ ~ ‘\uFFFF’ 之间的十六进制值来表示(前缀为 u 表示 Unicode)
一个字符可以用 char,两个字符得用 string,因为他是字符串,java 中的字符串不是基本数据类型,而是一个独立定义的类
字符串用 String 定义,String str=‘我爱中国’
转义字符:
\n 换行
\r 回车
\t 制表符(tab)
\" 双引号
\' 单引号
\\ 反斜杠
boolean
boolean 有两个常量值,true、false,在内存中占 1 个或 4 个字节
一般是 4 个字节,数组中是 1 个字节
标识符
java 采用 Unicode 字符集,汉字和英文字母一样,都是普通字符集
概述: 标识符其实就是 "给类或变量起的名字".
规范:
硬规则:
1.标识符必须以 字母、下划线_、美元符$ 开头
2.标识符其他部分可以是 字母、下划线_、美元符$ 和 数字 的任意组合
3.java 标识符大小写敏感,且长度无限制
4.标识符不可以是 java 的关键字
潜规则:
1.见名知意.
2.给 "变量/方法" 起名字的时候,要使用 "小驼峰命名法".
3.给 "类/接口" 起名字的时候,要使用 "大驼峰命名法".
扩展:
小驼峰命名法: 第 1 个单词全小写,其他单词首字母大写,其他字母小写. student, studentName, studentAgeName
大驼峰命名法: 所有单词,首字母大写,其他字母小写. Student, StudentName, StudentAgeName
变量
为什么要有变量

图37
)什么是变量

图38
)以上两块内存空间,所记录的值,是经常发生改变的,对于这种经常发生改变的数据,就是所谓的变量
变量: 其实就是内存中的一块空间
变量名: 给空间起的名字就是 "变量名"
数据值: 空间中存储的数据
数据类型: 对空间中存储的数据的限制
怎样定义变量
格式: 数据类型 变量名 = 数据值;
解析:
该格式本质上是两句话.
数据类型 变量名: 叫做变量的定义,本质上是去内存中 "挖一块空间"
变量名 = 数据值: 叫做变量的赋值,其实就是给 "空间装数据"
变量的注意事项
1.变量名不能重复
2.Java 以分号作为一句话的结尾,一句话可以定义多个变量(不建议)
3.变量在使用之前必须赋值
4.定义 long 类型变量时,数值后边必须加 L
5.定义 float 类型变量时,数值后边必须加 F
6.变量只能在他所在的大括号中使用,当这个大括中的代码执行完毕后,内部所【定义】的变量就会从内存中消失
成员变量和局部变量
变量的分类
从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量
类型 | 声明位置 | 从属于 | 生命周期 |
---|---|---|---|
局部变量 | 方法或语句块内部 | 方法/语句块 | 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 |
成员变量(实例变量) | 类内部,方法外部 | 对象 | 对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失; |
静态变量(类变量) | 类内部,static 修饰 | 类 | 类被加载,静态变量就有效;类被卸载,静态变量消失。 |
局部变量(local variable)
方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。
书写位置:
成员变量: 类中方法外
局部变量: 方法内部
存储位置:
成员变量: 存储在堆中
局部变量: 存储在栈中
生命周期:
成员变量: 随着对象的创建而出现,随着对象的消失而消失,和对象在一块.
局部变量: 随着方法的调用而出现,随着方法的调用完毕而消失,和方法在一块.
初始化值:
成员变量: 有默认初始化值,byte、short、int、long:是0, float、double:是0.0, char是 '\u000',布尔是false,引用类型是 null
局部变量: 没有默认初始化值,必须先定义, 赋值, 才能使用
键盘录入
键盘录入介绍
- 为什么要有键盘录入?
目的:为了让我们操的数据,变得更加灵活
举例:int a = 10:
这里 a
虽然是个变量,但记录的值,却是手动写死的。
能不能让 a
变量记录的值,灵活起来,用户输入 什么,a
变量就记录 什么。
使用步骤
|
|
Scanner 方法
|
|
Scanner 中 nextInt() 后 nextLine() 无效的原因:
nextInt(): 接收一个整型数字,注意,只接受数字
nextLine(): 接收一串字符串,包括空格,制表符,换行符
当我们输入数字的时候,是不是按下了回车键,这个时候,nextInt() 从缓冲区把我们输入的数字读走了,但留下了换行符,等到运行 nextLine(),他开始读缓冲区里的内容,然而缓冲区里还留有一个换行符,相当于没给我们机会去输入东西,就按回车结束了