本文内容由珊珊老师的视频内容总结而来。
包装类(Integer)
1、基本数据类型与引用数据类型
基本数据类型 | 引用数据类型 | 继承关系 |
---|---|---|
byte | Byte | Number—Object |
short | Short | Number—Object |
int | Integer | Number—Object |
long | Long | Number—Object |
float | Float | Number—Object |
double | Double | Number—Object |
char | Character | Object |
boolean | Boolean | Object |
2、为什么要引入包装类
Java中类是对象的模板,对对象进行的操作,意味着会获取属性和方法。基本数据类型是无法获取属性和方法的,故引入基本数据类型对应的引用数据类型。集合中只能存放引用数据类型。
3、八大基本数据类型对应的包装类都是java.lang包下的,不用导包
4、Integer
- ‘物极必反’
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println("--------------");
System.out.println(Integer.MAX_VALUE + 1);
System.out.println(Integer.MIN_VALUE - 1);
运行结果:
System.out.println(21_4748_3647 + 1);//整形的默认类型是int,所以会当做int类型进行计算
System.out.println(21_4748_3647L + 1);
- Integer底层实际是一个int类型的数据,Integer就是对这个数据进行封装。
- Integer创建实例时可调用两种有参构造方法
1、传int值
Integer i1 = new Integer(12);//int转为Integer
调用的构造方法
2、传字符串:传的字符串需要是可以转换为int类型的字符串,否则会抛异常
Integer i2 = new Integer("12");//String转为Integer
调用的构造方法
int与Integer的类型转换
Integer i3 = 12;//自动装箱:int 转 Integer
Integer i3 = 12;//自动拆箱:Integer 转 int
int a = i3;
- 比较Integer的值
Integer i1 = 127;//Integer i3 = Integer.valueOf(127);
Integer i2 = 127;//Integer i4 = Integer.valueOf(127);
Integer i3 = 128;//Integer i3 = Integer.valueOf(128);
Integer i4 = 128;//Integer i4 = Integer.valueOf(128);
System.out.println(i1.equals(i2));//输出结果 true
System.out.println(i3.equals(i4));//输出结果 true
System.out.println(i1 == i2);//输出结果 true
System.out.println(i3 == i4);//输出结果 false
Integer的valueOf方法
如果传递的值在127~ -128之间,会返回值。如果值超出127~ -128范围,会开辟新的空间。
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Integer是int类型的包装类,通俗讲就是在Integer中封装了一系列方法,对int类型的数据进行操作。
时间处理类
- java.util.Date与java.sql.Date
Date date = new Date();//java.util.Date
System.out.println(date.toString());
System.out.println(date.getTime());
System.out.println(System.currentTimeMillis());
java.sql.Date sqlDate = new java.sql.Date(1632445859091L);
System.out.println(sqlDate.getTime());
System.out.println(sqlDate.toLocalDate());
date = sqlDate;// java.sql.Date继承自java.util.Date ,低转高类型
System.out.println(date);
java.sql.Time time = new java.sql.Time(1632445859091L);
System.out.println(time);
java.sql.Timestamp timestamp = new java.sql.Timestamp(1632445859091L);
System.out.println(timestamp);
//日期格式化类DateFormat :需要注意格式化的大小写
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date d1 = df.parse("2022-01-01 10:11:22");//字符串转Date
System.out.println(d1);
String d2 = df.format(new Date());//Date转字符串
System.out.println(d2);
- Calendar
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());//获取当前时间
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//本年的第几天
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//本月的第几天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//本周的第几天,从周天算起
System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));//本月的第几周
System.out.println(calendar.get(Calendar.YEAR));//当前年份
System.out.println(calendar.get(Calendar.MONTH));//当前月份:<code>JANUARY</code> which is 0
System.out.println(calendar.get(Calendar.DATE));//当前日期
System.out.println("-------------------");
System.out.println(calendar.getActualMaximum(Calendar.DATE));//本月最大的天数
System.out.println(calendar.getActualMaximum(Calendar.MONTH));//本年最大的月份:<code>JANUARY</code> which is 0
System.out.println(calendar.getActualMaximum(Calendar.YEAR));//2_9227_8993:???
System.out.println(calendar.getActualMinimum(Calendar.DATE));//本月最小的天数
System.out.println(calendar.getActualMinimum(Calendar.MONTH));//本年最小的月份:<code>JANUARY</code> which is 0
System.out.println("-------------------");
//设置时间
calendar.set(Calendar.YEAR, 2050);
calendar.set(Calendar.MONTH, 12);
calendar.set(Calendar.DATE, 2);
// System.out.println(calendar);
System.out.println(calendar.getTime());//输出的年月日是2051年1月2日,??没太明白
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateStr = df.format(calendar.getTime());
System.out.println(dateStr);
System.out.println("-------------------");
//String 转 Calendar:可以先转为Date
Date date = java.sql.Date.valueOf("2051-10-25");
calendar.setTime(date);
System.out.println(calendar.getTime());
Math类
System.out.println(E);//自然对数 ----静态导入包
System.out.println(Math.PI);//圆周率
System.out.println(Math.pow(2,10));//幂次
System.out.println(Math.sqrt(4));//开平方
System.out.println(Math.ceil(11.4));//向上取值
System.out.println(Math.floor(11.4));//向下取值
System.out.println(Math.round(99.1));//四舍五入
System.out.println(Math.round(99.8));
System.out.println(Math.random());//随机数,取值范围[0.0,1.0)
System.out.println(Math.addExact(-80,6));//计算两个整数之和
System.out.println(Math.addExact(9143333333433333333L, 623546786754321L));//计算两个长整形的整数之和
System.out.println(Math.subtractExact(77, 222));//计算两个整数的差值
System.out.println(Math.multiplyExact(15, 15));//相乘
System.out.println(Math.incrementExact(33));//整数自增1
System.out.println(Math.decrementExact(33));//整数自减1
System.out.println(Math.negateExact(33));//整数取相反数
System.out.println(Math.toIntExact(111_1111L));//Long类型转换为int类型
System.out.println(Math.floorDiv(1024, 4));//整数相除
System.out.println(Math.floorMod(1026, 4));//取模
System.out.println(Math.abs(-1233.1));//取绝对值
System.out.println(Math.max(-989.1, 6));//取最大值
System.out.println(Math.min(-989.1, 6));//取最小值
Random类
Random random = new Random();
System.out.println(random.nextDouble());
System.out.println(random.nextInt());
System.out.println(random.nextInt(10));//取值范围[0,10)
System.out.println(random.nextBoolean());