Java异常类
1.什么是异常
异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失。
例如下标越界异常 (IndexOutOfBoundsException)空指针异常(NullPointerException)
算术异常( ArithmeticException)数字格式化异常(NumberFormatException)等等,下面是其中一些实例:
空指针异常:
算数异常:
2.异常的处理
1.捕获
初步try&catch处理异常:
try{
异常语句
}catch(Exception e){
}finally{
一定会执行的代码
}
public class ExceptionDemo {
public static void main(String[] args) {
int a = 10;
int b = 0;
int temp = 0;
try {
temp =a/b;
}catch (Exception e){
System.out.println(e);
}
System.out.println(temp);
}
}
运行如下:
java.lang.ArithmeticException: / by zero
0
2.抛出
在Java中抛出异常的方法是用关键字throw与throws引发明确的异常。
二者区别在于:
throws关键字是声明在方法首部的,表示这个方法体会有抛异常的行为,只是一个可能性的评估;但是throw关键字是一个具体的关键动作,是会通过判断去抛出具体异常的这么一个行为;
public class test4 {
public static int divide(int x, int y) throws ArithmeticException{
//抛出可能会发生的异常
if(y == 0) {
throw new ArithmeticException("y == 0");
//具体执行会抛出异常的动作
}
return x / y;
}
public static void main(String[] args) {
try{
int ret = divide(10,5);
System.out.println(ret);
}catch (ArithmeticException e){
e.printStackTrace();
System.out.println("异常警告,除数为0");
}finally {
System.out.println("程序结束");
}
}
}
3.自定义异常
自定义异常直接继承Exception就可以完成自定义异常:
public class XXXXException extends Exception 或者RuntimeException{
添加一个空参构造方法
添加一个带异常信息的构造方法
}
public class MyException extends Exception {
private int errorCode;
public MyException(String message, int errorCode) {
super(message);
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
}
Java常用类
1.包装类
基本数据类型所对应的引用数据类型 java.lang为包装类;
包装类还提供更多的功能例如:获得类型的最大值:Integer.MAX_VALUE;最小值Integer.MIN_VALUE;将一个类型转为另一个类型integer.doubleValue();将字符串转化为数字Integer.parseInt("100");将数字转化为字符串Integer.toString(100)等等;
2.String类
使用
创建方法如下:
String name = "hello"; // "hello" 常量存储在字符串池中。
name = "zhangsan"; //"zhangsan" 赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟空间。
String name2 = "zhangsan" ; //如果有就引用, 没有就重新开辟空间。
//字符串另一种创建方式 。
String s = new String("java是最好的编程语言")://在堆和栈里同时创建,栈里的指向堆里的。
String str = new String("java");
String str2 = new String("java");
System.out.println(str==str2);//返回false new 新建对象。 用equals 比较的数据返回true。
StringBuffer与StringBuilder
StringBuffer: 可变长字符串,JDK1.0提供,运行效率慢、线程安全;
StringBuilder: 可变长字符串,JDK5.0提供,运行效率快、线程不安全;
StringBuffer sb = new StringBuffer();
1 sb.append(String str);//在字符串末尾追加
2.sb.insert(int index,String str);//在index位置添加str
3.sb.replace(int start,int end,String str);//下标为start到下标为end-1的位置替换为str,! 换头不换尾!
4.sb.delete(int start,int end);//删除下标为start到下标为end-1的位置
另外,StringBuffer和StringBuilder 均比String效率高、节省内存 ;
3.BigDecimal类
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal;
创建方式:
BigDecimal bd = new BigDecimal("1.0");
使用:
public class Test {
public static void main(String[] args) {
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
System.out.println(bd1.add(bd2)); //加法
System.out.println(bd1.subtract(bd2)); //减法
System.out.println(bd1.multiply(bd2)); //乘法
System.out.println(bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP)); //除法
}
}
容器,泛型
1.容器
例如数组,用于储存数据;
2.list
有LinkedList和ArrayList:
-
LinkedList使用链表的方式进行过存储(不连续成块的内存)
-
ArrayList使用数组的形式进行存储(连续的内存)
3.set
一个不包括重复元素(包括可变对象)的Collection,是一种无序的集合。Set不包含满足 a.equals(b) 的元素对a和b,并且最多有一个null。实现Set的接口有:EnumSet、HashSet、TreeSet等;
Set set = new HashSet();
set.add("2"); set.add("1"); set.add("1");
System.out.println(set);
//上面代码运行只输出一个1且1和2的顺序随机
4.泛型
泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型
使用泛型一方面使代码更加简洁高效,另一方面避免了下转型强转的安全问题(不使用泛型的话,读取时就需要对集合中的数据进行强转)使用泛型在编写集合时声明了类型,增强代码可读性和稳定性。
泛型类形如class Object的声明,例如(源另):
class ObjectExample<T> {
private T a;
public T getA() {
return a;
}
public void setA(T a) {
this.obj = a;
}
}
public class Test{
public static void main(String[] args){
ObjectExanple<Integer> a = new ObjectExanple<Integer>();
a.setA(23);
System.out.println(a.getA());
由此可以声明对象,可以使用<>规定这个对象的类型,方便编程,此后当我们使用类时可能仅仅需要一个用泛型的方法,不需要整个类是泛型类。
5.map
Map是java中的接口,提供了一些常用方法,如keySet()、entrySet()等方法;
Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。
标签:Java,String,int,System,蓝旭,泛型,println,异常,public From: https://blog.csdn.net/zhiyelee/article/details/137173876