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);
}
}
其他更加具体的、深入的知识还要在课上继续加深印象并提升熟练程度。