异常简介
阻止当前方法或作用域,称之为异常
Throwable : Error Exception
Exception 分为检查异常和非检查异常
非检查异常有空指针异常,数组下标越界异常,类型转换异常,算术异常等
检查异常:文件异常,SQL异常
处理异常
try-catch以及try-catch-finally
java中的异常抛出
throw - 将产生的异常抛出
throws - 声明将要抛出何种类型的异常(声明)
自定义异常
class自定义异常类 extends 异常类型{
}
java中的异常类
总结
1 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
2 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
3 对于不确定的代码,也可以加上try-catch,处理潜在的异常
4 尽量去处理异常,切记只是简单的调用printStackTrace()去打印输出
5 具体如何处理异常,要根据不同的业务需求和异常类型去决定
6 尽量添加finally语句块去释放占用的资源
“==” 和 equals() 有什么区别?
==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象
equals(): 比较存储在两个字符串对象中的内容是否一致
包装类主要提供了两大类方法:
1. 将本类型和其他基本类型进行转换的方法
2. 将字符串和本类型及包装类互相转换的方法
基本类型转换为字符串有三种方法:
1. 使用包装类的 toString() 方法
2. 使用String类的 valueOf() 方法
3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串
Calendar 类
java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();
java中的集合框架
java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。
集合的作用
在类的内部,对数据进行组织。
简单而快速的搜索大数量的条目
有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素
有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型
集合与数组的对比
数组的长度固定,集合长度可变
数组只能通过下表访问元素,类型固定,而有的集合可以
通过任意类型查找所映射的具体对象
java中的集合框架结构
Collection Map
Collection(List Queue Set)
Map(Hashmap)
Collection接口、子接口以及实现类
Collection接口
是List、Set和Queue接口的父接口
定义了可用于操作List、Set和Queue的方法-增删改查
List接口及其实现类-ArrayList
List是元素有序并且可以重复的集合,被称为序列
List可以精确的控制每个元素的插入位置,或删除某个位置元素
ArrayList-数组序列,是List的一个重要实现类
ArrayList底层是由数组实现的
泛型
集合中的元素,可以是任意类型的对象(对象的引用)
如果把某个对象放入集合,则会忽略他的类型,而把他当做Object处理
泛型则是规定了某个集合只可以存放特定类型的对象
会在编译期间进行类型检查
可以直接按指定类型获取集合元素
Set接口及其实现类-HashSet
Set是元素无序并且不可以重复的集合,被称为集
HashSet-哈希集,是Set的一个重要实现类
Set是无序的,List是有序的
Set中,添加某个对象,无论添加多少次,最终只会保留一个该对象
还可以添加空的对象
Map和HashMap
Map接口
Map提供了一种映射关系,其中的元素是以键值对(key-value)的
形式存储的,能够实现根据key快速查找value
Map中的键值对以Entry类型的对象实例形式存在
键(key值)不可重复,value值可以
Map支持泛型,
HashMap类
HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
HashMap中的Entry对象是无序排列的
key值和value值都可以为null,但是一个hashMap只能有一个key值为null的映射
(key值不可重复)
案例: package hpu.edu.cn.Admin; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.Set; public class MapTest { /** * @param args */ public Map<String, Student> students; public MapTest(){ this.students = new HashMap<String,Student>(); } public void testPut(){ Scanner console = new Scanner(System.in); int i = 0; while(i < 3){ System.out.println("请输入学生ID:"); String ID = console.next(); Student st = students.get(ID); if(st == null){ System.out.println("请输入学生姓名:"); String name = console.next(); Student newSt = new Student(ID,name); students.put(ID, newSt); System.out.println("成功添加学生:" + students.get(ID).name); i++; }else{ System.out.println("该学生ID已被占用!!"); continue; } } } public void testKeySet(){ Set<String> keySet = students.keySet(); System.out.println("总共有:" + students.size() + "个学生!!"); for (String stuId:keySet) { Student st = students.get(stuId); if(st != null){ System.out.println("学生:" + st.name); } } } public void testRemove(){ Scanner console = new Scanner(System.in); while(true){ System.out.println("请输入要删除学生的ID:"); String ID = console.next(); Student st = students.get(ID); if(st == null){ System.out.println("该ID不存在!!"); continue; } students.remove(ID); System.out.println("成功删除学生:" + st.name); break; } } /* * * entrySet方法来遍历Map **/ public void testEntrySet(){ Set<Entry<String,Student>> entrySet = students.entrySet(); for(Entry<String,Student> entry:entrySet){ System.out.println("取得键:" + entry.getKey()); System.out.println("对应的值为:" + entry.getValue().name); } } public void testModify(){ System.out.println("请输入要修改的学生ID:"); Scanner console = new Scanner(System.in); while(true){ String stuID = console.next(); Student student = students.get(stuID); if(student == null){ System.out.println("该ID不存在!请重新输入!"); continue; } System.out.println("当前该学生ID,所对应的学生为:" + student.name); System.out.println("请输入新的学生姓名:"); String name = console.next(); Student newSt = new Student(stuID,name); students.put(stuID,newSt); System.out.println("修改成功!!"); break; } } public static void main(String[] args) { // TODO Auto-generated method stub MapTest mt = new MapTest(); mt.testPut(); mt.testKeySet(); mt.testRemove(); mt.testEntrySet(); } }