包装类
1.基本数据类型以及对应的包装类:
byte -> Byte short -> Short int -> Integer long -> Long float -> Float double -> Double char -> Character boolean -> Boolean
这些类都在java.lang包
2.包装类的意义:
让基本数据类型有面向对象的特征
「封装了字符串转化成基本数据类型的方法(重点)」
3.包装类常用方法:
Integer.parseInt() Long.paseLong() Double.parseDouble()
【参考代码】
public class Test { public static void main(String[] args) { // Integer i = new Integer(10);// 创建包装类对象 // Integer ii = 10; // 自动打包 // System.out.println(i+10); // 在使用上,int 和Integer 其实没有区别,可以互相使用 // System.out.println(ii+10); // int j = ii;// 自动解包 // System.out.println(j+100); String a = "12"; String b = "34"; System.out.println(a+b); // 1234 // 转型: // 字符串转成int的唯一方案 int c = Integer.parseInt(a); int d = Integer.parseInt(b); System.out.println(c+d); // 46 // 字符串转成double类型 String e = "1.25"; double f = Double.parseDouble(e); System.out.println(f*6); // 7.5 // 转成long类型 long l = Long.parseLong("1234567"); System.out.println(l); } }
数学类
❝ 数学类的方法都是静态方法,可以直接引用——Math.方法(); ❞
「常用数学类方法:」
abs():获取绝对值
max():求最大值
min():求最小值
pow():求次幂
round():四舍五入
sqrt():求平方根
时间类
Java常用时间类:
Date 日期类
Calendar 日历类
SimpleDateFormat 格式化时间类
❝ Date和Calendar类 在java.util包中, SimpleDateFormat类 在java.text包 ❞
1.Date 日期
【1】new Date() 可以获取到系统时间
【2】getTime() 能获取到时间的long形式,可以用来计算时间差
❝ getTime()——获取计算机底层存储的数字,返回一个数字用来表示时间,这个数字的类型long,单位为毫秒。 ❞
【参考代码】
import java.util.Date; public class Test { public static void main(String[] args) { Date d = new Date(); System.out.println(d); // 系统时间 //get...()——获取年月日..... System.out.println(d.getYear()+1900); // 从1900年开始算的 System.out.println(d.getMonth()+1); // 月份从0开始计算 System.out.println(d.getDate()); // 天数 System.out.println(d.getHours());// 小时 //getTime()——获取到时间的毫秒形式 返回的是long System.out.println(d.getTime()); } }
2.Calendar 日历
【1】get() 获取到时间的某一部分
【2】set() 设置时间 - -> 计算时间:系统已经帮我们设置好了,不用担心二月有多少天等问题,计算时间十分方便
❝ 注:Calendar 日历类是抽象类,因此不可以去new对象。虽然抽象类不能创建对象,但是jdk官方提供了一个实例对象的操作: Calendar rightNow = Calendar.getInstance(); 我们通过这条代码就是直接造了一个Calender的对象 ❞
【参考代码】:get() 获取到时间的某一部分:
package date; import java.util.Calendar; public class TestCalendar { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); // System.out.println(cal); /* 假设当天: 2021 8 10 */ cal.set(Calendar.DATE,cal.get(Calendar.DATE)+31); // 计算时间(这里用天数计算的) // 获取Calendar创建的对象里的所有内容 System.out.println(cal.get(Calendar.YEAR)); // 2021 年 System.out.println(cal.get(Calendar.MONTH)+1); // 月份:从0开始的 结果:为10月 System.out.println(cal.get(Calendar.DATE)); // 日 System.out.println(cal.get(Calendar.HOUR_OF_DAY));// 小时 System.out.println(cal.get(Calendar.MINUTE)); System.out.println(cal.get(Calendar.SECOND)); } }
【参考代码】:set() 设置时间 - -> 计算时间:
❝ 注:cal.setTime(d); 把Date转化成Calendar ❞
package date; import java.util.Calendar; import java.util.Date; public class TestCalendar { public static void main(String[] args) { Date d = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(d);// 把Date转化成Calendar System.out.println(cal); System.out.println(cal.get(Calendar.YEAR)); // 年 System.out.println(cal.get(Calendar.MONTH)+1); // 月份:从0开始的 System.out.println(cal.get(Calendar.DATE)); // 日 } }
3.SimpleDateFormat格式化时间
Date,Calendar通过引用也可以进行时间的格式化,但比较繁琐,而SimpleDateFormat类是专门帮我们格式化时间的工具类,它在java.text包中。
【时间格式】:yyyy-MM-dd HH:mm:ss
SimpleDateFormat类有两大常用方法:
【1】format(Date):
❝ format(Date) 帮我们把时间转成字符串,字符串的格式为SimpleDateFormat类定义对象时设置的时间格式 ❞
【参考代码】
package Simple; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.SimpleFormatter; public class Test { public static void main(String[] args) { Date d = new Date(); System.out.println(d); //Thu Aug 12 08:40:08 CST 2021 不美观 // 设置格式化时间的模式,我们常用yyyy-MM-dd HH:mm:ss这个模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 时间格式 String s = sdf.format(d); // 格式化时间 System.out.println(s); // 2021-08-12 08:45:09 } }
【2】parse(String):
❝ parse(String) 帮我们把字符串转化成时间 ❞
【参考代码】
package Simple; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Test2 { public static void main(String[] args) throws ParseException { Scanner sc = new Scanner(System.in); System.out.println("请输入一个时间(yyyy-MM-dd HH:mm:ss):"); String s = sc.nextLine(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = sdf.parse(s); // 把字符串转成时间 System.out.println(d); /* 请输入一个时间(yyyy-MM-dd HH:mm:ss): 2021-08-12 12:25:21 Thu Aug 12 12:25:21 CST 2021 */ } }
❝ 注:由于用户输入的字符串不一定是我们要求的格式,可能是任何东西,想把它们转成时间是不可能的,你不可能把一个人转成时间 对吧,因此存在着很大的风险未处理(异常: java.text.ParseException),为此我们需要处理异常。 ❞
4.计算时间差
计算思路:
格式化时间
先将字符串转化成long类型时间
计算毫秒级别时间差,取绝对值
毫秒级别时间差转成秒级别
秒级别时间差转成分钟级别
分钟级别时间差转化显示成xx小时xx分钟
【参考代码】
package Simple; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDiff { public static void main(String[] args) throws ParseException { String s1 = "2021-08-12 12:00:00"; // 开始时间 String s2 = "2021-08-12 14:35:00"; // 结束时间 //格式化时间 SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); //将字符串转成时间形式 Date d1 = sdf.parse(s1); Date d2 = sdf.parse(s2); //计算时间差:先要获取时间毫秒形式(long类型) 再做差 long long1 = d1.getTime(); long long2 = d2.getTime(); long diffTime = Math.abs(long1 - long2); // 秒级别时间差 long diffSec = diffTime / 1000; // 分级别时间差 long diffMin = diffSec / 60; //显示 xx小时xx分钟 long displayHours = diffMin / 60; // 小时 long displayMin = diffMin % 60; //分钟 System.out.println("您学习的时长为:"+displayHours+"小时"+displayMin+"分钟"); } }