包装类
有时需要将基本数据转化成对象。
| 基本数据类型 | 包装类 |
|---|---|
| char | Character |
| int | integer |
自动装箱/拆箱
缓存问题


同样是用==判断两个Integer对象,为何结果会不一样?
因为在[-128,127]之间的数字是被缓存的(实际就是系统初始的时候,创建了一个[-128,127]之间的一个缓存数组),需要时被直接调用,所以在同一地址。而这个范围之外的数字就需要new一个缓存外的对象,地址自然就不同了
String类
字符串比较要用equals
String字符串不可变(源码里有final),StringBuilder可变
StringBuilder线程不安全,效率高(一般用他),StringBuffer线程安全,效率低

地址没变,内容改变
StringBuilder运用(增删改查
append方法的高效与String陷阱
程序极易崩溃,绝对不能出现这样的代码。
每次循环的时候都会产生一个i对象,然后再产生一个新的str8对象,循环5k次,一共1w个对象
正确姿势:
这样就不需要产生额外的对象(当然也会产生对象,只不过这些对象直接往sb字符串里添加了,更高效
Date类
所在包 import java.util.Date;
以后遇到日期处理:使用Canlendar日期类
关于Date只掌握这几个就够了
DateFormat类
时间对象 指定格式的字符串 相互转换
Dateformat是一个抽象类,一般使用它的子类SimpleDateFormat
Calendar日历类
抽象类,提供关于日期计算的相关功能。比如:年月日时分秒的展示和计算
GregorianCalendar 是其具体子类,提供世界上大多国家/地区使用的标准日历系统
package cn.sxt.dyq;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class TestCalendar {public static void main(String[] args) {Calendar calendar = new GregorianCalendar(2999, 10, 9, 22, 10, 50);int year = calendar.get(calendar.YEAR);int month = calendar.get(calendar.MONTH);int day = calendar.get(calendar.DATE); // 也可以使用DAY_OF_MONTHint weekday = calendar.get(calendar.DAY_OF_WEEK); // 星期几 1-7:1:星期日System.out.println(year);System.out.println(month);// 0-11表示对应的月份。 0是1月,1是2月...System.out.println(weekday);System.out.println(day);// 设置日期相关元素Calendar c2 = new GregorianCalendar();c2.set(Calendar.YEAR, 8012);System.out.println(c2);// 日期的计算// 往后100天的时间Calendar c3 = new GregorianCalendar();c3.add(Calendar.DATE, 100);// c3.add(Calendar.DATE, -100); 往前100天的时间System.out.println(c3);// 日期对象和时间对象的转化Date d4 = c3.getTime();Calendar c4 = new GregorianCalendar();c4.setTime(new Date());printCalender(c4);}public static void printCalender(Calendar c) {// 打印 1918年10月10日 11:23:45 周三int year = c.get(Calendar.YEAR) + 1;int month = c.get(Calendar.MONTH) + 1;int date = c.get(Calendar.DAY_OF_MONTH);int dayweek = c.get(Calendar.DAY_OF_WEEK) - 1;String dayweek2 = dayweek == 0 ? "日" : dayweek + "";int hour = c.get(Calendar.HOUR);int minute = c.get(Calendar.MINUTE);int second = c.get(Calendar.SECOND);System.out.println(year + "年" + month + "月" + date + "日 " + hour + "时" + minute + "分" + second + "秒 " + "周" + dayweek);}}
可视化日历程序
package cn.sxt.dyq;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/*** 可视化日历程序** @author DYQ**/public class TestCalender2 {public static void main(String[] args) throws ParseException {String str = "2020-9-10";DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Date date = df.parse(str);Calendar c = new GregorianCalendar();c.setTime(date);System.out.println("日\t一\t二\t三\t四\t五\t六");c.set(Calendar.DAY_OF_MONTH, 1);for (int i = 0; i < c.get(Calendar.DAY_OF_WEEK) - 1; i++) {System.out.print("\t");}int days = c.getActualMaximum(Calendar.DATE);for (int i = 1; i <= days; i++) {System.out.print(c.get(Calendar.DAY_OF_MONTH) + "\t");if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {System.out.println();}c.add(Calendar.DAY_OF_MONTH, 1);}}}
package cn.sxt.dyq;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/*** 可视化日历02** @author DYQ**/public class TestCalendar3 {public static void main(String[] args) throws ParseException {System.out.println("请输入日期(格式:2020-9-10):");java.util.Scanner scanner = new java.util.Scanner(System.in);String str = scanner.nextLine();DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Date date = df.parse(str);Calendar c = new GregorianCalendar();c.setTime(date);int day = c.get(Calendar.DAY_OF_MONTH);int days = c.getActualMaximum(Calendar.DATE);System.out.println("日\t一\t二\t三\t四\t五\t六");c.set(Calendar.DAY_OF_MONTH, 1);for (int i = 0; i < c.get(Calendar.DAY_OF_WEEK) - 1; i++) {System.out.print("\t");}for (int i = 1; i <= days; i++) {if (day == c.get(Calendar.DAY_OF_MONTH)) {System.out.print(c.get(Calendar.DAY_OF_MONTH) + "*\t");} else {System.out.print(c.get(Calendar.DAY_OF_MONTH) + "\t");}if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {System.out.println();}c.add(Calendar.DAY_OF_MONTH, 1);}}}
Math类
Random类

