异常 自定义异常 集合体系结构 Collection集合储存学生对象并遍历


Calender

  • Calender类概述

Calender为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历提供了一些方法

Calender提供了一个类方法getInstance用于获取Calender对象,其日历字段已使用当前日期和时间初始化

Calender rightNow = Calender.getInstance();

package Demo20;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import sun.util.resources.cldr.aa.CalendarData_aa_ER;

import java.util.Calendar;

public class Deno20 {
    public static void main(String[] args) {
        //获取对象
        Calendar c =Calendar.getInstance();
      //  System.out.println(c);
        int year =c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int data = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+data+"日");


    }
}
  • Calendar常用方法
方法名声明
public int get(in field)返回给定日历字段的值
public abstract void add(int field,int amount)根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date)设置当前日历的年月日
package Demo20;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import sun.util.resources.cldr.aa.CalendarData_aa_ER;

import java.util.Calendar;

public class Deno20 {
    public static void main(String[] args) {
        //获取对象
        Calendar c =Calendar.getInstance();
      //  System.out.println(c);
     /*  int year =c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int data = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+data+"日");
     */
        //3年前的今天
        //c.add(Calendar.YEAR,-3);
        //10年前后的5天前
       // c.add(Calendar.YEAR,+10);
       // c.add(Calendar.DATE,-5);
       // 设置当前年月日,public final set(int year,int month,int date)
        c.set(2021,11,25);//2021年12月25日
        int year =c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int data = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+data+"日");
    }
}
  • 获取二月最后一天
package Demo20;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import sun.util.resources.cldr.aa.CalendarData_aa_ER;

import java.util.Calendar;
import java.util.Scanner;

public class Deno20 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入年份");
       int year = sc.nextInt();
        //设置日历对象的年月日
        Calendar c =Calendar.getInstance();
        c.set(year,2,1);
        //3月往前推一天,就是二月最后一天
        c.add(Calendar.DATE,-1);
        //获取这一天输出即可
        int date =c.get(Calendar.DATE);
        System.out.println(year+"年的2月份有"+date+"天");
    }
}

异常

异常处理

如果程序出现问题,我们需要直接来处理,有两种方案

  1. try…catch…
  2. throws
格式:
    try{
        可能出现异常的代码;
    }catch{(异常类名 变量名){
        异常处理代码;
    }
/*
执行流程
程序从try里面的代码开始运行
出现异常,会自动生成一个异常类对象,该异常对象将会被提交给java运行时系统
当java运行时系统接收到异常对象时,回到catch中去找匹配的异常类,找到后进行异常的处理
执行完毕后,程序还可以继续往下执行
*/
package Demo20;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import sun.util.resources.cldr.aa.CalendarData_aa_ER;

import java.util.Calendar;
import java.util.Scanner;

public class Deno20 {
    public static void main(String[] args) {
        System.out.println("开始");
     method();
        System.out.println("结束");
    }public static void method(){
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        }catch(ArrayIndexOutOfBoundsException e){
          //  System.out.println("你访问的数组不存在");
            e.printStackTrace();
        }
    }
}

Throwable的成员方法

  • Throwable是所有异常和错误的祖宗类
方法名说明
public String getMessage()返回此throwable的详细消息字符串
public String toString()返回此可能抛出的简短描述
public void printStackTrace()把异常的错误信息输出在控制台
package Demo20;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import sun.util.resources.cldr.aa.CalendarData_aa_ER;

import java.util.Calendar;
import java.util.Scanner;

public class Deno20 {
    public static void main(String[] args) {
        System.out.println("开始");
     method();
        System.out.println("结束");
    }public static void method(){
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
        }catch(ArrayIndexOutOfBoundsException e){
          //  System.out.println("你访问的数组不存在");
           // e.printStackTrace();
          //  System.out.println(e.getMessage());//3
        }
    }
}

  • 编译时异常和运行时异常的区别

java中的异常被分为两大类,编译时异常和运行时异常,也被称为受检异常或非受检异常

所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常

  • 编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译
  • 运行时异常,无需显示处理,也可以和编译时异常一样处理
