1.包装类
1.1基本类型包装类(记忆)
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
主要是基本类型和String之间的转换
1.2Integer类(应用)
-
Integer类概述
包装一个对象中的原始类型 int 的值
示例代码public class IntegerDemo { public static void main(String[] args) { //public Integer(int value):根据 int 值创建 Integer 对象(过时) Integer i1 = new Integer(100); System.out.println(i1); //public Integer(String s):根据 String 值创建 Integer 对象(过时) Integer i2 = new Integer("100"); // Integer i2 = new Integer("abc"); //NumberFormatException System.out.println(i2); System.out.println("--------"); //public static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例 Integer i3 = Integer.valueOf(100); System.out.println(i3); //public static Integer valueOf(String s):返回一个保存指定值的Integer对象 String Integer i4 = Integer.valueOf("100"); System.out.println(i4); } } ### 1.3int和String类型的相互转换(记忆)
-
int转换为String
-
转换方式
- 方式一:直接在数字后加一个空字符串
- 方式二:通过String类静态方法valueOf()
-
示例代码
public class IntegerDemo { public static void main(String[] args) { //int --- String int number = 100; //方式1 推荐使用这个方式 String s1 = number + ""; System.out.println(s1); //方式2 //public static String valueOf(int i) String s2 = String.valueOf(number); System.out.println(s2); System.out.println("--------"); } }
-
-
String转换为int
-
转换方式
- 方式一:先将字符串数字转成Integer,再调用valueOf()方法
- 方式二:通过Integer静态方法parseInt()进行转换
-
示例代码
public class IntegerDemo { public static void main(String[] args) { //String --- int String s = "100"; //方式1:String --- Integer --- int Integer i = Integer.valueOf(s); //public int intValue() int x = i.intValue(); System.out.println(x); //方式2 //public static int parseInt(String s) int y = Integer.parseInt(s); System.out.println(y); } }
-
使用场景:
当我们得到一个纯数字的字符串, 需要对他进行加减乘除的算数操作,那么需要将其"字符串"的角色,变成int角色
jdk1.5以后出现了自动拆装箱的过程
装箱:
将基本变成其对应包装类
拆箱:
将包装类变成其对应的基本类型
Integer i = 10;
进制:
0x : 十六进制
0: 八进制
0b: 二进制
什么都不写: 十进制
1.4字符串数据排序案例(应用)
-
案例需求
? 有一个字符串:“91 27 46 38 50”,请写程序实现最终输出结果是:“27 38 46 50 91”
-
代码实现
public class IntegerTest { public static void main(String[] args) { //定义一个字符串 String s = "91 27 46 38 50"; //把字符串中的数字数据存储到一个int类型的数组中 String[] strArray = s.split(" "); // for(int i=0; i<strArray.length; i++) { // System.out.println(strArray[i]); // } //定义一个int数组,把 String[] 数组中的每一个元素存储到 int 数组中 int[] arr = new int[strArray.length]; for(int i=0; i<arr.length; i++) { arr[i] = Integer.parseInt(strArray[i]); } //对 int 数组进行排序 Arrays.sort(arr); //把排序后的int数组中的元素进行拼接得到一个字符串,这里拼接采用StringBuilder来实现 StringBuilder sb = new StringBuilder(); for(int i=0; i<arr.length; i++) { if(i == arr.length - 1) { sb.append(arr[i]); } else { sb.append(arr[i]).append(" "); } } String result = sb.toString(); //输出结果 System.out.println(result); } }
1.5自动拆箱和自动装箱(理解)
-
自动装箱
把基本数据类型转换为对应的包装类类型
-
自动拆箱
把包装类类型转换为对应的基本数据类型
-
示例代码
Integer i = 100; // 自动装箱 i += 200; // i = i + 200; i + 200 自动拆箱;i = i + 200; 是自动装箱
2.时间日期类
2.1Date类(应用)
-
Date类概述
Date 代表了一个特定的时间,精确到毫秒
-
Date类构造方法
时间原点: 1970年1月1日0时0分0秒 ---->1970年1月1日8时0分0秒(东八区)
Date(); ---->创建日期对象,代表当前电脑时间,距离时间原点过得毫秒值
Date(long time); ----> 创建日期对象,指定毫秒值距离时间原点的时间
例如:
Date date = new Date(); ----> 代表2019年12月3日11点41分
Date date = new Date(1000); ----> 代表1970年1月1日8点0分1秒
注意: 在使用指定时间的话, 毫秒值最好+L修饰
成员方法:
setTime(long time); ---->设置时间中维护的毫秒值
long getTime(); ----> 获取时间中的毫秒值
示例代码public class DateDemo01 { public static void main(String[] args) { //public Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒 Date d1 = new Date(); System.out.println(d1); //public Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数 long date = 1000*60*60; Date d2 = new Date(date); System.out.println(d2); } }
2.2Date类常用方法(应用)
-
常用方法
方法名 说明 public long getTime() 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值 public void setTime(long time) 设置时间,给的是毫秒值 -
示例代码
public class DateDemo02 { public static void main(String[] args) { //创建日期对象 Date d = new Date(); //public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值 // System.out.println(d.getTime()); // System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年"); //public void setTime(long time):设置时间,给的是毫秒值 // long time = 1000*60*60; long time = System.currentTimeMillis(); d.setTime(time); System.out.println(d); } }
2.3SimpleDateFormat类(应用)
-
SimpleDateFormat类概述
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
我们重点学习日期格式化和解析
-
SimpleDateFormat类构造方法
方法名 说明 public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式 public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的日期格式 -
SimpleDateFormat类的常用方法
- 格式化(从Date到String)
- public final String format(Date date):将日期格式化成日期/时间字符串
- 解析(从String到Date)
- public Date parse(String source):从给定字符串的开始解析文本以生成日期
- 格式化(从Date到String)
-
示例代码
public class SimpleDateFormatDemo { public static void main(String[] args) throws ParseException { //格式化:从 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("--------"); //从 String 到 Date String ss = "2048-08-09 11:11:11"; //ParseException SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date dd = sdf2.parse(ss); System.out.println(dd); } } yyyy: 表示年 MM: 表示月 dd: 表示日 HH: 时 mm: 分 ss: 秒
常用模式:
yyyy年MM月dd日 HH:mm:ss
yyyy-MM-dd HH:mm:ss
作用:
String format(Date date); ----> Date ---->String
Date parse(String time); ----> String ---->Date
*注意: 要被格式化的字符串的模式必须和SimpleDataformat的模式一样,这里出现编译时异常
例如:
String s = “2019-12-12”
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
2.4 Calendar类(了解!!!!,开发中很少用到)
-
Calendar类概述
作用: 专门针对年,月,日,时有有些特殊的操作
构造: 是一个抽象类
Calender c = Calender.getInstance();// 通过静态方法获取Calender的子类对象
方法:
get(int field); ---->获取日历中的信息
常用的字段:
Calender.YEAR
Calender.MONTH
Calender.DATE
add(int field, int amount); —>给日历中某个字段添加或者减少一些值
set(int year,int month,int day); --->将日历的年月日一起修改了!!!!
###2.5.闰年(了解!!!)
能够被4整除, 但是不能被100整除 或者 能够被400整除的叫做闰年, 其他都是平年
3.异常
3.1异常(记忆)
-
异常的概述
异常就是程序出现了不正常的情况
-
异常的体系结构
Throwable是异常的根类
Error: 代表"硬件"层面的错误
Exception:
*编译时异常: 在编译期间就会报错的异常, 程序员必须处理, 如果不处理无法编译通过
除了运行时异常都是编译时异常
处理方式: 要求必须处理
*运行时异常: 在运行期间才有可能报的错, 不影响编译
RuntimeException或者子类都是运行时异常
处理方式: 可以处理,也可以不处理
异常如果我们不处理, jvm会处理, 默认处理方式: 1.将错误信息(异常类名,异常原因, 异常位置)打印到控制台上 2.将程序终止了
异常处理的第一种方式:---->为了不让程序遇到异常终止!!!
try{
1.可能出现异常的代码
2.出现异常后不需要执行的代码}catch(异常类名 变量名){
}catch(异常类名 变量名){
}catch(异常类名 变量名){
}…
注意: catch可以出现多个, 但是如果catch中的异常有子父类关系, 父类要放到下面!!!
执行流程:
程序开始,执行try里面的语句, 如果try出现了异常, 就会找catch,如果说没有出现异常, 根本就不会走catch语句, 所以catch中国好备胎, catch走完后,不会影响下面的代码.
异常处理的第二种方式:
throws 异常类名
位置: 在方法声明上
本质: 将异常抛给调用者处理
.异常的功能:
我们发现, 异常基本都是一样, 唯一不一样就是异常类名不一样,所有的子类并没有特有的方法,
所有的方法都是从Throwable中继承下来的
*void printStackTrace(); ----> 将异常类名,异常原因, "异常位置"打印到控制台