Java(十一)

目录

自动装修与拆箱

Date类概述和构造方法

 SimpleDateFormat

 SimpleDateFormat的构造方法

 SimpleDateFormat 格式化和解析日期

JVM的默认处理方案

异常处理

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

 Throwable的成员方法

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

 异常处理之throws

自定义异常


自动装修与拆箱

  • 装箱:把基本数据类型转换为对应的包装类类型
  • 拆箱:把包装类类型转换为对应的基本数据类型

Integer i=100;//自动装箱

i+=200;//i=i+200; i+200自动拆箱     i=i+200;为自动装箱

注意:在使用包装类类型的时候,如果要操作,最好先判断是否为null,我们推荐的是,只要是对象,在使用前就必须进行不为null的判断

public class IntergerDemo{
    public static void main(String[] args){
        //装箱:把基本数据类型转换为对应的包装类类型
        Integer i=Integer.valueOf(100);//手动装箱
        Integer ii=100;//自动装修,系统默认加上代码Integer.valueOf(100);
        
        //拆箱:把包装类类型抓换为对应的基本数据类型
        //ii+=200;//自动拆箱
        //ii=ii.intValue()+200;//手动拆箱
        ii+=200;
        System.out.println(ii);
        
        Integer iii=null;
        //iii+=300;//NullPointerException,这样是不可以的,因为iii为null
        if(iii!=null){
        iii+=300;
        }
    }
}
     //代码运行结果为
300       

Date类概述和构造方法

使用前需要导包:import java.util.Date;

Date代表了一个特定的时间,精确到毫秒(基准时间是是以格林尼治所在的时间基准的1970年1月1日0时0分)

方法名说明
public void setTime(long time);设置距离基准时间为time的时间,time给的是毫秒值
public long getTime();获取的是日期对象从1970年1月1人00:00:00到现在的毫秒值
public Date();分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date);

分配一个Date对象,并将其初始化表示为从标准基时间起指定的毫秒数

System.currentTimeMillis();返回的是一个long类型的距离基准时间的毫秒值

 Date d=new Date(1000*60*60);

System.out.println(d);

这里输出的就是时间,因为系统重写了toString方法。

 

public calss DateDemo01{
    public tatic void main(String[] args){
        //public Date();
        Date d1=new Date();
        System.out.println(d1);//输出的是运行代码的系统的时间,重写了toString方法

        //public Date(long Date);
        long date=1000*60*60;//000*60*60是一小时
        Date d2=new Date(date);//输出距离基准时间一小时的时间,其实是1970年1月1日1:00,但是系统会转换为我们所在时区的时间
        System.out.println(d2);
       //public void setTime(long time);//设置距基准时间为long time的对象,给的是毫秒值
       long time=1000*60*60;
       Date d3=new Date();
       d3.setTime(time);
       System.out.println(d3);
        
    }
}

 输出结果如下图

 SimpleDateFormat

使用SimpleDateFormat需要导包

import java.text.SimpleDateFormat;

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

日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,由‘A’到‘z’以及从‘a’到‘z’引号的字母被解析为表示日期或时间字符串的组件的模式字母

常用的模式字母及对应关系如下

y
M
d
H
m
s

 SimpleDateFormat的构造方法

方法名说明
public SimpleDateFormat()构造一个 SimpleDateFormat,使用默认模式和日期格式
public  SimpleDateFormat(Stirng pattern)构造一个 SimpleDateFormat使用给定的模式和默认的日期格

 SimpleDateFormat 格式化和解析日期

  •  格式化(从Date到String)

public final String format(Date date):将日期格式化成日期/时间字符串

  • 解析(从String到Date)

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

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

import java.text.ParseException;
public class integerTset {
    public static void main(String[] args) throws ParseException {
        //从Date到String
        Date d=new Date();
        System.out.println(d);
        SimpleDateFormat stf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//设置Date转换成String后String的格式
        String s=stf.format(d);
        System.out.println(s);
        //从String到Date
        Date d2=new Date();
        String dateStr = "2022-3-2";
        SimpleDateFormat stf2=new SimpleDateFormat("yyyy-MM-dd");//设置需要转换成Date格式的String的格式
        d2=stf2.parse(dateStr);
        System.out.println(d2);
        }
    }

 在写代码时,运用public Date parse(String source)时系统会提示这样的错误

 把鼠标放在parse处,按下Alt+Enter,选择第一个(Add exception to method signature)

 

 系统给我们的代码加了一些代码,在main方法后面新增了throws ParseException

运行结果为

JVM的默认处理方案

如果程序出了问题

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

如下图代码运行结果,编译时是没有错误的,语法正确。但是运行时出现了异常,由于JVM的默认处理方案是将程序停止运行,所以输出“开始”后,就将程序停止,“结束”二字的输出无法得到运行。

异常处理

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

  1. try...catch...
  2. throws

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

  • 格式:

try{

        可能出现异常的代码;

}catch(异常类名,变量名){

                异常处理的代码;

}

执行流程:

程序从try里面的代码开始执行,出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行系统,当Java运行时系统接收到异常对象时,会到catch中去匹配的异常类,找到后进行异常的处理,(异常处理的代码可以为空,但是为空的话没什么存在的意义,我们可以使用Throwable的成员方法知道发生了什么错误)执行完毕后,程序还可以继续往下执行。

 Throwable的成员方法

方法名说明
public String getMessage()返回此Throwable的详细消息字符串
public String toString()返回此可抛出的简短描述
public void printStackTrace()把异常的错误信息输出在控制台

 public String getMessage()

 public String toString()

 public void printStackTrace()

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

Java中的异常分为两大类:编译时异常运行时异常,也被称为受检异常和非受检异常,所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常

  • 编译时异常:必须显示处理,否则程序会发生错误,无法通过编译,所以必须要进行处理
  • 运行时异常:无需显示处理,也可以和编译时异常一样处理,可以出现问题后再回来修改代码

 异常处理之throws

我们可以通过try..catch对异常进行处理,但有些情况我们没有权限进行异常的处理,针对这种情况,Java提供了throws的处理方案

格式:throws 异常类名

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

异常可以用try...catch...或者throws,如果采用throws这种方案,谁来调用谁处理

自定义异常

格式:

public class 异常类名 extends Exception{

        无参构造

        带参构造

}

范例:

public class ScoreException extends Exception{

        public ScoreException(){}

        public ScoreException(String message){

                super(message);

        }

}

 代码1

  代码2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笃岩_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值