栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

day13:Scanner、Arrays数组的工具类、异常、集合Collection

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

day13:Scanner、Arrays数组的工具类、异常、集合Collection

一、Scanner(了解)

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 next()
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 nextLine()
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 String nextxxx()   没有nextChar方法
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 boolean hasNextxx()
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
20

name没有输出直接断了

解决

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
文静
文静

二、Arrays数组的工具类(重点)

 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 型数组的每个元素
void sort(int[] a)和String toString(int[] a)搭配
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)
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]

 void fill(int[] a, int val)
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 处理异常

1.如果执行一段代码 产生了异常  将异常信息封装到Throwable类中
2.将异常信息返回给调用者  一层 一层返回给调用者
3.如果所有的调用者都不处理异常 这个异常由jvm来进行处理
4.处理结果:停止程序 将异常信息打印到控制台

 五、try - catch 处理异常

1.语法:
        try{
          可能出现异常的代码
        }catch(异常类型的声明){
          处理异常 或者 是打印异常异常
        }
2.解释:
         A.try 大括号后一定要可能出现异常的代码
         B.catch小括号 是异常类型的声明 异常类型必须是Throwable的子类
         C.catch 大括号后 是异常的处理的解决方案
3.执行的流程
        A.执行try中的代码
        B.如果不发生异常 继续往下执行代码
        C.如果发生异常是 声明的时的异常子类或者是本身的时候 就执行catch的代码
        D.如果生异常是 声明的时的异常 不匹配 则jvm处理异常

代码

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-catch 捕获异常(重点) 

1.语法:
         try {
          可能产生异常的代码
         }catch(异常声明1){
           处理异常1方式
         }catch(异常声明2){
           处理异常2的方式
         }
2.执行的流程:
         A.执行可能发生异常的的代码
         B.如果发生异常 依次与catch中的异常声明进行匹配 如果可以则执行 catch 大括号后的代码
         C.如果发生异常 与catch中声明的异常不匹配 则jvm处理异常 停止程序运行 打印错误的信息
3.注意点:
         A.在jdk1.7之后 多个异常的声明可以使用|来进行连接 一般不能连接Exception异常
         B 声明多个异常的时候 异常类的范围从小到大来进行声明

 七、try -catch-finally捕获异常(重点)

1.语法:
         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);

八、try-finally 

1.语法:
         try {
          可能发生异常的代码
         }finally{
          最终执行的代码
         }
2.执行的流程:
         A.先执行可能发生异常的代码
         B.再执行finally中的代码
3.特点:
         A.不管是否发生异常 都会执行finally中代码
         B.try 与finally中的代码进行分离 结构更加清晰
         C.这种方式的异常处理只能由jvm来进行处理

 九、Throwable

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(重点)

1.Throw 抛出异常
2.语法:写在方法中
         访问修饰符 返回值类型  方法的名称(参数列表){
           throw new 异常类型
 
         }
3.说明:
         A.如果在方法中 抛出的异常是运行时异常的子类以及其本身 则不需要在方法上进行异常的声明
         B.如果在方法中 抛出不是运行时异常 要么进行异常的捕获 要么进行异常的声明
         C.一般发生异常 建议捕获
         D.在实际开发一般Throw与Throws会进行搭配的使用

 十二、Throw与Throws
ThrowThrows
抛出异常声明异常
定义中方法中定义在方法参数的后面
在作用域下只能抛出异常声明可以声明多个异常
异常是存在的 肯定会发生声明异常不一定会发生
十三、继承中的异常(重点)

在继承中 子类重写方法的时候 声明的异常的范围 不能超出父类异常的范围 要么是本身或者是其子类

十四、自定义异常(了解) 

1.概念:在实际项目中项目需要的异常信息 jdk不能满足的时候 就使用自定义异常
2.步骤:
         A.定义一个类继承Throwable 或者是 Exception
         B.调用父类的构造方法来传递异常信息

十五、集合概念(重点)

1.集合:用于存储数据的容器
2.数组与集合的区别:
         相同点:都是用于存储数据的容器
         不同点:
           A.数组可以存储基本数据类型 也可以存储引用数据类型 集合只能存储引用数据类型
           B.数组的是固定 集合的长度不是固定
3.集合的体系:
         单列集合: 集合中的一个数据都是独立的单元
         双列集合 集合中的数据是以组为单位来进行存储  以键值对来进行存储

单列集合

 双列集合

 十六、Collection集合(重点)

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()将集合转换为数组

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号