常用工具类

一:异常

1.异常
本质是程序上的错误
2.程序中的异常
异常就是程序在运行过程中出现的一些错误,我们通过面向对象的思想,把这些错误也用类来描述,那么一旦产生一个错误,即就是创建了某一个错误的对象,这个对象就是我们所说的异常对象
3.异常的分类
(1)Error
程序无法处理的错误,较为严重;如:Java虚拟机运行错误
(2)Exception
Exception是程序本身可以处理的异常使用空的对象引用调用方法数组访问时下标越界。异常处理通常只针对这种类型异常的处理
Exception类的异常包括checked exception和unchecked exception

4.异常处理机制
(1)try 监控区域,执行可能产生异常的代码
(2)catch捕获、处理异常
(3)finally 善后处理,无论是否发生异常,代码总是执行
1>try-catch-finally
try{}语句块中放的是要检测的Java代码,可能有会抛出异常,也可能会正常执行
catch{}(异常类型){}块是当Java运行时系统接收到try块中所抛出的异常对象时,会寻找能处理这一异常catch块来进行处理(可以有多个catch块)
finallly{}不管系统有没有抛出异常都会去执行,一般用来释放资源。除了在之前执行了System.exit(0)

public  void  method(){
    try  {
    //  代码段  1
    //  产生异常的代码段  2
    }  catch  (异常类型  ex)  {
    //  对异常进行处理的代码段3
    }finally{
    //  代码段  4
    }
}

2>try-catch

public  void  method(){
    try  {
    //  代码段
    }  catch  (异常类型  ex)  {
    //  对异常进行处理的代码段
    }
    //  代码段
}

3>多重捕获块

try{
   // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}catch(异常类型3 异常的变量名3){
  // 程序代码
}

throws/throw关键字
throw关键字用于在代码中抛出异常,而throws关键字用于在方法声明中指定可能会抛出的异常类型
1>throw

public  void  method(){
    try  {
    //  代码段  1
    throw  new  异常类型(  );
    }  catch  (异常类型  ex)  {
    //  对异常进行处理的代码段2
    }
}

2>throws

public  void  method()  throws  Exception1,Exception2,...,ExceptionN  {
//  可能产生异常的代码
}

二:包装类

1.java数据类型


2.装箱与拆箱
装箱:把基本数据类型转换成包装类
拆箱:把包装类转换成基本数据类型
3.类型转换
(1)基本数据类型转换为字符串
使用toString()方法
(2)字符串转换为基本数据类
调用包装类的parseXxx()静态方法
调用包装类的valueOf()方法转换为基本类型的包装类,自动拆箱型

三:字符串

1.创建String对象的方法
eg:

String  s1="java";
String  s2=new  String();
String  s3=new  String("java")

2.String常用方法

charAt(int index): 返回指定索引处的字符。
indexOf(int ch): 返回指定字符的索引。
indexOf(String str): 返回指定子字符串的索引。
lastIndexOf(int ch): 返回指定字符在字符串中最后一次出现的索引。
lastIndexOf(String str): 返回指定子字符串在字符串中最后一次出现的索引。
replace(char oldChar, char newChar): 用新字符替换旧字符。
substring(int beginIndex, int endIndex): 返回从指定位置开始到结束位置的子字符串。
toUpperCase(): 将字符串转换为大写字母。
toLowerCase(): 将字符串转换为小写字母。
trim(): 去除字符串两端的空白字符。
split(String regex): 根据给定的正则表达式将字符串分割为一个字符串数组。
length(): 返回字符串的长度。
equals(Object anObject): 比较两个字符串是否相等。
equalsIgnoreCase(String anotherString): 比较两个字符串是否相等,忽略大小写。
getBytes(String charsetName): 使用指定的字符集将此字符串编码为字节序列,并将结果存储到一个新的byte数组中。

四.集合

1.集合框架体系

2.List(列表)
List是元素有序并且可以重复的集合,称为序列
List可以精确的控制每个元素的插入位置,或删除某个位置的元素
List的两个主要实现类是ArrayList和LinkedList
1>ArrayList
ArrayList底层是由数组实现的
动态增长,以满足应用程序的需求
在列表尾部插入或删除非常有效
更适合查找和更新元素
ArrayList中的元素可以为null
2>LinkedList:
特点: 双向链表,元素之间通过指针连接。
优点: 插入和删除元素高效,迭代器性能好。
缺点: 随机访问相对较慢。
3.Set
Set是元素无序并且不可以重复的集合,被称为集
4.HashSet
HashSet是Set的一个重要实现类,称为哈希集
HashSet中的元素无序并且不可以重复
HashSet中只允许一个null元素
具有良好的存取和查找性能
5.Iterator(迭代器)
Iterator接口可以以统一的方式对各种集合元素进行遍历
hasNext()方法检测集合中是否还有下一个元素
next()方法返回集合中的下一个元素
6.Map
Map中的数据是以键值对(key-value)的形式存储的
key-value以Entry类型的对象实例存在
可以通过key值快速地查找value
一个映射不能包含重复的键
每个键最多只能映射到一个值
7.HashMap
基于哈希表的Map接口的实现
允许使用null值和null键
key值不允许重复
HashMap中的Entry对象是无序排列的

五:泛型

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数
1.泛型方法
定义泛型方法的规则:
1>所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的 <E>)。
2>每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
3>类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
4>泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像 int、double、char 等)。
2.java中泛型标记符
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的 java 类型
3.泛型类
一个泛型类就是具有一个或多个类型变量的类。泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。
(1)类型通配符
类型通配符一般是使用 ? 代替具体的类型参数。例如 List<?> 在逻辑上是 List<String>,List<Integer> 等所有 List<具体类型实参> 的父类。

六:java多线程

一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
(1)Thread类

常用方法

(2)线程创建
通过实现 Runnable 接口;
通过继承 Thread 类本身,重写run()方法
通过 Callable 和 Future 创建线程。
(3)线程状态
1>新建状态:
使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。
2>就绪状态:
当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。
3>运行状态:
如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。
4>阻塞状态:
如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种:

等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。
同步阻塞:线程在获取 synchronized 同步锁失败(因为同步锁被其他线程占用)。
其他阻塞:通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态。当sleep() 状态超时,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。

5>死亡状态:
一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。

七:输入输出流

1.I/O流
IO流:I的全称是Input,O的全称是Output。表示读取,流可以看做是程序传输数据的通道。
作用:解决程序请求资源,输出资源的问题。
特性:流是一个管道,该管道具有先进先出的特性,最先写入的数据最先被读取到;并且必须顺序
读取。
每一种流不能同时肩负输入,输出两种功能。必须单一的是输入流或者输出流
2.分类
(1)按照流向分类,可以分为输出流和输出流
(2)按照处理数据的单位来分类,可以分为字节流和字符流
(3)3按照功能来分类,可以分为处理流和辅助流


茶色岛
62 声望1 粉丝

« 上一篇
Java面向对象
下一篇 »
GIT学习