java笔记-常用工具类

异常

在程序运行过程中,意外发生打情况,背离我们程序本身的意图打表现,都可以理解为异常。
java规定

  • 对于可查异常必须捕捉、或者声明抛出
  • 允许忽略不可查打RuntimeException(含子类)和Error(含子类)
    try-执行可能产生异常的代码
    catch-捕获异常
    finally-无论是否发生异常代码总能执行
    throws-声明可能要抛出的异常
    throw-手动抛出异常

try块后可接零个或多个catch块,如果没有catch块则必须跟一个finally块。

     try{
    
    int one=input.nextInt();
        int two=input.nextInt();
        System.out.println("商是:"+(one/two));
    }catch(Exception e){
    
    
            System.out.println("错误");
            e.printStackTrace();
        }finally{
    
    
            System.out.println("结束");
        }

System.exit(1);终止程序运行

throws
如果一个方法可能会出现异常,但没有能力处理异常,可以在方法声明处throws语句来声明抛出异常。
throws语句用在方法定义时声明该方法要抛出的异常类型。
当方法抛出异常列表中点异常时,方法将不对这些类型及其子类类型点异常做处理,抛向调用该方法点方法,由他去处理。

通过throws抛出异常时,针对可能出现点多种异常情况,解决方案:
1、throws后面接多个异常类型,中间用逗号分隔
2、throws后面接Exception

throw
抛出一个异常
例如:throw new IOException();
throw抛出的只能够是可抛出类Throwable或者其子类的实例对象。

throw抛出异常对象点处理方案
1、通过try…catch包含throw语句–自己抛自己处理
2、通过throws在方法声明抛出异常类型–谁调用谁处理-调用者可以自己处理,也可以继续上抛
此时可以抛出与throw对象相同点类型或者其父类

自定义异常
自定义异常,就是定义一个类,去继承Throwable类或者它点子类。
异常链
将异常发生点原因一个传一个串起来,即把底层点异常信息传给上层,这样逐层抛出。

字符串

String的不可变性
String对象一旦被创建,则不能修改,是不可变的
所谓的修改其实是创建了新的对象,所指向的内存空间不变

String和StringBuilder的区别
String具有不可变性,而StringBuilder不具备
当频繁操作字符串时,使用StringBuilder。

StingBuilder和StringBuffer
二者基本相似
StringBuffer是线程安全的,StringBui则没有,所以性能略高。

扫描二维码关注公众号,回复: 12979090 查看本文章

集合

应用场景
无法预测存储数据的数量
同时存储具有一对一关系的数据
需要进行数据的增删
数据重复问题

List(列表)
List的元素有序并且可以重复的集合,称为序列
List可以精确的控制每个元素的插入位置,或删除某个位置的元素
List的两个主要实现类是ArrayList和LinkedList

ArrayList
ArrayList底层是由数组实现的
动态增长,以满足应用程序的需求
在列表尾部插入或删除数据非常有效
更适合查找和更新元素
ArrayList中的元素可以为null

Set
Set是元素无序并且不可以重复的集合,被称为集。

HashSet
HashSet是Set的一个重要实现类,称为哈希集
HashSet中的元素无序并且不可以重复
HashSet中只允许一个null元素
具有良好的存取和查找性能

Iterator(迭代器)
Iterator接口可以以统一的方式对各种集合元素进行遍历
hasNext()方法检测集合中是否还有下一个元素
next()方法返回集合中的下一个元素

Map
Map中的数据是以键值对(hey-value)的形式存储的
key-value以Entry类型的对象实例存在
可以通过key值快速地查找value
一个映射不能包含重复的键
每个键最多只能映射到一个值

HashMap
基于哈希表的Map接口的实现
允许使用null值和null键
key值不允许重复
HashMap中的Entry对象是无序排列的

集合排序

Comparator接口
强行对某个对象进行整体排序的比较函数。
可以将Comparator传递给sort方法(如Collections.sort或Arrays.sort)

int compare(T o1, T o2) 比较用来排序的两个参数。
如果o1<o2,返回负整数
如果o1==o2,返回0
如果o1>o2,返回正整数

boolean equals(Object obj)指示某个其他对象是否“等于”此Comparator
此方法可以被Object类中的equls方法覆盖,不必重写。

Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。
这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。
对于集合,通过调用Collections.sort方法进行排序。
对于数组,通过调用Arrays.sort方法进行排序。
int compareTo(To)方法
该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

Comparator Comparable
位于java.util包 位于java.lang包
在要比较的类的外部实现该接口 在要比较的类上实现该接口
调用sort方法时,要指定Comparator的实现类 调用sort方法时,只需指定集合名即可

泛型

为什么使用泛型:
在java中增加泛型之前,泛型程序设计使用继承来实现的
坏处:
需要强制转换
可向集合中添加任意类型的对象,存在风险。

泛型的使用
Listlist=new ArrayList();
javase7及以后的版本中,构造方法中可以省略泛型类型。
Listlist=new ArrayList<>();

多线程

进程的概念
进程是指可执行程序并存放在计算机存储器的一个指令序列,它是一个动态执行的过程。
线程
线程是比进程还要小的运行单位,一个进程包含多个线程
线程可以看做一个子程序

线程的创建
创建一个Thread类,或者一个Thread子类的对象
创建一个实现Runnable接口的类的对象

猜你喜欢

转载自blog.csdn.net/weixin_42403632/article/details/106385100