package Demo20;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import sun.util.resources.cldr.aa.CalendarData_aa_ER;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Deno20 {
    public static void main(String[] args) {
     method();
     method2();
     //编译时异常
        }  public static void method2(){
        try{
            String s = "2021-08-07";
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            Date d = sdf.parse(s);

        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
     //运行时异常
    public static void method(){
        int[] arr = {1,2,3};
        System.out.println(arr[3]);//.ArrayIndexOutOfBoundsException
    }
}
  • 异常处理–throws

  • 虽然我们通过try-catch可以对异常进行处理,但是并不是所有情况我们都有权限进行异常的处理

  • 所以----->throws

    格式

    throws 异常类名;
    

    注意:这个格式是跟在方法的括号后面的

  • 编译时异常必须要进行处理:两种处理方案:try-catch或者throws,如果采用throws,将来调用时进行处理

  • 运行时异常可以不处理,出现问题后,需要我们回来修改代码

import java.util.Date;
import java.util.Scanner;

public class Deno20 {
    public static void main(String[] args) {
        method();
        System.out.println("结束");
     /*
     method2();
     //编译时异常
        }  public static void method2(){
        try{
            String s = "2021-08-07";
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            Date d = sdf.parse(s);

        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
    
      */
        //运行时异常
    } public static void method() throws  ArrayIndexOutOfBoundsException{
        int[] arr = {1,2,3};
        System.out.println(arr[3]);//.ArrayIndexOutOfBoundsException
    }
}

自定义异常

格式

public class 异常类名 extends Expection{
    无参构造
    带参构造
}
范例:
    public class ScoreExpection extends Expection{
        public ScoreExceotion(){}
             public ScoreExceotion( String Message){
                 super(Message);
             }
    }
package Demo21;

public class Exception1 extends Exception {
    public Exception1(){}
    public Exception1(String Message){
        super(Message);
    }
}
package Demo21;

public class Demo20 {
    public void checkScore(int score) throws Exception1{
        if(score<0||score>120){
            System.out.println("输入错误");
            throw new Exception1();

        }else{
            System.out.println("分数正常");
        }
    }
}
package Demo21;

import Demo9.TeachMan;

import java.util.Scanner;

public class Application {
    public static void main(String[] args)  {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入分数");
        int score = sc.nextInt();
        Demo20 t = new Demo20();
        try {
            t.checkScore(score);
        } catch (Exception1 exception1) {
            exception1.printStackTrace();
        }
    }
}

throws 和throw的区别

throwsthrow
用在方法声明后,跟的是异常类名用在方法体内,跟的是异常对象名
表示抛出异常,有该方法调用者来处理表示抛出异常,有方法体内的语句处理
表示出现异常的一种可能性,并不一定会发生这些异常执行throw一定抛出了某种异常

集合体系结构

  • Collection
  • List
  • Set
  • 泛型
  • Map
  • Collections
  1. Collection
  • 集合的特点:提供一种储存空间可变的储存模型,储存后的数据容量可发生改变

在这里插入图片描述

  • Collection的集合概述和使用

  • Collection集合概述

  • 是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

  • JDK不提供此接口的任何实现,它提供更具体的子接口如(如Set和List)实现

  • 创建Collection集合对象

  • 多态的方式

  • 具体实现类ArrayList

package Demo22;

import java.util.ArrayList;
import java.util.Collection;

public class Demo22 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<String>();
        //添加元素
        c.add("Hello");
        c.add("World");
        c.add("Pofenx");
        System.out.println(c);
    }
}
  • Collection集合中的常用方法
方法名声明
boolean add(E e)添加元素
boolean remove(Object o)从集合中移除指定的元素
void clear()清空集合中的元素
boolean contains(Object o)判断集合中是否存在指定元素
boolean isEmpty()判断集合是否为空
int size集合的长度,也就是集合元素中的个数
package Demo22;

import java.util.ArrayList;
import java.util.Collection;

public class Demo22 {
    public static void main(String[] args) {
        //创建了集合对象
        Collection<String> c = new ArrayList<String>();
        //添加元素 boolean add(E e)
       // System.out.println(c.add("hello"));
       // System.out.println(c.add("world"));
       // System.out.println(c.add("world"));
        c.add("hello");
        c.add("help");
        c.add("world");
       // System.out.println(c.remove("world"));
        //System.out.println(c.remove("world1"));
      //  c.clear();
       // System.out.println(c.contains("world"));
       // System.out.println(c.contains("world1"));
      //  System.out.println(c.contains(c.isEmpty()));
      System.out.println(c.size());
        System.out.println(c);
    }
}
  • Collection集合遍历

Iterator:迭代器,集合的专用遍历方式

  • Iteratoriterotor():返回此集合中元素的迭代器,通过集合iterator()方法得到
  • 迭代器是通过集合的iterator()方法得到的,所我们说他是依赖于集合而存在

iterator的中常用方法

  • E next():返回迭代器中的下一个元素
  • boolean hasNext():如果迭代具有更多元素,则返回true
package Demo22;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo22 {
    public static void main(String[] args) {
        //创建了集合对象
        Collection<String> c = new ArrayList<String>();
        c.add("hello");
        c.add("world");
        c.add("java");
        c.add("pofen");
        c.add("666");
        Iterator<String> it= c.iterator();
       // System.out.println(it.next());
       // System.out.println(it.next());
      //  System.out.println(it.next());
        //System.out.println(it.next());
      //  System.out.println(it.next());
       // System.out.println(it.next());//NoSuchElementException,表示被请求的元素不存在
       while(it.hasNext()){
         String s = it.next();
           System.out.println(s);
        }
    }
}

在这里插入图片描述

Collection集合储存学生对象并遍历

需求:创建一个储存学生对象的集合,储存3个对象,使用程序实现控制台遍历该集合

package Demo23;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Application {
    public static void main(String[] args) {
        //创建集合对象
        Collection<Student> c = new ArrayList<Student>();
        Student s1 = new Student("pofenx", 18);
        Student s2 = new Student("pofenx1", 19);
        Student s3 = new Student("pofenx2", 20);
        //把学生添加到集合
        c.add(s1);
        c.add(s2);
        c.add(s3);
        //遍历集合(迭代器方式)
        Iterator<Student> it = c.iterator();
        while(it.hasNext()){
            Student s = it.next();
            System.out.println(s.getName()+","+s.getAge());
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pofenx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值