目录
自动装修与拆箱
- 装箱:把基本数据类型转换为对应的包装类类型
- 拆箱:把包装类类型转换为对应的基本数据类型
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的默认处理方案是将程序停止运行,所以输出“开始”后,就将程序停止,“结束”二字的输出无法得到运行。
异常处理
如果程序出了问题,我们需要自己来处理,有两种方案
- try...catch...
- 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