在 Java 语言中,将程序执行中发生的不正常情况称为 “异常”(开发过程中的语法错误和逻辑错误不是异常)
这些 异常事件 可分为两类:
Error(错误):Java 虚拟机无法解决的严重问题。
如:JVM 系统内部错误,资源耗尽等严重情况。Error 是严重错误,程序会崩溃。
Exception:其他因编程错误或偶然的外部因素导致的一般性问题,可以使用针对性的代码进行处理。
如:空指针访问,试图读取不存在的文件,网络中断等等。
Exception 又分为两大类:
运行时异常(程序运行时,发生的异常)
编译时异常(编程时,编译器检查出的异常)
异常体系图
编译异常(受检异常) 和 运行异常(非受检异常)
Java 源程序 ——(javac.exe)——> 字节码文件 ——(java.exe)——> 在内存中加载,运行类
编译异常↑ 运行异常↑
异常分为两大类:运行时异常 和 编译时异常
运行时异常,编译器不要求强制处置的异常。一般是指编程的逻辑错误,是程序员应该避免其出现的异常。
java.lang.RuntimeException 类及它的子类都是运 ...
枚举把具体的对象一一列举出来的类,就称为 枚举类(enumeration)
实现方法:
自定义枚举
enum 关键字枚举
自定义枚举
构造器私有化
去掉 set 方法(可保留 get),防止属性被修改。因为枚举对象值通常为只读
在类内部直接创建固定对象。使用 final + static 共同修饰,对象名通常全部大写。
枚举对象按照需要可以有多个属性
enum 关键字1234567891011enum Example { RED("小红", 10), BLUE("小蓝", 11), YELLOW; //这句话要放在前面,第三个是无参 private String name; private int age; private Example(String name, int age) { this.name = name; this.age = age; }}
用关键字 enum 替代 class
用 常量名.(形参列表); 代替创建对象(放在前面)。多个对象的场合,用 , 间隔。
...
类变量和类方法类变量
类变量:也叫 静态变量/静态属性。是该类所有对象共享的变量。任何一个该类对象访问时都是相同的值,任何一个该类对象修改时也是同一个变量。
语法(推荐):访问修饰符 static 数据类型 变量名;
或者也可以:static 访问修饰符 数据类型 变量名;
根据 JDK 版本的不同,类变量存放在 堆 中或 方法区 中。
什么时候需要用类变量:
当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量)
类变量 与 实例变量(普通属性)的区别:
类变量 是该类所有对象共享的,而 实例变量 是每个对象独享的
加上 static 称为 类变量 或 静态变量。否则称为 实例变量/普通变量/非静态变量
静态变量 可以通过 类名.类变量名; 或 对象名.类变量名; 来访问。但 Java 设计者推荐我们用 类名.类变量名; 来访问。(需满足访问权限和范围)
类变量 是在加载类时就初始化了。所以,没有创建对象实例也能访问。
类变量 的生命周期是随着 类的加载 开始,随着 类的消亡 而销毁。
特别地:一个 null 对象 ...
IDE:集成开发环境
IDEA
Eeclipse:一个开源的、基于 Java 的可扩展开发平台。是由 IBM 公司开发,在 2001 年 11 月贡献给开源社区的,目前最优秀的 Java 开发 IDE 之一。
IDEA 的使用
IDEA:全程 IntelliJ IDEA。在业界被公认为最好的 Java 开发工具。是捷克 JetBrains 公司的产品。除了 Java 开发,还支持 HTML,CSS,PHP,MySQL,Python 等。
常用快捷键
删除当前行:ctrl + Y
复制当前行:ctrl + D
补全代码:alt + /
添加 / 取消注释:ctrl + /
导入该行需要的类:alt + enter
快速格式化代码:ctrl + alt + L
快速运行程序:shift + F10(我改成了alt + R)
生成构造器:alt + insert
查看一个类的层级关系:ctrl + H
定位一个方法:把光标放在一个方法上,按 ctrl + B
自动分配变量名:在后面加上 .var
查看模板快捷键:ctrl + J
快速环绕代码:ctrl + alt + ...
面向对象是一种开发软件的方法,使分析、设计和实现一个系统的方法尽可能接近人们认识一个系统的方法。包括三个方面:面向对象分析、面向对象设计、面向对象程序设计。
Java 语言是纯面向对象的语言。其所有数据类型都有相应的类,程序可以完全基于对象编写。
类与对象(OOP)
类 就是数据类型。可以是 int 也可以是 人类
对象 就是其中具体的实例。可以是 100
从 类 到 对象,可以称为 创建一个对象,也可以说 实例化一个对象,或者 把对象实例化
类 是抽象的、概念的,代表一类事物
对象 是具体的、实际的,代表一个个具体事物
类 是 对象 的模板,对象 是 类 的一个个体,对应一个实例
下面,我们定义了一个类 Cat 并创建了一些 对象 cat1 cat2:
1234567891011121314151617public class Code6_1{ public static void main(String[] args){ Cat cat1 = new Cat(); cat1.name = "子虚"; cat1.age = 2 ...
数组:可以存放多个同一类型的数据。数组也是一种数据,是引用类型。
即:数组就是一组数据。
一维数组
数组可以是多个相同类型数据的组合,实现对这些数据的统一管理。
数组中的元素可以是任何数据类型。包括基本类型和引用类型。
数组的下标从 0 开始。且必须在指定范围内使用,否则报错。
数组属于 引用类型,数组型数据是 对象(Object)
数组创建后,如果没有赋值,有默认值:int(0),short(0),byte(0),long(0L),float(0.0F),double(0.0),char(000),boolean(false),String(null),Object(null)
数组的构造方法:
使用数组的步骤:1.声明数组并开辟空间 2.给数组各个元素赋值 3.使用数组
构造方式1:动态初始化
123int[] ints = new int[5]; // 创建了数组 name,存放5个intint ints2[] = new int[1]; // 这种写法也行ints[2] = 15; // 访问数组第3个数
构造方式2:动态初始化
123char ...
程序运行的流程控制决定程序是如何执行的,是我们必须掌握的。主要分为:顺序控制、分支控制、循环控制。
顺序控制
程序从上到下逐行执行,中间没有任何判断和跳转(默认的控制顺序)
比如:Java 定义变量时采用合法的前向引用。
12graph LRA(A语句)-->B(B语句)-->C(C语句)-->D(D语句)-->E(...)
语句:Java 中最小的执行单位。语句分为 单语句 和 复合语句。
单语句:通常意义的一条语句。语句间以分号 ; 分隔。
复合语句:一对大括号括起来的语句组。也称为 “块”
12345{ 语句1; 语句2; ...}
块中可以有多条语句。块后没有分号 ;不能在嵌套的两个块中声明同名的变量,否则将无法通过编译
分支控制 if-else
让程序有选择的执行。主要分为:单分支控制、双分支控制
单分支控制1if (条件表达式) 语句;
特别地,把代码块(复合语句)作为语句的场合也能这样写:
123if (条件表达式) { 执行代码块;}
当条件表达式为 ture,就 ...
运算符:一种特殊的符号,用于表示数据的运算、赋值和比较等。
算数运算符
算术运算符是对数值类型的变量进行运算的运算符,在 Java 程序中使用得非常多。其运算结果是一个数值量。
+ ; - ; * ; / :加(正)、减(负)、乘、除
5 / 2 = 2; 因为是 int。同理 5.0 / 2 = 2.5
% :取模(求余数),结果和被取模数同号。其实 a % b == a - (int)a / b * b;
11 % 9 = 2;
-11 % 9 = -2;
11 % -9 = 2;
-11 % -9 = -2;
++ :自增。
++i 先自增后赋值;i++ 先赋值后自增
12345int i = 10;int j = ++i; //等价于 i = i + 1; j = i; 此时 i = 10; j = 10`int k = i++; //等价于 k = i; i = i + 1; 此时 i = 11; k = 10`i = i++; //系统会先后执行 int temp = i; i = i + 1; i = tempi = ++i; ...
变量
变量:变量是程序的基本组成单位
变量的三个基本要素:类型 + 名称 + 值
示例:int a = 1 类型 int 名称 a 值 1
如何声明变量:
123456int a;a = 100;int b = 100;int c = 5, d;
变量使用注意事项
变量表示内存中的一个存储区域。不同变量,不同类型,占用的空间大小不同。如 int 有 4 byte,而 double 有 8 byte。
该区域有自己的名称 变量名 和类型 数据类型
变量必须先声明,后使用。
变量在同一作用域内不能重名。
该区域的数据值可以在同一类型范围内变化。
变量的三个基本要素:类型 + 名称 + 值
程序中 + 的使用
当左右两边都是数值型,做加法运算
当左右两边任意一方为字符串,做拼接运算
运算顺序是从左到右的
1System.out.println(1 + 1 + "a" + 1 + 1); // 输出 2a11
Java 数据类型基本数据类型(本章)
数值型
整数类型:
byte:占用 1 字节
short:占用 2 字节
int:占用 4 字节
lon ...
程序:一系列有序指令的集合
Java 历史
目前 Java 版权属于甲骨文公司。
长期支持的版本只有 Java8 与 Java11。这两个版本也是最多使用的版本。
Java SE:标准版
Java EE:企业版(重要)
Java ME:小型版(少)
Java 重要特点
面向对象(oop)
简单来说,面向对象是一种程序设计技术。其重点放在数据(对象)和对象的接口上。
健壮性
其强类型机制、异常处理、垃圾自动收集是健壮性的保证。
Java 强调早期问题检测、后期动态检测,及消除易出错的情况。其编译器能检测很多其他语言仅在运行时才会发现的问题。
可移植性
一个编译好的 .class 文件可以在多个不同系统下直接运行。
Java 中没有 “依赖具体实现” 的地方。其基本数据类型大小固定,有关运算的行为等都有明确说明。其绝大多数库都能很好地支持平台独立性,而不用担心操作系统。
解释型
解释型语言编译后需要解释器才能运行。相对的,编译型语言可以被直接执行。
Java 解释器能在任何移植了解释器的机器上直接执行 Java 字节码。
简单性
Java语法是C++语法的一个“纯净” ...