java学习第十八天

文章目录

一、Collection集合
1.1集合概述
1.2集合框架
1.3 Collection常用功能
二、Iterator迭代器
2.1 lterator接口
三、异常
3.1异常概念
3.2异常体系
3.3异常分类
四、异常处理
4.1抛出异常throw

一、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

在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来,这时需要使用抛出异常的方式来告诉洞用者。

在ava中,提供了一个throw关键字,它用来抛出一个指定的异常对象。那么,抛出一个异常具体如何操作呢?

1.创建一个异常对象。封装些提示信息(信息可以自己编写)。

2.需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用者处呢?通过关键字hrow就可以完成。throw 异常对象。

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("");
    }
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值