1.概念:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描==>就是一个文本扫描器
2.构造方法
| 构造方法的名称 | 构造方法的描述 |
| public Scanner(File source) | 构造一个新的 Scanner 扫描指定的文件 |
| public Scanner(String source) | 构造一个新的 Scanner,它生成的值是从指定字符串扫描的(这个字 符串一般表示的就是文件的路径) |
| public Scanner(InputStream source) | 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的 |
3.常用的方法
| 方法的名称 | 方法的描述 |
| public String next() | 获取的键盘录入的字符串(这个字符串的格式不能包含空格) |
| public String nextLine() | 获取一行数据(获取的字符串是可以包含空格) |
| public String nextxxx() | 获取键盘录入的基本数据类型的数据(xxx 基本数据类型,没有 nextChar()方法) |
| public boolean hasNextxx() | 键盘录入的数据类型与接收的数据类型是否一致 |
public String nextLine()public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入字符串"); String s = input.next(); System.out.println(s); }12545 4
12545
public String nextxxx() 没有nextChar方法public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入字符串"); String s = input.nextLine(); System.out.println(s); }1234 5
1234 5
public boolean hasNextxx()public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入字符串"); int s = input.nextInt(); System.out.println(s); }输入字符串
定义时int输入是String报错
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入字符串"); if (input.hasNextInt()){ int age = input.nextInt(); System.out.println(age); }else { System.out.println("输入不合法"); }输入字符串
维护好
输入不合法Process finished with exit code 0
4.问题:
第一次输入的年龄 nextLine 直接读取回车键 所有结束了 不然输入
5.解决:
A.实例化一个新的Scanner
B.键盘都接收String类型 再将String转换为int类型
C.都是调用 nextLine() 是不会出现这种问题
Scanner input = new Scanner(System.in); int age = input.nextInt(); System.out.println(age); String name = input.nextLine(); System.out.println(name);20
20name没有输出直接断了
解决
二、Arrays数组的工具类(重点)Scanner input = new Scanner(System.in); int age = Integer.parseInt(input.nextLine()); System.out.println(age); String name = input.nextLine(); System.out.println(name);20
20
文静
文静
1.概念:此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂
2.常用的方法
| 方法的名称 | 方法的描述 |
| public static void sort(int[] a) | 对指定的 int 型数组按数字升序进行排序。该排序算法 是一个经过调优的快速排序法 |
| public static String toString(int[] a) | 返回指定数组内容的字符串表示形式 |
| public static int binarySearch(byte[] a, byte key) | 查找指定元素在数组中的索引值 |
| public static float[] copyOf(float[] original, int newLength) | 创建的一个新的数组 将旧的数组中的数据赋值到新的 数组中并且可以扩容 |
| public static void fill(int[] a, int val) | 将指定的 int 值分配给指定 int 型数组的每个元素 |
int [] arrays ={-1,30,80,40,70};
Arrays.sort(arrays);
System.out.println(Arrays.toString(arrays));
int binarySearch(byte[]a, byte key)
int [] arrays ={-1,30,80,40,70};
System.out.println(Arrays.binarySearch(arrays,80));
float[] copyOf(float[] original, int newLength)
void fill(int[] a, int val)int [] arrays ={-1,30,80,40,70}; int [] ints = Arrays.copyOf(arrays, 6); System.out.println(Arrays.toString(ints));[-1, 30, 80, 40, 70, 0]
三、异常概念int [] arrays ={-1,30,80,40,70}; Arrays.fill(arrays,100); System.out.println(Arrays.toString(arrays));[100, 100, 100, 100, 100]
1.概念:在编译期间 或者是程序运行期间 出现的错误 或者不正确的情况都是异常
2.异常的体系
| 异常类 | 说明 |
| Throwable | 所有异常类的直接父类或者是间接的父类,只有是Throwable异常以及其子 类异常才需要处理 |
| Error | 表示是非常严重的错误,这种错误是jvm内部产生,一般不用解决(栈内存异 常)StackOverflowError 栈内存溢出 |
| Exception | 表示不是非常严重的异常,这种异常必须解决 |
| RuntimeException | 运行时异常 |
编译时异常 运行时异常3.异常的分类:
A.编译时异常:在编译期间发生的异常 就是编译时异常
B.运行时异常:在程序运行期间发生的异常 就是运行时异常
四、jvm 处理异常
五、try - catch 处理异常1.如果执行一段代码 产生了异常 将异常信息封装到Throwable类中
2.将异常信息返回给调用者 一层 一层返回给调用者
3.如果所有的调用者都不处理异常 这个异常由jvm来进行处理
4.处理结果:停止程序 将异常信息打印到控制台
1.语法:
try{
可能出现异常的代码
}catch(异常类型的声明){
处理异常 或者 是打印异常异常
}
2.解释:
A.try 大括号后一定要可能出现异常的代码
B.catch小括号 是异常类型的声明 异常类型必须是Throwable的子类
C.catch 大括号后 是异常的处理的解决方案
3.执行的流程
A.执行try中的代码
B.如果不发生异常 继续往下执行代码
C.如果发生异常是 声明的时的异常子类或者是本身的时候 就执行catch的代码
D.如果生异常是 声明的时的异常 不匹配 则jvm处理异常
代码
六、try -catch-catch 捕获异常(重点)Scanner input = new Scanner(System.in); System.out.println("请输入第一个整数"); int num1=input.nextInt(); System.out.println("请输入第二个整数"); int num2 = input.nextInt(); try { int sum = num1/num2; System.out.println(sum); } catch (Exception e) { System.out.println("您输入的除数不能为0"); }请输入第一个整数
2
请输入第二个整数
0
您输入的除数不能为0
七、try -catch-finally捕获异常(重点)1.语法:
try {
可能产生异常的代码
}catch(异常声明1){
处理异常1方式
}catch(异常声明2){
处理异常2的方式
}
2.执行的流程:
A.执行可能发生异常的的代码
B.如果发生异常 依次与catch中的异常声明进行匹配 如果可以则执行 catch 大括号后的代码
C.如果发生异常 与catch中声明的异常不匹配 则jvm处理异常 停止程序运行 打印错误的信息
3.注意点:
A.在jdk1.7之后 多个异常的声明可以使用|来进行连接 一般不能连接Exception异常
B 声明多个异常的时候 异常类的范围从小到大来进行声明
八、try-finally1.语法:
try{
可能发生异常的代码
}catch(异常的声明){
处理异常的方式
}finally{
最终执行的代码
}
2.执行流程
A.执行可能发生异常的代码
B.依次与catch中声明异常进行匹配 如果可以匹配 则执行catch对应的大括号的代码 最后执行
finally代码
C.依次与catch中声明异常进行匹配 如果不可以匹配 则jvm处理异常 最后执行finally中的代码
3.说明:
A.不管是否发生异常 都会执行finally中的代码
B.如果return; 关键字不发生异常 先执行finally中代码 再执行return;
C.杀死jvm 才不会执行finally中的代码 System.exit(0);
九、Throwable1.语法:
try {
可能发生异常的代码
}finally{
最终执行的代码
}
2.执行的流程:
A.先执行可能发生异常的代码
B.再执行finally中的代码
3.特点:
A.不管是否发生异常 都会执行finally中代码
B.try 与finally中的代码进行分离 结构更加清晰
C.这种方式的异常处理只能由jvm来进行处理
1.概念:Throwable 类是 Java 语言中所有错误或异常的超类 两个子类的实例,Error 和
Exception
2.常用的方法
| 方法的名称 | 方法的描述 |
| public void printStackTrace() | 打印异常的堆栈信息 |
| public String toString() | 返回此 throwable 的简短描述 |
| public String getMessage() | 返回此 throwable 的详细消息字符串 |
代码
十、Throws(重点)1.Throws 声明异常
2.使用场景:程序在运行期间 可能发生异常 不想自身进行处理 就可以声明异常 给调用者来处理
3.语法:在方法的参数列表的后面
访问修饰符 返回值类型 方法的名称(参数列表) throws 异常1,异常2{
方法体;
retrun 返回值;
}
4.注意点:
A.声明的异常是运行时异常以及其子类 调用者不用处理 如果不是则需要调用者进行处理
B.声明异常的类型范围越小,越精确更好
public static void main(String[] args) {
showInfo();
}
public static void showInfo()throws ArithmeticException,RuntimeException{
System.out.println(1/0);
}
十一、Throw(重点)
十二、Throw与Throws1.Throw 抛出异常
2.语法:写在方法中
访问修饰符 返回值类型 方法的名称(参数列表){
throw new 异常类型
}
3.说明:
A.如果在方法中 抛出的异常是运行时异常的子类以及其本身 则不需要在方法上进行异常的声明
B.如果在方法中 抛出不是运行时异常 要么进行异常的捕获 要么进行异常的声明
C.一般发生异常 建议捕获
D.在实际开发一般Throw与Throws会进行搭配的使用
| Throw | Throws |
| 抛出异常 | 声明异常 |
| 定义中方法中 | 定义在方法参数的后面 |
| 在作用域下只能抛出异常 | 声明可以声明多个异常 |
| 异常是存在的 肯定会发生 | 声明异常不一定会发生 |
十四、自定义异常(了解)在继承中 子类重写方法的时候 声明的异常的范围 不能超出父类异常的范围 要么是本身或者是其子类
十五、集合概念(重点)1.概念:在实际项目中项目需要的异常信息 jdk不能满足的时候 就使用自定义异常
2.步骤:
A.定义一个类继承Throwable 或者是 Exception
B.调用父类的构造方法来传递异常信息
单列集合 双列集合 十六、Collection集合(重点)1.集合:用于存储数据的容器
2.数组与集合的区别:
相同点:都是用于存储数据的容器
不同点:
A.数组可以存储基本数据类型 也可以存储引用数据类型 集合只能存储引用数据类型
B.数组的是固定 集合的长度不是固定
3.集合的体系:
单列集合: 集合中的一个数据都是独立的单元
双列集合 集合中的数据是以组为单位来进行存储 以键值对来进行存储
1.概念:Collection 层次结构 中的根接口 子接口 Set 和 List
2.使用多态来实例化对象
3.展示实现类
4.常用的方法
| 方法的名称 | 方法的描述 |
| boolean add(E e) | 向列表的尾部添加指定的元素 |
| void clear() | 从列表中移除所有元素 |
| boolean contains(Object o) | 列表是否包含指定的元素 |
| boolean isEmpty() | 列表中是否包含元素 |
| Iterator iterator() | 将集合转换为迭代器 |
| boolean remove(Object o) | 删除集合中指定的元素 |
| int size() | 返回集合中元素的个数 |
| Object[] toArray() | 将集合转换为数组 |



