JDK中主要的包介绍
1. java.lang——包含一些Java语言的核心类, 如String、 Math、 Integer、 System和Thread, 提供常用功能
2. java.net——包含执行与网络相关的操作的类和接口。
3. java.io ——包含能提供多种输入/输出功能的类。
4. java.util——包含一些实用工具类, 如定义系统特性、 接口的集合框架类、 使用与日期日历相关的函数。
5. java.text——包含了一些java格式化相关的类
6. java.sql——包含了java进行JDBC数据库编程的相关类/接口
7. java.awt——包含了构成抽象窗口工具集(abstract window toolkits) 的多个类, 这些类被用来构建和管理应用程序的图形用户界面(GUI)
包装类Wrapper
针对八种基本数据类型定义相应的引用类型—包装类(封装类)
有了类的特点,就可以调用类中的方法, Java才是真正的面向对象
| 基本数据类型 | 包装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |

byte,short,int,long,float,double都是Number的子类

Character和Boolean都是Object的直接子类
Primitives:
- Have performance advantages
Wrappers:
- Allow us to not violate the “everything is an object” principle, which means that numbers, characters, and boolean values don’t violate this concept
- Expand the possibilities for working with these values by providing convenient methods and fields
- Are necessary when a method only works with objects
基本数据类型—->包装类的实例 —-装箱
通过包装类的构造器实现:
int i = 500;Integer i1 = new Integer(i);
还可以通过字符串参数构造包装类对象: ```java Float f = new Float(“4.56”); Float f1 = new Float(4.56f); Float f2 = new Float(4.56); //2行和三行都行,有个重载方法在里面 //long = new Long(“asdf”); //NumberFormatException
Boolean b1 = new Boolean(true); //true Boolean b2 = new Boolean(“true”);//true //凡是忽略大小写不为true的字符串,全都是false,null传进去也是false //这块不清楚看下源码就行,很容易理解 Boolean b3 = new Boolean(“true123”); //false Boolean b4 = new Boolean(null); //false Boolean b5; //null
包装类对象--->基本类型变量 ---拆箱<br />调用包装类的.xxxValue()方法:```javaboolean b = bObj.booleanValue();
JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配
字符串—-> 基本类型/包装类
对应包装类的parseXxx(String)静态方法
从键盘获取输入
java.util.Scanner
/*如何从键盘获取不同类型的输入Scanner*/import java.util.Scanner;public class ScannerTest{public static void main(String args[]){Scanner scan = new Scanner(System.in);Student s1 = new Student(scan.next(), scan.next(), scan.nextInt(), scan.nextDouble());s1.print();}}class Student{int age;String sex;String name;double height;Student(String name, String sex, int age, double height){this.age = age;this.sex = sex;this.name = name;this.height = height;}void print(){System.out.println(name);System.out.println(sex);System.out.println(age);System.out.println(height);}}
获取当前时间
java.lang.System
该类中有一个方法: currentTimeMillis() 
Date
每个 Date 对象以一种非常有趣的形式存储时间:自格林威治标准时间 1970 年 1 月 1 日以来的毫秒数。
按照中国时区来看就是1970/01/01 8:00
每个对象在创建时都以当前时间进行初始化。要知道当前时间,只需创建一个 Date 对象。
获取当前日期:
public static void method1() {// 初始化 Date 对象Date date = new Date();// 使用 toString() 函数显示日期时间System.out.println(date.toString());}

计算两个日期之间的差值
public static void main(String[] args) throws Exception{Date currentTime = new Date(); // 获取当前日期和时间Thread.sleep(3000); // 等待 3 秒(3000 毫秒)Date newTime = new Date(); // 获取新的当前时间long msDelay = newTime.getTime() - currentTime.getTime(); // 计算差值System.out.println("时间差值为:" + msDelay + ",以毫秒表示");}
主要是Date类的
getTime()方法的使用,返回该Date实例的毫秒值!

确定自当天开始经过了多少时间:
public static void main(String[] args) throws Exception{Date currentTime = new Date();int hours = currentTime.getHours();int mins = currentTime.getMinutes();int secs = currentTime.getSeconds();System.out.println("自午夜以来的时间 " + hours + ":" + mins + ":" + secs);}
主要是
getHours()getMinutes()getSeconds()这几个方法的使用

确定自年初开始经过了多少天:
public static void main(String[] args) throws Exception{Date yearStartTime = new Date();yearStartTime.setHours(0);yearStartTime.setMinutes(0);yearStartTime.setSeconds(0);yearStartTime.setDate(1); // 当月第一天yearStartTime.setMonth(0); // 一月(从 0 到 11 对月份编制索引)Date currentTime = new Date();long msTimeDifference = currentTime.getTime() - yearStartTime.getTime();long msDay = 24 * 60 * 60 * 1000; // 24 小时内的毫秒数int dayCount = (int) (msTimeDifference/msDay); // 完整天数System.out.println("自年初以来的天数:" + dayCount);}
2021/3/15
总结
“getTime() 方法返回 Date 对象中存储的毫秒数。”
“after() 方法检查 调用该方法的日期 是否在 传递给该方法的日期 之后”。类似的还有 before() equals()
“getHours()、getMinutes()、getSeconds() 方法分别为调用它们的对象返回小时数、分钟数和秒数。”
SimpleDateFormat
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
日期和时间的格式化编码
时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:
| 字母 | 描述 | 示例 |
|---|---|---|
| G | 纪元标记 | AD |
| y | 四位年份 | 2001 |
| M | 月份 | July or 07 |
| d | 一个月的日期 | 10 |
| h | A.M./P.M. (1~12)格式小时 | 12 |
| H | 一天中的小时 (0~23) | 22 |
| m | 分钟数 | 30 |
| s | 秒数 | 55 |
| S | 毫秒数 | 234 |
| E | 星期几 | Tuesday |
| D | 一年中的日子 | 360 |
| F | 一个月中第几周的周几 | 2 (second Wed. in July) |
| w | 一年中第几周 | 40 |
| W | 一个月中第几周 | 1 |
| a | A.M./P.M. 标记 | PM |
| k | 一天中的小时(1~24) | 24 |
| K | A.M./P.M. (0~11)格式小时 | 10 |
| z | 时区 | Eastern Standard Time |
| ‘ | 文字定界符 | Delimiter |
| “ | 单引号 | ` |
用法1:以特定形式将Date —> String
SimpleDateFormat aDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");SimpleDateFormat bDate=new SimpleDateFormat("yyyy-MMM-dddddd");long now=System.currentTimeMillis();System.out.println(aDate.format(now));System.out.println(bDate.format(now));SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年M月dd日 HH时mm分ss秒");SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ", Locale.ENGLISH);SimpleDateFormat myFmt4=new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中第k时 z时区");System.out.println(myFmt.format(now));System.out.println(myFmt1.format(now));System.out.println(myFmt2.format(now));System.out.println(myFmt3.format(now));System.out.println(myFmt4.format(now));
MMMMMM的不同前两个都是阿拉伯数字表示的月份,区别在于是一位还是两位,当然如果用M而一位无法表示就会用两位表示,比如11MMM是用当地语言表示的月份,比如我现在在中国,11月的表示方式就是十一月,而如果在英语系国家,使用Nov表示MMMM如果是英语表示的话是全称:November💎
EEEEEE在英语表示中都是星期的缩写,EEEE是全称 上述四种在中文表示中都是星期一的意思

举个例子:展示M的不同数量的区别
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MMM-dd");String input = "1818-十一月-11";System.out.print(input + " Parses as ");Date t;try {t = ft.parse(input);System.out.println(t);} catch (ParseException e) {System.out.println("Unparseable using " + ft);}
Calendar
参考文档
用Calendar取代Date,仅仅用Date的getTime()方法获取当前时间的毫秒值进行时间的记录
When working with the Calendar class, it’s important to understand that this is just that, a calendar, not an individual date.
This is abundantly apparent if you try to display the Calendar object:
Output: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id=”Europe/London”,offset=0,dstSavings=0,useDaylight=false,transitions=79,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=?,YEAR=2017,MONTH=0,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=25,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
_
Calendar —> Date
使用Calendar的getTime()函数返回Calendar实例对应的Date对象
