Java韩顺平
慢慢更新
Java概述
什么是程序
程序是有序指令的集合
CMD编译执行Java文件
编译:javac 文件名.java
执行:java 文件名
文件夹地址栏 输入 CMD 弹出本文件夹命令行
Java版本
Java在1995年由SUN公司发布
gosling Java之父
目前Java属于Oracle
目前Java的两个长期支持版本:
Java 8
Java 11
Long-Term-Support (LTS)
标准版:Java SE(Standard Edition)
企业版:Java EE(Enterprise Edition)
小型版:Java ME(Micro Edition)
Java部分特性
- Java是面对对象(oo)
- Java是健壮的
- Java是可跨平台的 [一个编译好的 .class 文件可以在多个系统下运行]
- Java是解释型语言
- 解释型和编译型语言区别:
解释型语言:将代码翻译成机器语言
编译型语言:将代码编译为一个独立文件, 可以直接运行
解释型:JavaScript、PHP、Java、Python
编译型:C、CPP
Java开发工具
-
文本编辑器:
VSC
Sublime Text
Vim
Atom -
IDE:
JetBrains IDEA
Eclipse
MyEclipse
初学推荐使用文本编辑器 方便熟悉Java基本代码格式
JDK
-
JVM (Java Virtual Machine)
一个虚拟的计算机 对于不同平台有不同的虚拟机
Java虚拟机屏蔽了底层运行平台的差别 实现了"一次编译, 到处执行" -
Java文件运行
xx.java → 编译 javac → xx.class → 运行 java → 不同平台 -
JDK和JRE
JDK(Java Development Kit) Java开发工具包
JDK=JRE+Java开发工具[bin目录]
-
安装JDK时 默认安装JRE
JRE(Java Runtime Environment) Java运行环境
JRE=JVM+Java的核心类库 -
如果只需要运行开发好的Java程序 计算机中只需要安装JRE
- JDK、JRE和JVM的关系
JDK = JRE + 开发工具集
JRE = JVM + Java SE标准类库
安装的JDK = JVM + Java SE标准类库 + 开发工具集
JDK 用于开发
JRE 用于运行
下载、安装JDK
- 安装路径不要有中文或特殊符号
- JRE可以选择性安装
配置环境变量
检查Java是否配置好
- Win + R 输入 cmd
- 在打开的命令行中输入 javac 查看是否报错
报错的原因:因为没有配置全局环境变量, 所以在输入指令时, 只会在DOS命令行默认文件夹中找javac编译器.
解决:
1.在java的bin文件夹中打开cmd输入javac
2.为了在任意文件夹中都能打开jdk, 所以我们需要配置Java的全局变量
配置环境变量的过程
- 我的电脑-属性-高级系统设置-环境设置
- 添加"JAVA_HOME" 环境变量, 指向JDK的安装目录"<目录地址>"
- 编辑 path环境变量, 添加"%JAVA_HOME%\bin"
- 再次打开DOS命令行, 输入javac, 检查是否配置成功
path路径中 使用 ";"(分号)隔开不同的项目
配置多个
- 比如把JDK8新建为"JAVA_HOME8", JDK11新建为"JAVA_HOME11". 同时保留"JAVA_HOME"并让"JAVA_HOME"指向"%JAVA_HOME8%" 或是 "%JAVA_HOME11%". 在需要切换版本时, 只需要更改"%JAVA_HOME<版本号>%"指向的版本号了.
https://www.cnblogs.com/zhanglongxin233/p/13170094.html
用户变量与系统变量
用户变量:仅针对该用户
系统变量:整个电脑的所有用户都可以使用
Java快速入门
// 演示Java的开发步骤 // 1. public class Hello 表示 这个类叫 Hello, 作为一个public公有类被创建 // 2. Hello{} 表示一个类的开始和结束 // 3. public static void main(String[] args) 表示一个主方法, 即程序的入口 // 4. main() {} 表示方法的开始和结束 // 5. System.out.println("Hello, World."); 表示换行输出双引号中的文字Hello, World. 到屏幕上 // 6. ; (引号) 表示语句结束 public class Hello { public static void main(String[] args) { System.out.println("Hello, World."); } }
- 此时, 仅使用文本编辑工具是无法运行代码的. 需要将 .java文件 转换为 .class文件
- 在 .java文件 的地址栏直接输入 "javac Hello.java" 结果发现报错
- 因为代码文件中的注释是中文, 默认的编码格式会导致报错
- 将文本保存为GKB格式, 就可以编译了.
- 编译好后, 输入"java Hello"即可
可以利用上下的方向键, 来回切换在DOS命令行中输入的指令
如果在运行Hello.class时, 输入"java Hello.class"编译器反而会认为想要运行的是Hello.class这个名字的类, 然而我们的java类名为Hello, 并不是Hello.class.
Java运行机制
.java 文件 → .class文件 → 输出结果
源文件 字节码文件
javac编译 → java 运行 → 输出
什么是运行
- 有了可执行的 java程序 (.class字节码文件)
- 通过运行工具 java.exe 对 字节码文件 进行执行, 本质就是 .class 装载到 jvm机 执行
- 如果程序出错, 就不会生成 .class 文件, 该文件为 字节码文件
- 如果修改了 java程序 则需要生成新的 .class文件, 才能执行生效
Java 开发注意事项和细节说明
- Java源文件以 .java 为 扩展名 源文件的组成部分是 类(class)
- Java应用程序的执行入口是main()方法. 它有固定的书写格式:
public static void main(String[] args) {}
- Java语言 严格区分大小写
- Java方法 由一条条语句构成 每条语句由 ";" 结束
- 大括号都是成对出现的, 缺一不可. (要习惯先写 {} 再写代码)
- 一个源文件中最多只能有一个public类. 其他类的个数不限
- 每一个类编译后都对应一个.class文件
- 一个源文件包含一个 public类, 则文件名必须按照该类的类名命名
- 一个源文件中最多只能有一个public类. 其他类的个数不限, 也可以将 mian方法 写在 public类 中, 然后指定运行 非public类 这样 入口方法就是 非public 的 main方法
学习方法
-
学习要求:
- 工作需要
- 跳槽, 对方的要求
- 技术追求
-
查看是否能用传统技术解决问题:
- 能解决, 但是不完美
- 解决不了
在使用新技术时, 首先查看能带来什么新的优势
-
需要掌握的新技术和知识
-
先学习新技术或知识点的基本语句和基本语法. 不要考虑细节. 先能实现, 面试再背八股和细节
-
快速入门案例(基本程序, crud) 这时候能用了, 具体细节和深入再循序渐进学习
-
开始考虑研究技术的注意事项/使用细节/使用规范/如何优化
Java转义字符
常用转义字符:
- \t : 制表符, 对齐
- \n : 换行符
- \ : 一个\
- " : 一个"
- \r : 一个回车
public class ChangeChar { public static void main(String[] args) { System.out.println("北\t上\t广\t深\t"); // 制表符 System.out.println("\n"); // 换行 System.out.println("\\\n"); // 输出\ System.out.println("\"\n"); // 输出" System.out.println("C:\\Windows\\System32\\cmd.exe"); // 输出文件地址 System.out.println("\r"); // 输出一个回车. } }
一个""(字符串)的文字必须在同一行, 如果一个字符串不在同一行, 则会报错.
\r 如果输入的字符没有另起一行, 则回车后的字符会覆盖本行原来的字符;
\r\n 则能保留本行的文字, 并且另起一行输出新文字
课堂练习
public class Exercise { public static void main(String[] args) { System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t10"); } }
初学易犯错误
- DOS命令行找不到文件
- 源文件名不存在或者写错, 或打开的路径错误
错误: 找不到文件: Exercse.java
用法: javac <选项> <源文件>
使用 --help 可列出可能的选项
- 主类名与文件名不一致
- 声明的public的主类应与文件名一致
Exercise.java:1: 错误: 类 Exercise1 是公共的, 应在名为 Exercise1.java 的文件中声明
public class Exercise1 {
^
1 个错误
- 缺少分号
- 编译失败, 注意报错. 根据报错信息改错
Exercise.java:3: 错误: 需要';'
System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t10")
^
1 个错误
- 总结:Java要求按照语法规则编写代码. 如果违反代码规则, java编译器就会报错. 所以要学着去阅读报错信息
- 1和l的误判
- 0和o的误判
- 英文字符和中文字符的混淆 ("非法字符")
- void→viod, main→mian 单词拼写错误 ("找不到符号")
- 逻辑错误(语法编译正常, 但是代码无法按照预想的结果执行)
- 环境错误(JDK版本不同;操作系统不同;系统权限)
注释
用于解释说明程序的文字. 注释提高了代码的可读性;
注释是一个程序员必须具有的良好习惯
- 单行注释
- 多行注释
- 文档注释
- 注释内容可以被JDK提供的工具 javadoc 所解析, 生成一套以网页文件形式体现的该程序的说明文档
- 命令:javadoc -d d<文件路径> -javadoc标签
- 具体所有命令可以查看 javadoc标签
/** * @author turbospace * @version 0.01 */ public class Comment { public static void main(String[] args) { //单行注释 // System.out.println("单行注释"); /* 多行注释 */ } } ```cmd cmd> javadoc -d d: Program -author -version Comment.java
注意:
- 被注释的文字会被JVM忽略
- 多行注释不允许嵌套多行注释
Comment.java:10: 错误: 非法的表达式开始
代码规范
- 类、方法的注释, 要用 JavaDoc 的方式写
- 非JavaDoc 的注释, 往往是给代码维护时写的, 为了告诉别人代码的逻辑和思路
- 使用 tab 实现缩进, 默认整体向右边移动使用 shift+tab (不同的IDE快捷键不同, 所以更换IDE还是有一定使用成本的)
- 运算符 和 = 两边习惯性各加一个空格
- 源文件使用 UTF-8 编码
- 行宽不要超过 80 字符
- 代码编写 次行风格 和 行尾风格
public class EndOfLine { public static void main(String[] args){ } }
public class NextLine { public static void main(String[] args) { } }
DOS命令
Dos:Disk Operating System 磁盘操作系统.
相对路径 与 绝对路径
- 相对路径:以当前文件所在的目录为参照,链接到目标文件资源(或文件夹)的路径
- 例 ../Program/JavaVsc
- 绝对路径:目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径
- 例 D:/Program/JavaVsc
常用dos命令:
-
查看当前目录 dir
-
切换盘符 cd /D 盘符:
-
上级目录 cd ..
-
根目录 **cd \ **
-
创建目录 md
-
删除目录 rd
-
打开目录 cd
-
复制 copy
-
删除文件 del
-
输入内容到文件 echo
-
剪切 move
-
查看所有子集目录 tree <路径>
-
清屏 cls
-
退出 exit
文件夹 = 目录
作业
- 编写 Hello, World 程序
- 将个人基本信息打印到命令台上输出, 各条信息分别占一行
- JDK, JRE, JVM 的关系
- 环境变量 path 的配置及其作用
- Java 编写的步骤
- Java 编写的 7 个规范
- 初学Java的易犯错误
/** * @Author turbospace */ public class Homework{ public static void main(String[] args) { // 1.编写 Hello, World 程序 System.out.println("Hello, World."); //2.将个人基本信息打印到命令台上输出, 各条信息分别占一行 System.out.println("姓名\t性别\t住址\n胡图图\t男\t翻斗大街翻斗花园二号楼1001室"); /* 3.JDK, JRE, JVM 的关系 JDK:JRE + Java 开发工具 JRE:JVM + 核心类库 JVM:Java虚拟机 */ /* 4.环境变量 path 的配置及其作用 此电脑→右键属性→高级系统设置→环境变量→用户变量/系统变量 JAVA_HOME:指向Java的根目录 path:%JAVA_HOME%\bin % 表示引用. 属于相对引用 相对引用的优势:当JDK目录地址变动时, 无需更改path中引用的地址, 直接更改JAVA_HOME中的地址即可 用户变量:仅当前用户可以使用 系统变量:此计算机下的所有用户都可以使用 path 配置环境变量, 是为了便于在任何目录下都能使用 JDK 编译和运行程序 */ /* 5.Java 编写的步骤 1.编写java的源代码 2.javac 编译, 得到对应的 .class 字节码文件 3.java运行, 本质就是将 .class 文件 加载到 JVM 中运行 */ /* 6.Java 编写的 7 个规范 1. 类、方法的注释, 使用 javadoc 的方式 2. 非 javadoc 的注释 是对代码的说明 (即给程序之后的维护使用) 说明代码的业务逻辑和思路 3. 使用 tab 规范代码格式 4. 运算符 和 = 两边要习惯性两边加上空格 5. 源文件使用 UTF-8 编码 6. 行宽字符不要超过 80 字符 7. 代码编程的风格 次行风格 和 行尾风格 */ /* 7.初学Java的易犯错误 1. 编译或运行 找不到文件. 找对文件名 2. 主类名和文件夹名称不一致 3. 语句缺少 ; 4. 拼写错误:常见关键词拼错 字母混淆 */ } }
变量
为什么需要变量
- 变量是程序的基本组成单位
不论是使用哪种高级程序语言编写程序, 变量都是其程序的基本组成单位
class Test { public static void main(String[] args) { int a = 1; //定义一个名为 a 的 int 类型的变量, 并值初始化为1 int b = 3; //定义一个名为 b 的 int 类型的变量, 并值初始化为3 b = 89; //将 值89 赋给 变量b System.out.println(a); System.out.println(b); } }
变量有三个基本要素:类型、名称、值
定义变量→在内存中分配空间, 变量名指向这个内存空间
变量的介绍
- 概念:变量相当于内存汇总一个数据存储空间的表示
- 使用基本步骤
- 声明变量
- 赋值
- 使用
变量的使用注意事项
- 变量表示内存中的一个存储区域 [不同的变量, 类型不同, 占用的空间大小不同]
- 该区域有自己的 名称<变量名> 和 类型<数据类型>
- 变量必须先声明, 后使用
- 该区域的数据可以在同一类型范围内不断变化
- 变量在同一个作用域内不能重名
- 变量 = 变量名 + 值 + 数据类型
加号使用
- 左右两侧 数值型 → 加法运算
- 左右两侧 一方数值型 一方字符串型 → 拼接运算
数据类型
每一种数据都定义了明确的数据类型, 在内存中分配了不同大小的内存空间
-
基本数据类型
- 数值型
- 整数类型:(byte[1], short[2], int[4], long[8])
- 浮点类型:(float[4], double[8])
- 字符型(char), 存放单个字符
- 布尔型(boolean). true, false
- 数值型
-
引用数据类型
- 类(class)
- 接口(interface)
- 数组( [] )
说明:
- Java数据类型分为:基本数据类型、引用数据类型
- 基本数据类型(8种):byte, short, int, double, float, double | char, boolean
- 引用类型(3种):class, interface, array
整数类型
Java的整数类型用于存放整数值
类型 | 占用空间 | 范围 |
---|---|---|
byte | 1B | -128~127 |
short | 2B | -32768~32767 |
int | 4B | -2147483648~2147483647 |
long | 8B | -263~263-1 |
1字节 = 2^8 = 256
11111111~01111111
负数可以8位均为1为 -128(11111111)
正数不能8位均为1为 127(01111111)
因为最左侧1和0为符号位
最高位 0表示正, 1表示负
整型使用细节
- Java各整数类型有固定的范围和字段长度, 不受具体OS的影响, 以保证Java程序的可移植性
- Java的整型常量 默认 为 int型, 声明 long型 则常量后需要加 "l" 或 "L"
- Java的整型常量声明为int型, 除非不足以表示才使用long
- bit, 计算机中最小的存储单位. byte, 计算机中基本存储单元 1 Byte = 8 bit
浮点类型
Java的浮点类型可以表示一个小数
分类:
类型 | 占用空间 | 范围 |
---|---|---|
float | 4B | -3.403E38 ~ 3.403E38 |
double | 8B | -1.798E308 ~ 1.798E308 |
说明:
- 关于浮点数在机器中存放的简单说明:浮点数 = 符号位 + 指数位 + 尾数位
- 尾数部分可能丢失, 造成精度损失(小数都是近似值)
浮点使用细节
- 与整型类似, Java浮点类型也有固定的范围和字段长度. 不受OS的影响
- Java的浮点数常量默认 double型, 声明 float型 则需在常量后加 "f" 或 "F"
- 浮点型常量有两种表示形式
- 十进制形式:1, 1.2F,
- 科学计数法形式:5.12e2[5.12*10的2次方], 5.12e-2[5.12/10的2次方]
- 通常应使用 double型, 因为 double 比 float 更精准
- 注意浮点数使用陷阱
- 计算后的浮点数是 一个近似的结果, 不能直接比较
- 但是可以通过和 理想值求差值 当差值小于一定范围时(一般是极小的范围) 则可以认为两数相等
- 但是 直接赋值的浮点数 是可以直接判断的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律