蓝旭的二次培训——张其欣

本文详细介绍了Java中异常的分类(如编译异常和运行异常),展示了如何处理异常(如try-catch和throws关键字),自定义异常类的定义,以及Java数据类型包装(如Integer、StringBuilder、BigDecimal等)和泛型、集合框架(List,Set,Map)的基础知识和操作。
摘要由CSDN通过智能技术生成

异常

程序可能存在的问题

异常的树状图

Throwable
├── Error
└── Exception
    ├── RuntimeException//运行异常
    └── IOException//其它
        ├── FileNotFoundException
        ├── EOFException
        ├── ...
    └── SQLException
        ├── DataTruncation
        ├── BatchUpdateException
        ├── ...
    └── ...

运行异常(跑了才知道已经是bug了)

编译异常

编译异常的解决方法

1.检查代码看看是不是自己犯傻了

2.try....catch方法(捕获)

try {age(n1);}catch (yichang1 e){e.printStackTrace();
    System.out.println("出现bug");}

3.throws 关键字(抛出)

public static void age(int a)throws yichang1//进行抛出
    if(a==18){ System.out.println("Age; "+ a);}
    else {
        throw new yichang1("Age不对");
}}

自定义异常类

运行异常类的定义

public class runtimeException extends RuntimeException {//继承RuntimeException
    public runtimeException() {
    } //重写构造器
    public runtimeException(String message) {
        super(message);
    }
}

编译异常类的定义

public class yichang1 extends Exception{//继承编译异常
    public yichang1() {
        super();
    }//重写构造器
​
    public yichang1(String message) {
        super(message);
    }
}

编译异常的具体实例

public class yichang{
    public static void main(String[] args) {
        Scanner n = new Scanner(System.in);
        int n1 = n.nextInt();
   try {age(n1);}catch (yichang1 e){e.printStackTrace();//进行监管
       System.out.println("出现bug");}
   ;}
​
​
public static void age(int a)throws yichang1{//编译异常必须用throws进行方法抛出不然会报错
    if(a==18){ System.out.println("Age; "+ a);}
    else {
        throw new yichang1("Age不对");//抛出异常
    }
    }}

包装类

定义:基本数据类型对应的引用类型

public static void main(String[] args) {
        Integer i1=1;//简单的赋值创建对象
        Integer i2=2;
        Integer i3=i1+i2;
        System.out.println(i3);
   }

integer的成员方法

除开Character每个都有对应的parse方法进行类型转换

String st=str.nextLine();
int i=Integer.parseInt(st);
System.out.println(i);

String字符串

直接赋值

String a="abc";

使用new来进行字符串对象创建

char []a={'a','b','c'};//可用于改变字符串内容
String b = new String(a);
System.out.println(b);
Byte []a={97,98,99};//可进行数字字符转换
Byte b = new Byte(a);
System.out.println(b);

StringBulider

StringBulide的构造方法

StringBulide的成员方法

StringBuilder sb = new StringBuilder();//创建对象
 sb.append(aab);//添加内容
sb.reverse();//反转内容
  int a=  sb.length();//获取长度
  String str = sb.toString();//变为字符串

StringBuffer

成员方法

StringBuffer n=new StringBuffer();
n.append("aaaa");
n.insert(3,'c');//在第三个符号添加一个
n.delete(3,5);//删除4,5位置的符号
String c=n.substring(2);//返回从2开始后面的符号
 System.out.println(c);

bigdecimal类

用于解决浮点运算失真

构造方法

成员方法

double a=0.1;
 double b=0.2;
BigDecimal a1=new BigDecimal.valueOf(a);//接入浮点型
BigDecimal b1=new BigDecimal.valueOf(b);
BigDecimal c1=a1.add(b1);//加法
BigDecimal c2=a1.subtract(b1);//减法
BigDecimal c3=a1.multiply(b1);//乘法
BigDecimal c4=a1.divide(b1, RoundingMode.HALF_UP);//除法(四舍五入)
  double c5=c4.doubleValue();//将其换回为浮点型

泛型

泛型:可以在加入之前便约束数据类型

泛型类:修饰符 class 类名<类型>{ }

public class fanxing<E> {//E为未知类型
​
Object []obj=new Object[10];
int a=0;
public void add(E e) {
    obj[a++]=e;
}
​
public E get(int n){
    return (E)obj[n];}}//强制转换为E类

泛型方法

public static <E> void add(E e) {
    obj[a++]=e;
}

泛型接口

list ,set和map

list的常用方法

ArrayList<Integer>list=new ArrayList<Integer>();
list.add(1);//添加
list.set(2,1);//修改
list.remove(1);//删除
      list.get(0);//取得

set集合保存数据不能重合是唯一无序的

  • HashSet: 这是基于哈希表实现的Set接口,它不允许集合中有重复的值。它的主要优点是插入和查询操作通常非常快,因为它利用了哈希表的特性。但是,HashSet中的元素是无序的。

  • TreeSet: TreeSet实现了SortedSet接口,因此它能够保持元素的有序状态。元素的排序是根据它们的自然排序或者由提供的Comparator确定的。由于需要维护元素的排序状态,所以相比HashSet,TreeSet的性能可能会稍差一些。

  • LinkedHashSet: 这个实现维护了一个运行于所有条目的双链表。这个数据结构使得插入顺序被保留,并且迭代访问更为快速

map

基本概念:Map中的每个元素都是一个键值对,即一对对象,其中一个对象作为键(Key),另一个对象作为值(Value)。键是唯一的,而值可以重复。

常用实现类:Java提供了多种Map的实现类,如HashMap、TreeMap和LinkedHashMap等。它们各自有不同的特点和适用场景。例如,HashMap提供了常数时间的性能,而TreeMap则能够保持键的顺序。

基本操作:Map接口定义了一些基本的操作方法,包括put()用于添加或更新键值对,get()用于根据键获取值,remove()用于删除键值对,以及clear()用于清除所有键值对。、

代码实例

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值