Date类和异常

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Date类

1.Date类

Date类代表了一个特定的时间,以毫秒的精度。
构造方法:

public Date();
//分配一个 Date对象并对其进行初始化,以便它表示分配的时间,以最接近的毫秒为单位。
  public Date(Long date )//分配一个 Date对象,并将其初始化为表示从标准基准时间(称为“时代”)即1970年1月1日00:00:00 GMT起的指定毫秒数

常用方法:

public long getTime();
//返回自1970年1月1日以来,由 Date对象表示的00:00:00 GMT的毫秒数。
     public void setTime(Long time); 
//将此 Date对象设置为1970年1月1日00:00:00 GMT后的 time毫秒的时间点。

2.SimpleDateFormat类

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。 它允许格式化(日期文本),解析(文本日期)和规范化。
构造方法:

public SimpleDateFormat();
//构造一个SimpleDateFormat,使用默认模式和日期格式
   
 public SimpleDateFormat(String pattern);
//构造一个SimpleDateFormat使用给定的默认模式和默认的日期格式

格式化:
从Date到String

  public final String format(Date date);
//    将日期格式化成日期/时间字符串
    
//格式化:从Date到String
        Date d=new Date();
      //  SimpleDateFormat sdf=new SimpleDateFormat();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String s = sdf.format(d);
        System.out.println(s);
        System.out.println("---------");

常用的日期模板格式
“yyyy年MM月dd日 HH:mm:ss”

解析:
从String到Date

  public Date parse(String source); 
   // 从给定字符串的开始解析文本以生成日期

 //从String到Date
        String ss="2048-08-09 11:11:11";
        //ParseException解析异常,给的模式要和字符串对应上,否则会报错
        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = sdf2.parse(ss);//Alt+enter
        System.out.println(d2);

3.Calendar类

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

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

常用方法:

public int get(int field) 作用:根据给定的日历字段返回对应的值
public abstract void add(int field,int amount);根据日历的规则, 将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date); 设置当前日的年月日

public class CalendarDemo {
    public static void main(String[] args) {
//获取对象
        Calendar c = Calendar.getInstance();//多态形式

        //public int get(int field) 作用:根据给定的日历字段返回对应的值
//        int year = c.get(Calendar.YEAR);
//        int month = c.get(Calendar.MARCH)+1;//month 是从零开始的
//        int date = c.get(Calendar.DATE);
//        System.out.println(year+"年"+month+"月"+date+"日");

        //public abstract void add(int field,int amount);
        //需求1:3年前的今天
//        c.add(Calendar.YEAR,-3);//往前减3年
//        int year = c.get(Calendar.YEAR);
//        int month = c.get(Calendar.MARCH)+1;//month 是从零开始的
//        int date = c.get(Calendar.DATE);
//        System.out.println(year+"年"+month+"月"+date+"日");

        //需求2:10年后的5天前
//        c.add(Calendar.YEAR,10);//往前减3年
//        c.add(Calendar.DATE,-5);
//        int year = c.get(Calendar.YEAR);
//        int month = c.get(Calendar.MARCH)+1;//month 是从零开始的
//        int date = c.get(Calendar.DATE);
//        System.out.println(year+"年"+month+"月"+date+"日");

        //public final void set(int year,int month,int date); 设置当前日的年月日
        c.set(2048,11,11);
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MARCH)+1;//month 是从零开始的
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+date+"日");
    }
}

二、异常

1.异常体系
异常:就是我们的程序出现了不正常的情况。

如果程序出现问题我们没有做任何处理,JVM虚拟机会做默认的处理。
Java虚拟机对异常的默认处理方式
把异常的名称、原因、位置等信息输出在控制台
结束程序的运行

在这里插入图片描述

2.try…catch

格式:

try{
可能会出现异常的代码
}catch(异常类型 变量名){
异常的处理代码;
}

例:

public class ExceptionDemo01 {
    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]);//new ArrayIndexOutOfBoundsException();
        }catch (ArrayIndexOutOfBoundsException e){
        //    System.out.println("你访问的数组的索引不存在");
            e.printStackTrace();
        }
    }
}

3.throwable的成员方法

public String Message();返回此throwable的详细消息字符串
public String toString();返回此可抛出的简短描述
public void printStackTrace();把异常的错误信息输出在控制台

例:
public class ExceptionDemo02 {
    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]);//new ArrayIndexOutOfBoundsException();
        } catch (ArrayIndexOutOfBoundsException e) {
            // e.printStackTrace();

            //public String Message();返回此throwable的详细消息字符串
            System.out.println(e.getMessage());

            //public String toString();返回此可抛出的简短描述
            // System.out.println(e.toString());

            // public void printStackTrace();把异常的错误信息输出在控制台
            //e.printStackTrace();
        }
    }
}

    /*
         public class throwable{
         private String detailMessage;
         public throwable(String message){
         detailMessage = message;
         }
            public String getMessage() {
                 return detailMessage;
             }
         }
     */

4.编译时异常和运行时异常

java中的异常被分为两大类,编译时异常和运行时异常,也称受检异常和非受检异常
所有的RunTimeException类及其子类的实例被称为运行时异常,其他的异常都是编译时异常
编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译。
运行时异常:无响应显示处理,也可以和编译时异常一样处理

public class ExceptionDemo03 {
    public static void main(String[] args) {
       // method();
        method2();
    }
    //编译时异常
    public static void method2(){
        try {
            String s = "2048-08-09";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date d = sdf.parse(s);
            System.out.println(d);
        }catch (ParseException e){
            e.printStackTrace();
        }
    }

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

5. throw和throws

throws(获取异常) 异常类名;
这个格式是跟在括号的后面的, 程序想要往下执行,还得使用try/catch, 如果处理不了,可以抛出去,在调用这里处理.

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

public class ExceptionDemo {
    public static void main(String[] args) {
        System.out.println("开始");
        //method();
        try {
            method2();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println("结束");
    }
    //编译时异常
    //必须处理,通过try/catch或者throws处理,如果用throws处理,将来谁调用谁处理
   public static void method2() throws ParseException {
      String s = "2048-08-09";
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d = sdf.parse(s);
        System.out.println(d);
    }

    //运行时异常,可以不处理,出线问题后需要我们回来修改代码
    public static void method() throws ArrayIndexOutOfBoundsException {
        int[] arr = {1, 2, 3};
        System.out.println(arr[3]);
    }

}

throw(抛出异常):
用在方法体的内部,跟的是异常对象名 ,表示抛出异常,用方法体的语句处理,执行throw一定是抛出了某种异常.

public class Teacher {
    public void checkScore(int score) throws ScoreException{//如果用RunTimException,可以用throw,也可以不用
        if(score<0 || score>100){
            //throw new ScoreException();//throw用来在方法体内部抛出异常对象,new ScoreException()这个是我们自定义的,所以要手动去抛
            throw new ScoreException("你输出的分数有误,分数应该在0-100之间");
        }else{
            System.out.println("分数正常");
        }
    }
}

区别
在这里插入图片描述

6.自定义异常

自定义异常的编写步骤
1.定义一个类,继承Exception或者RuntimeException类
2.该类中提供空参构造方法和带字符串参数的构造方法即可

格式:

public class 异常类名 extends exception{
无参构造
带参构造
}

public class LanPingException extends Exception{
    public LanPingException() {
    }

    public LanPingException(String message) {
        super(message);
    }
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值