第二周预习

1.Java中的异常

Java中本就有Java.lang.Throwable。其分为两大类,一为error,这个暂时我们还不必理会;另一个是Exception类,它之下又有两类,一个是编译时不显示而在运行时提示异常(RuntimeException),另一个则是编译时就异常。

再有就是自定义异常。同样分为运行时异常和编译异常。它则是先定义一个异常类继承RuntimeException,重写构造器,通过throw new异常类创建异常对象并抛出。后者与这个过程类似,不过继承的是另一类。

public class AgeillegalRuntimeException extends RuntimeException{
    public AgeillegalRuntimeException() {
    }

    public AgeillegalRuntimeException(String message) {
        super(message);//封装
    }
}

有关异常的处理方法,这里了解了捕获和抛出。下层方法向上抛给调用方法,而最上层的方法则是进行捕获。这里的捕获又有两种情况:捕获并响应合适的信息给用户,捕获异常并尝试修复。

这里有简单练习两个代码,但博主掌握并不熟练。

public class Exceptiontest1 {
    public static  void  main(String[] args){
        savaAge(160);
    }
    public static void savaAge(int age){
        if(age>0&&age<150){
            System.out.println("年龄被成功保存:"+age);
        }else{
            //用throw抛出这个异常对象
          throw  new AgeillegalRuntimeException("/age is illegal");
        }
    }
}
public class Exceptiontest2 {
    public static void  main(String[] args){
       try{ test1();}
       catch (FileNotFoundException e){
           System.out.println("文件不存在");
           e.printStackTrace();
       }
       catch(ParseException e){
           System.out.println("时间有问题");
           e.printStackTrace();
       }
    }
    public static  void  test1() throws {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdf.parse("2028-11-11 10:24");
        System.out.println(d);
        test2();
    }
    public  static  void  test2() throws FileNotFoundException {
        InputStream is =new FileInputStream("D:/meinv.png");
    }
}

2.常用类

这里博主主要预习了包装类、String类和BigDecimal类

包装类

包装类的主要作用是将基本数据类型转换为对象,从而允许基本数据类型参与面向对象的操作,例如作为集合的对象。它可以自动装箱、自动拆箱,同时还提供多种方法。

public class WrapperExample {
    public static void main(String[] args) {
        // 自动装箱
        Integer num = 10;

        // 自动拆箱
        int value = num;

        System.out.println("Value: " + value); // 输出 "Value: 10"
    }
}

String类

它针对的对象就是字符串。这里博主在学习的时候,有了解到其直接使用时,字符串字面值存储在字符串池中且可以共享。(这里就跟博主上周上课学到的Java内部的逻辑有了联系)

package lianxi2;

public class Stringdemo {
  String name ="hello";//hello常量储存在字符串池中
  name ="zhangsan";//张三赋值给name变量,但不是修改,而是重新开辟
  String name2="zhangsan";
}

但也可以使用new方法,不过这会产生两个对象,一个在堆中,一个在方法区,此时栈中的地址指向堆。

BigDecimal类

它相较与double有着更高的精度。在使用double时会产生结果不准的情况,因为数据的存储是有微小误差的,计算时也会有误差,所以当我们面临的实际情况 对结果精度要求很高时,我们就会要使用这个类。

这里博主做了一个实力练习。

package lianxi2;

import java.math.BigDecimal;

public class demo3 {
  public static void main(String[] args) {
	  BigDecimal a1 = new BigDecimal("1.0");
	  BigDecimal a2 = new BigDecimal("0.9");
	  BigDecimal a3 = a1.subtract(a2);
	  System.out.println(a3);
  }
}

3.容器与泛型。

这里主要是了解了有关list、set、map的知识。

List

List是一个有序的集合,可以包含重复的元素。它提供了对元素的索引访问,支持在任意位置插入和删除元素。其常见的实现类有三个。这里不再赘述,只看博主进行的实例练习。

import java.util.ArrayList;
import java.util.List;
public class ListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");// 访问元素
        System.out.println(list.get(1)); // 输出 "Banana"// 遍历列表
        for (String fruit : list) {
            System.out.println(fruit);
        }// 插入元素
        list.add(1, "Date");
        System.out.println(list); // 输出 [Apple, Date, Banana, Cherry]// 删除元素
        list.remove(1);
        System.out.println(list); // 输出 [Apple, Banana, Cherry]
    }
}

Set

Set是一个不包含重复元素的集合。它不保证元素的顺序,且不允许重复元素。

import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Cherry");
        for (String fruit : set) {
            System.out.println(fruit);
        }

        // 检查元素是否存在
        System.out.println(set.contains("Banana")); // 输出 true

        // 删除元素
        set.remove("Banana");
        System.out.println(set); // 输出 [Apple, Cherry]
    }
}

Map

Map是一个键值对的集合,每个键映射到一个值。键是唯一的,但值可以重复。Map不保证键值对的顺序。

import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

        // 访问键值对
        System.out.println(map.get("Banana")); // 输出 2

        // 检查键是否存在
        System.out.println(map.containsKey("Apple")); 

        System.out.println(map.containsValue(2)); 
        map.remove("Banana");
        System.out.println(map);
    }
}

其他更加具体的、深入的知识还要在课上继续加深印象并提升熟练程度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值