目录
2:包装类,string(buffer,builder),BigDecimal
1:异常的捕获,抛出,自定义异常.
认识异常:异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失.
异常的范例:
数组越界异常,数字格式化异常,算数异常,空指针异常
1:
空指针
2:
算数异常
捕获:
抛出://很重要因为不能因为一些错误就让程序终止
自定义异常类:
2:包装类,string(buffer,builder),BigDecimal
包装类:
把基本的数据类型进行包装如Byte,Integer(已经被弃用了);
包装的作用:
- 自动装箱:基本的数据类型可以自动转化为对应的包装类型
- 自动拆箱:包装类型可以自由转换为对应的基本数据类型
- 可以把基本类型转化为字符串类型
- 可以把字符串类型的数值转化成数值本身对应的数据类型
将int转化为Integer不爆红了
将其他类型转化为字符串类型
字符串到基本数据类型(字符串要全是数字)
String:
Stringbuilder:可以看作一个容器,创建后里面的内容是可变的
作用提高字符串的操作效率
string s=a+b+c+d;这样效率低,这个过程是每想加一次生成一个新的字符串
StringBuilder s= new StringBuilder("abc")
常用方法
public StringBuilder append() 添加数据返回对象本身
public StringBuilder reverse()反转容器种的内容
public int length()返回长度
public String toString() 实现把StringBuilder转化成String
为什么要将StringBuilder变成String?
(gpt给的说法)
-
不可变性:String 是不可变的,一旦创建就不能被修改。这在某些情况下是很有用的,比如在多线程环境下保证线程安全,或者作为方法的参数时不希望被修改。
-
安全性:String 类型是不可变的,可以避免在程序中意外地修改字符串内容,确保数据的安全性。
-
内存消耗:StringBuilder 在进行字符串拼接时会频繁修改内部的字符数组,可能会造成额外的内存消耗。将 StringBuilder 转换为String 后,可以释放 StringBuilder 占用的内存空间,提高程序的内存利用率。
参数传递:有些情况下需要将字符串作为参数传递给方法或者其他对象,此时使用 String 类型更为方便和安全。
链式编程:当我们调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法
int len = getString().substring(1),replace("A","Q").length()
StringBuffer:基本方法与Stringbuilder一样但是更安全一些并且效率低一点.
BigIntereger:
java中整数有四种类型:byte,short,int,long.
特点:上限高,对象一旦创建内部记录的值是不能改变的
BigIntereger(int num, Random rnd) 随机获得大整数
BigIntereger(String val) val只能包含数字,获得指定的大整数
BigIntereger(String val,int radix) 获得指定进制的大整数,把给定进制的数转化为10进制
BigIntereger valueOf(long val) 静态获取对象
方法名
加法add
减法subtract
乘法multiply
除法divide
BigDemical:
作用:用于小数的精确计算
bd=BigDemical(double x)
bd=BigDemical(string x)
通过valueOf静态创建
如果数不是很大建议静态创建
方法名:
加法add
减法subtract
乘法multiply
除法divide(BigDecimal val,精确几位,舍入模式)
3:泛类简介,列表,set,map
泛型:
可以在编译阶段约束操作的数据类型,并进行检查
泛型的格式<数据类型>
注意:泛型只能支持引用数据类型,如果符合条件就能向集合中添加,没有泛型时可以向集合中添加任意的数据类型
引用数据类型包括类、接口、数组等
作用:统一数据类型,让数据插入集合时不用强制转换,把运行时期的问题转到了编译阶段
细节:
- 泛型中不能写基本的数据类型
- 指定泛型的具体类型后,传递数据时,可以传入该类类型或者其子类类型
- 如果不写泛型默认是object类
泛型类:
class 类名<int>{
}
当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类
帮助理解
class ArrayList<E>{}
ArrayList<String> list = new ArrayList<>();
泛型方法:
使用情形方法:中形参类型不确定
方法一:使用类名后面定义的泛型,所有方法都能用
方法二:在方法申明上定义自己的泛型,只有本方法能用
<类型> 返回值类型 方法名(类型,变量名){}
public<T>void show<T t>{}
泛型接口;
interface 接口名<类型>{}
如何应用带一个泛型的接口
方法一:实现类给出具体类型
方法二:实现类延续泛型,创建对象时在确定
List:
实现
ArrayList
LinkedList
方法
add()在末尾添加
clear()清空
size()返回长度
isEmpty()是否为空
get(i)获取第i个元素
set(i,val)让第i个元素变成val
set:
实现:
HashSet
方法:
add()在末尾添加
clear()清空
size()返回长度
isEmpty()是否为空
get(i)获取第i个元素
set(i,val)让第i个元素变成val
map:
实现:
HashMap
方法:
put(key,value)加入
get(key)获取
containKey(key)看是否存在
remove移除关键字
size()
isEmpty()
clear()
entrySet()
getKey()获取关键字
getValue()获取值