学习笔记【5+6】

5、日期类

5.1 Data类

在java.util.Data下面。

data代表了一个精确时间,毫秒。

public data():分配一个Data对象,并初始化。

public Dta(long data):分配一个Data对象,并将其初始化为表示从基准时间起只当的毫秒数。

Date d = new Date();
        System.out.println(d);//Sun Mar 20 09:31:32 CST 2022
        long data = 1000*60*60;//hours
        Date d2 = new Date(data);
        System.out.println(d2);//Thu Jan 01 09:00:00 CST 1970

public long getTime():获取日期对象从1970年到现在的毫秒值

public void setTime(long time):设置时间,给的是毫秒值。

Date d = new Date();
        System.out.println(d.getTime()*1.0/1000/60/60/24/365);//52.249497413178595
        long time = 1000*60*60;
        d.setTime(time);
        System.out.println(d);//Thu Jan 01 09:00:00 CST 1970

5.2 SimpleDtaFormat类

是一个具体的类。

y-----年

M----月

d----------日

H=======时

m----------分

s----------秒

//格式化,日期--String
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat();
        String s = sdf.format(d);
        System.out.println(s);//2022/3/20 上午9:53
​
        SimpleDateFormat p = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
        String s2 = p.format(d);
        System.out.println(s2);//2022年03月20日  09:55:55
​
        //String - Data
        String s3 = "2048-09-09 11:22:33";
        SimpleDateFormat p2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date dd = p2.parse(s3);
        System.out.println(dd);//Wed Sep 09 11:22:33 CST 2048

定义日期----字符串;String-----日期。

public class DataUtils {
    private DataUtils(){}
    public static String dataToString(Date data,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String s = sdf.format(data);
        return s;
    }
    public static Date stringToData(String s,String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d = sdf.parse(s);
        return d;
    }
}
//demo.
Date d = new Date();
        String s = DataUtils.dataToString(d,"yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s);//2022年03月20日 10:20:32
        String s2 = "2048-09-09 11:22:33";
        Date d2 = DataUtils.stringToData(s2, "yyyy-MM-dd HH:mm:ss");
        System.out.println(d2);//Wed Sep 09 11:22:33 CST 2048

5.3 calendar

getInstance用于获取Calendar对象,其日历字段已经使用当前日期和时间初始化。

Calendar c = Calendar.getInstance();//多态
        System.out.println(c);
        int year = c.get(Calendar.YEAR);
        int mouth = c.get(Calendar.MONTH)+1;
        int data = c.get(Calendar.DATE);
        System.out.println(year+","+mouth+","+data);//2022,3,20

常用方法:

get(int fild):返回日历字段的值。

add(field , int amout):根据日历的规则,将指定的时间两加上或者减去给定的日历字段。

set(int year,int mouth,int data):

Calendar c = Calendar.getInstance();//多态
        System.out.println(c);
        c.add(Calendar.YEAR,-3);
        int year = c.get(Calendar.YEAR);
        int mouth = c.get(Calendar.MONTH)+1;
        int data = c.get(Calendar.DATE);
​
        System.out.println(year+","+mouth+","+data);//2019,3,20
c.set(2021,10,12);
        int year = c.get(Calendar.YEAR);
        int mouth = c.get(Calendar.MONTH)+1;
        int data = c.get(Calendar.DATE);
        System.out.println(year+","+mouth+","+data);//2021,11,12

获取二月多少天,输入年份。

Scanner sc = new Scanner(System.in);
        int y = sc.nextInt();
        Calendar c = Calendar.getInstance();
        c.set(y,2,1);
        c.add(Calendar.DATE,-1);
//        int year = c.get(Calendar.YEAR);
//        int mouth = c.get(Calendar.MONTH)+1;
        int data = c.get(Calendar.DATE);
        System.out.println(data);//2021===28

6、异常

error:严重问题,不需要处理。

exception:异常类。程序本身可以处理的问题

runtimrexception:在编译器不检查,出现问题类,需要我们回来修改代码。

非runtimeexception:在编译就过不去

6.1 异常处理

某个问题出问题了,不应该影响程序运行。

一、try catch

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

出现异常后,提交给,然后再catch中寻找一样的异常名称。然后继续执行。

自己处理之后,后面的代码还是能够运行的。

x.printStackTrace();可以输出异常的名字和位置。

6.2 Throwable成员方法

getMessage():返回此throwable的详细消息字符串。//出现这个异常的原因

toString():返回此可抛出的简短描述。//输出异常的类型,以及出现该异常的原因。

printStackTrace():把异常信息输出再控制台上面。//异常类名,原因,位置。

6.3区别

编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译。有可能出问题,也有可能没有问题,就是在编写的时候会有破浪红线。

运行时异常:无需显示,也可以和编译时异常一样处理。

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

6.4 异常处理throws

throws 异常类名

跟在了方法的括号后面,{的前面。

运行时异常,只是把异常输出。运行时异常不处理,出现问题后,需要我们回来修改代码。

编译时异常,直接把异常抛出去。让调用者处理。如果采用这种方案,将来谁调用谁处理。

真正的处理还时try catch。

6.5 自定义异常

public class 异常类名 extends Exception{
    public Score(){}
    public ScoreException(String message){
        super(message);
    }
}
​
/类名
public void checkpoint(int score) throws ScoreException{
    if(score<0||score>100){;
        throw new ScoreExption("你给的分数有错误,应该再0-100之间");
    }else{
        sout("正常")
    }
}
/demo.py;
int score = sc,nextint();
Teacher t = new Teacher();
try{
    t.checkSorce(score);
}catch(ScoreException e){
    e.printStackTrace();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值