基本类型包装类:将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
常用操作之一:用于基本数据类型与字符串之间的转换
public static final int MAX_VALUE持有最大值的常数为 int可以为2 31 -1。
public static final int MIN_VALUE持有最小值的常数为 int可以为-2 31
Integer类的概述和使用
int和String的相互转换:基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换
int转String:public static String valueOf(int i):返回int参数的字符串表示形式。该方法是String类中的方法
String转int:public static int parseInt(String s);将字符串解析为int类型,该方法是Integer类中的方法
public String[] split(String regex)将此字符串拆分为给定的regular expression的匹配。 该方法的工作原理是通过使用给定的表达式和极限参数为零调用双参数split方法。 因此,尾随的空字符串不会包含在结果数组中
自动装箱和拆箱
装箱:把基本数据类型转换为对应的包装类型
拆箱:把包装类类型转换为对应的基本数据类型
Ineger i =100;//自动装箱
i +=200; //i = i+200; i+200自动装箱;i=i+200;是自动装箱
注意:在使用包装类类型的时候,如果要做操作,最好先判断是否为null
推荐:只要是对象,在使用前就必须进行不为null的判断
日期类:
Date类
-
-
Date()
分配一个
Date
对象并对其进行初始化,以便它表示分配的时间,以最接近的毫秒为单位。
-
-
-
Date(long date)
分配一个
Date
对象,并将其初始化为表示从标准基准时间(称为“时代”)即1970年1月1日00:00:00 GMT起的指定毫秒数
-
-
-
long
getTime()
返回自1970年1月1日以来,由
Date
对象表示的00:00:00 GMT的毫秒数。
-
-
-
void
setTime(long time)
将此
Date
对象设置为1970年1月1日00:00:00 GMT后的time
毫秒的时间点。
-
Simple DateFormat类概述:是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。重点学习日期格式化和解析
日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从'A'到'Z'以及'a'到'z'引号的字母被解释为表示日期或者时间字符串的组件的模式字母
常用的模式字母及对应关系y---年 M---月 d---日 H---时 m---分 s---秒
-
-
SimpleDateFormat()
构造一个
SimpleDateFormat
使用默认模式和日期格式符号为默认的 FORMAT区域设置。SimpleDateFormat(String pattern)
使用给定模式构建一个
SimpleDateFormat
,默认日期格式符号为默认的 FORMAT区域设置。
-
格式化(从Date到String)public final String format(Date date):将日期格式化成日期/时间字符串
解析(聪慧String到Date):public Date parse(String source):从给定字符串的开始解析文本以生成日期
rt java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class demo {
public static void main(String[] args) throws ParseException {
//格式化
Date d1 = new Date();
SimpleDateFormat s1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String m = s1.format(d1);
System.out.println(m);
//解析
String m2 = "2020年08月21日 08:08:88";
SimpleDateFormat s2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d2 = s2.parse(m2); //报错 按alt enter
System.out.println(d2);
}
Calendar类概述:为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar提供了一个类方法grtInstance 用于获取Calendar对象,其日历字段已使用当前日期和时间初始化; Calendar rightNow = Calendar.getInstance();
-
-
-
public int get(int field) 返回给定日历字段的值。 在宽大模式下,所有日历字段都被归一化。 在非宽泛模式下,所有日历字段都被验证,如果任何日历字段具有超出范围的值,该方法将抛出异常。 归一化和验证由complete()方法处理,该过程是与日历系统相关的。
-
-
-
-
abstract void
add(int field, int amount)
根据日历的规则,将指定的时间量添加或减去给定的日历字段
-
-
-
void
set(int year, int month, int date)
设置日历字段的值
YEAR
,MONTH
,并DAY_OF_MONTH
-
public static void main(String[] args) {
// Calendar c = Calendar.getInstance();
// int year = c.get(Calendar.YEAR);
// int month = c.get(Calendar.MONTH)+1;
// int date = c.get(Calendar.DATE);
// System.out.println(year+"年"+month+"月"+date+"日");
//
// Calendar c = Calendar.getInstance();
// c.add(Calendar.YEAR,3);
// c.add(Calendar.MONTH,-3);
// int year = c.get(Calendar.YEAR);
// int month = c.get(Calendar.MONTH)+1;
// int date = c.get(Calendar.DATE);
// System.out.println(year+"年"+month+"月"+date+"日");
Calendar c = Calendar.getInstance();
c.set(2022,1,1);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
}
获取任意年份2月有多少天
public class demo {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入年份");
int i = s.nextInt();
//设置日历对象年月日
Calendar c = Calendar.getInstance();
c.set(i,2,1);
c.add(Calendar.DATE,-1);
int i1 = c.get(Calendar.DATE);
System.out.println(i1+"天");
}
}
异常:程序出现不正常的情况
Throwable(Error();Excption(RuntimeException;非RuntimeException);)
Error:严重问题,不需要处理
Excption:称为异常类,它表示程序本身可以处理的问题
RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码
非RuntimeException:编译期就必须处理,否则程序不能通过编译,就更不能正常运行
JVM的默认处理方案:
如果程序出现问题,我们没有做出任何处理,最终JVM会做默认处理
把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
程序停止执行
异常处理:
如果程序出现了问题,我们需要自己来处理,有两种方案:
try ...catch ...格式:
try {
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
执行流程:
程序从try里面的代码开始执行,出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,当Java运行时系统接收到异常对象时,回到catch中去找匹配的异常类,找到后进行异常的处理,执行完毕后,程序还可以继续往下执行
throws
格式:throws 异常类名;
注意:这个格式是跟在方法的括号后面(alt+enter)
编译时异常必须要进行处理,两种处理方案try ...catch ...和throws ,如果采用throws这种方案,将来谁调用谁处理
运行时一场可以不处理,出现问题后,需要我们回来修改代码
Throwable的成员方法
public String getMessage(); 返回此throwable 的详细消息字符串
public void printStackTrace(); 把异常的错误信息输出在控制台
编译时异常和运行时异常的区别:
Java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常
所有RuntimeException类及其子类被称为运行时异常,其他的一场都是编译时异常
编译时异常:必须显式处理,否则程序就会发生错误,无法通过编译
运行时异常:无需显示处理,也可以和编译时异常一样处理
自定义异常
格式:
public class 异常类名 extends Exception {
无参构造
带参构造
}
throws和throw的区别
throws:1.用在方法声明后,跟的是异常类名 2.表示抛出异常,由该方法的调用者来处理 3.表示出现异常的一种可能性,并不一定会发生这些异常
throw:1.用在方法体内,跟的是异常对象名 2.表示抛出异常,有方法体内的语句处理 3.执行throw一定抛出了某种异常