文章目录
一、Collection集合
1.1集合概述
在前面我们已经学习过并使用过集合ArrayList,那么集合到底是什么呢?
●集合:集合是java中提供的一种容器,可以用来有储多个数据。
集合和数组既然都是容器,它们有什么区别呢?
●数组的长度是固定的,集合的长度是可变的。
●数组中存储的是同类型的元素, 可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中般当对象多的时候。使用集合进行存储。
1.2集合框架
JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与楼口操作架构,才能了解何时采用哪个类,以及类之间如何被此合作。 从而达到灵活应用。
集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map.
●Collection: 单列集合类的根接口,用于存储一系列符合某种规则的元素。 它有两个重要的子接口。
集合本身是一个工具,它存放在java.util包中,在Collection接口定义看单列集合框架中最其性的内容。
1.3 Collection常用功能
Collection是所有单列集合的父接口,因Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合, 方法如下
●public boolean add(E e): 把给定的对象添加到当前集合中。
●public void clear( ):清空集合中所有的元素。
●public boolean remove(E e):把给定的对象在当前集合中删除。
●public boolean contains(E e): 判断当前集合中是否包含给定的对象。
●public boolean isEmpty() :判断当前集合是否为空。
●public int size(): 返回集合中元素的个数。
●public object[] toArray() :把集合中的元素,存储到数组中。
方法演示:
import java.util.ArrayList;
import java.util.Collection;
public class Demo01Collection {
public static void main(String[] args) {
//ArrayList<String> coll= new ArrayList<>();
Collection<String> coll= new ArrayList<>();//体现了多态HashList只许重复一个
System.out.println(coll);
boolean b1=coll.add("张三");
System.out.println(b1);
System.out.println(coll);
coll.add("李四");
coll.add("李四");
coll.add("王五");
coll.add("赵六");
System.out.println(coll);
boolean b2=coll.remove("王五");
System.out.println(b2);
System.out.println(coll);
boolean b3=coll.contains("赵六");
System.out.println(b3);
System.out.println(coll);
boolean b4=coll.contains("王五");
System.out.println(b4);
boolean b5=coll.isEmpty();
System.out.println(b5);
int b6=coll.size();
System.out.println(b6);
Object[] arr=coll.toArray();
for (int i=0; i<arr.length; i++)
{
System.out.println(arr[i]);
}
System.out.println("=========");
coll.clear();
System.out.println(coll);
b5= coll.isEmpty();
System.out.println(b5);
}
}
二、Iterator迭代器
2.1 lterator接口
在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。Iterator接口也是java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历),ColTection中的元素,因此Iterator对象也被称为迭代器。
想要遍历Collection集合,那么就要获取该集合迭代器完成选代操作,下面介绍一下获取迭代器的方法:
●public Iterator iterator():获取集合对应的迭代器,用来遍历集合中的元素的。
●送代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
lterator接口的常用方法如下:
●public E next():返回迭代的下一个元素。
●public boolean hasNext():如果仍有元素可以迭代,则返回true。
方法演示:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo02Iterator {
public static void main(String[] args) {
Collection<String> coll=new ArrayList<>();
coll.add("姚明");
coll.add("科比");
coll.add("麦迪");
coll.add("布莱迪");
coll.add("詹姆斯");
coll.add("艾弗森");
Iterator<String> it=coll.iterator();
if(it.hasNext())
{
String e=it.next();
System.out.println(e);
}
if(it.hasNext())
{
String e=it.next();
System.out.println(e);
}
System.out.println("=======");
while(it.hasNext())
{
String e=it.next();
System.out.println(e);
}
System.out.println("=======");
for(Iterator <String> it2= coll.iterator();it2.hasNext();)
{
String e=it2.next();
System.out.println(e);
}
System.out.println("=======");
//增强型for循环
for(String s:coll)
System.out.println(s);
System.out.println("=======");
int[] arr1={45,6,7,8,9,10};
//第一种写法
// for(int i=0;i<arr1.length;i++)
// {
// System.out.println(arr1[i]);
// }
for(int i:arr1)
{
System.out.println(i);
}
}
}
三、异常
3.1异常概念
异常,就是不正常的意思。在生活中:医生说你的身体某个部位有异常该部位和正常相比有点不同,该部位的功能将受影响,在程序中的意思就是:
●异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
在Java等面向对象的编程语言中,异常本身是一个类, 产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。
异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行,
3.2异常体系
异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable.其下有两个子类: java. lang.Error与java. lang. Exception.平常所说的异常指java.1ang.Exception.
3.3异常分类
我们平常说的异常就是指Exception,因为这类异常一旦出现,我们就要对代码进行更正,修复程序。
异常(Exception)的分类根据在编译时期还是运行时期去检查异常?
●编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)
●运行时期异常:untime异常。 在运行时期检查异常,在编译时期运行异常不会编泽器检测(不报错)。(如教学异常)
四、异常处理
java异常处理五个关键字:try,catch,fially,throw,throws
4.1抛出异常throw
在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来,这时需要使用抛出异常的方式来告诉洞用者。
在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。那么,抛出一个异常具体如何操作呢?
1.创建一个异常对象。封装些提示信息(信息可以自己编写)。
2.需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用者处呢?通过关键字hrow就可以完成。throw 异常对象。
throw用在方法内,用采抛出一个异常对象。将这个异常对象传递到调用者处, 并结束当前方法的执行,
使用格式:
thro new异常类名(参数):
例如:
throw new NullPointerException(“要访问的arr数组不存在”);
throw new ArrayIndexOutOfBoundsException(“该索引在数组中不存在,已超出范围”);
方法演示:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//异常就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响,在程序中的意思就是:
//异常:指的是程序在执行过程中,出现的非正常情况,最终会导致VM的非正常停止。
public class Demo01Exception {
public static void main(String[] args) {
//编译期异常
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
Date date = null;
System.out.println("第一句测试");
try {
date = sdf.parse("2021-05-11");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date);
System.out.println("第二句测试");
//runtimeException 运行期异常
int[] arr = {1,2,3};
System.out.println(arr[0]);
try {
System.out.println(arr[3]);//有问题,但不会提示,因为能够通过编译,在执行的时候才会有异常
}catch (Exception e){
System.out.println("测试");
System.out.println(e);
}
//error 错误
int[] arr2 = new int[1024*1024*1024*1024*1024];
System.out.println("");
}
}
方法演示2:
public class Demo02Throw {
public static void main(String[] args) {
int[] arr = new int[3];
int e=getElement(arr,3);
System.out.println(e);
}
public static int getElement(int[] arr,int index) {
if(arr==null)
throw new NullPointerException("传递的数组值是 null");
if(index<0||index>arr.length-1){
throw new ArrayIndexOutOfBoundsException("传递的索引超出数组的正常使用范围");
}
int ele = arr[index];
return ele;
}
}
方法演示3:
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo03Throws {
public static void main(String[] args) throws FileNotFoundException,IOException{
readFile("c:\\a.txt");
System.out.println("后续代码");
}
public static void readFile(String filename) throws FileNotFoundException,IOException{
if(!filename.equals("c:\\a.txt"))
{
throw new FileNotFoundException("传递的文件不是c:\\a.txt");
}
if(!filename.endsWith(".txt"))
{
throw new IOException("文件名后缀有无");
}
System.out.println("文件正确");
}
}