Java学习笔记(九)

一:Calendar类

1.1 Calendar类的概述:

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

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

Calendar rightNow=Calendar.getInstance();


import java.util.*;

public class Main {
    public static void main(String[] args){
       //获取对象
        Calendar cal=new GregorianCalendar();//多态
       // System.out.println(cal);

        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH)+1;//这里的月份是从0开始的,因此要加一。
        int day=cal.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+day+"日");
    }
}

2.2 Calendar的常用方法:


 //public abstract void add(int field,int amount):根据日历的规则,将指定的时间量添加或减去给定的日历字段
        cal.add(Calendar.YEAR,+3);//年+3

        //publicfinal void set(int year,int month,int day):设置当前日历的年月日。
        cal.set(2030,10,11);
        cal.set(Calendar.YEAR,2031);

(案例:求任意年份的二月份一共有多少天)


public static void main(String[] args) {
        //获取对象

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = sc.nextInt();
        //设置日历对象的年,月,日
        Calendar cal = new GregorianCalendar();
        cal.set(year, 2, 1);

        //3月1日往前推1天,就是二月的最后一天
        cal.add(Calendar.DATE,-1);

        //获取这一天并输出
        int day=cal.get(Calendar.DATE);
        System.out.println("在"+year+"的二月份一共有"+day+"天");
    }

二:异常

2.1 异常的概述

异常:就是程序出现了不支持的情况。

  •  Error:严重问题,不需要处理。
  • Exception:称为异常类,它表示程序本身可以处理的问题。
  • RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码。
  • 非RuntimeException:编译期就必须处理的,否则程序不能通过编译,就更不能正常运行了。

2.2 JVM的默认处理方案

如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理。

  • 把异常的名称,异常原因及异常出现的位置等信息输出在了控制台。
  • 程序停止执行。

2.3 异常处理

如果程序出现了问题,我们需要自己来处理,有以下两种方案:

  • try...catch...
  • throws

2.4 异常处理之try...catch...

 执行流程:

程序从try里面的代码开始执行。

出现异常,会自动生成一个异常类对象,该异常对象将被提交给java运行时系统。

当java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理

执行完毕之后,程序还可以继续往下执行。

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

2.5 Throwable的成员方法

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

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

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

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

2.7 异常处理之throws

虽然我们通过try...catch...可以对异常进行处理,但是并不是所有的情况我们都有群贤进行异常的处理,也就是说,有些问题可能出现的异常是我们处理不了的,这个时候,Java提供了shrows的处理方案。

格式:throws 异常类名;

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

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

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

2.8 自定义异常

格式:

范例:

 

 2.9 throws和throw的区别

throws:

  • 用在方法声明后面,跟的是异常类名。
  • 表示抛出异常,由该方法的调用者来处理。
  • 表示出现异常的一种可能性,并不一定会发生这些异常。

throw:

  • 用在方法体内,跟的是异常对象名
  • 表示抛出异常,由方法体内的语句处理。
  • 执行throw一定抛出了某种异常。
public class Main {
    public static void main(String[] args) {
      Scanner sc=new Scanner(System.in);
        System.out.println("请输入成绩");
        int score =sc.nextInt();
        teacher t=new teacher();
        try{
            t.checkScore(score);
        }catch(ScoreException e){
            e.printStackTrace();
        }
    }

}
class ScoreException extends Exception{
    public ScoreException(){};
    public ScoreException(String message){
        super(message);
    }
}
class teacher{
    public void checkScore(int score) throws ScoreException{
        if(score<0 || score>100){
            throw new ScoreException("你给的分数有误,分数应该在0-100之间");
        }else{
            System.out.println("分数正常");
        }
    }
}

三:Collention

3.1 Collention

集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。

集合类体系结构:

3.2 collention集合的概述和使用:

 

 3.3 collention集合的常用方法:

 

import java.util.*;
public class Main{
    public static void main(String[] args) {
        //1.创建集合对象
        Collection<String> c=new ArrayList<String>();
        //2.添加元素
        c.add("hello");
        c.add("world");
        c.add("java");
        //3.移除元素
        c.add("java");
        //4.清空元素
        c.clear();
        //5.判断集合是否存在指定元素,(有则返回TRUE)
        c.contains("java");
        //6.判断集合是否为空集合
        c.isEmpty();
        //输出对象
        System.out.println(c);
    }
}

3.4 Collection集合的遍历

  • Iteraor:迭代器,集合的专用遍历方式。
  • Iteraor<E> iterator(): 返回此集合中元素的迭代器,通过集合的iterator()方法得到

迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的

Iterator的常用方法:

  • E next():返回迭代中的下一个元素
  • boolean hasNext():如果迭代具有更多元素,则返回true。
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Main{
    public static void main(String[] args) {
        //1.创建集合对象
        Collection<String> c=new ArrayList<String>();
        //2.添加元素
        c.add("hello");
        c.add("world");
        c.add("java");
//Iterator<E> iterator(): 返回此集合中元素的迭代器,通过集合的Iteraor()方法得到
        Iterator<String> it=c.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
            /*hello
            world
            java*/
        }
    }
}

(PS:以上照片截至黑马程序员java教程视频)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值