个人学习笔记,部分图片资源来自学习文件。 感谢尚硅谷。
字符串,使用一对 双引号----“ ”,包起来表示
//方式一:字面量定义 s1的数据java声明在方法区的字符串常量池
String s1 = "java";
//方式二:new + 构造器 s2保存的地址值,是数据在堆空间中开辟空间后对应的地址值
String s2 = new String("java");
java.lang.StringBuffer代表可变的字符序列,不同于String,其对象必须使用构造器生成。
StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且
提供相关功能的方法也一样
注意:作为参数传递的话,方法内部String不会改变其值,StringBuffer和StringBuilder
会改变其值。
返回目录
System类提供的==public static long currentTimeMillis()==用来返回当前时
间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差(时间戳)。–此方法适于计算时间差
数据库部分:对应着数据库中的日期类型的变量
//实例化SimpleDateFormat:默认的
SimpleDateFormat sdf = new SimpleDateFormat();
// 格式:日期-Tue May 12 22:13:14 CST 2020 字符串-2020/5/12 下午10:08
//开发中基本不用默认格式,自定义格式类型
//2020-05-12 10:27:58
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format1 = sdf1.format(date);
//格式化: 日期——> 字符串
System.out.println(format1);//2020-05-12 10:27:58
//解析: 字符串--> 日期
Date date2 = null;
try {
//当解析时,parse()只能识别构造器指定的日期格式
date2 = sdf1.parse("2020-05-12 10:27:58");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date2); //Tue May 12 10:27:58 CST 2020
java.util.Calendar(日历)类是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
获取Calendar实例的方法
//常用方法
//get()
//当前天数是一个月中的第几天 13
System.out.println(calerdar.get(Calendar.DAY_OF_MONTH));
//当前天数是一年中的第几天 134
System.out.println(calerdar.get(Calendar.DAY_OF_YEAR));
//当前天数是一个星期中的第几天,从星期日开始算 4
System.out.println(calerdar.get(Calendar.DAY_OF_WEEK));
//set():修改Calendar中的值 22
calerdar.set(Calendar.DAY_OF_MONTH,22);
System.out.println(calerdar.get(Calendar.DAY_OF_MONTH));
//add() 22+3-->25 减天数就加负数
calerdar.add(Calendar.DAY_OF_MONTH,3);
System.out.println(calerdar.get(Calendar.DAY_OF_MONTH));
//getTime() 日历类--->Date对象
Date date3 = calerdar.getTime();
System.out.println(date3);//Mon May 25 09:07:51 CST 2020
//setTime() Date对象--->日历类
Date date4 = new Date();
calerdar.setTime(date4);
System.out.println(calerdar.get(Calendar.DAY_OF_MONTH));
返回目录
java.time --(吸收了Joda.time),弥补了JDK 8 之前的一些缺陷
LocalDate、LocalTime、LocalDateTime 类是其中较重要的几个类,它们的实例
是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。
//获取当前时间---now()
LocalDate localDate = LocalDate.now();
LocalTime localTime= LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
//设定指定的年月日时分,没有偏移量--of()
LocalDateTime localDateTime1 = LocalDateTime.of(2020,5,13,9,40);
System.out.println(localDateTime1);//2020-05-13T09:40
//getXxx():
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getDayOfWeek());
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getMinute());
//临时改变,体现了不可变性--with()
LocalDate localDate1 = localDate.withDayOfMonth(22);
System.out.println(localDate);
System.out.println(localDate1);
//增加---plus()
LocalDateTime localDateTime2 = localDateTime.plusDays(5);
System.out.println(localDateTime);
System.out.println(localDateTime2);
//减少--minus()
LocalDateTime localDateTime3 = localDateTime.minusDays(3);
System.out.println(localDateTime);
System.out.println(localDateTime3);
Instant:时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳
类似于java.util.Date类
// Instant
返回UTC时区的标准时间
Instant instant = Instant.now();
System.out.println(instant);
//根据时区时间差进行改变,偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);
//获取自1970年1月1日0时0分0秒(UTC)开始的毫秒数
long milli = instant.toEpochMilli();
System.out.println(milli);
//通过指定的毫秒数获得指定的日期--ofEpochMilli()
Instant instant1 = Instant.ofEpochMilli(1589339875695L);
System.out.println(instant1);
类似于SimpleDateFormat类,实例化方式:
/*
DateTimeFormatter:格式化与解析日期或时间
*/
//实例化方式:
//预定义的标准格式\本地化相关的格式 略
//重点使用自定义格式,较灵活
// 自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String str4 = formatter2.format(LocalDateTime.now());
System.out.println(str4);//2020-05-13 12:22:39
//解析
TemporalAccessor parse1 = formatter2.parse("2020-05-13 12:22:39");
System.out.println(parse1);
//{MinuteOfHour=22, NanoOfSecond=0, HourOfAmPm=0, MilliOfSecond=0, MicroOfSecond=0,
// SecondOfMinute=39},ISO resolved to 2020-05-13
返回目录
Comparable接口的使用举例:
1、像String 、包装类等实现了Comparable接口,重写了compareTo()方法
2、像String 、包装类重写compareTo()后,从小到大排列
3、重写的规则:
如果当前对象this大于形参对象obj,返回正整数
如果当前对象this小于形参对象obj,返回负整数
如果当前对象this等于形参对象obj,返回零
4、对于自定义类来说,如果需要排序,我们可以让自定义类实现Comparable接口,重写compareTo()方法在compareTo()中指明排序
//指明对象排序方式: 价格从低到高;再按照产品名称从低到高
@Override
public int compareTo(Object o) {
if (o instanceof Goods){
Goods goods = (Goods)o;
if (this.price > goods.price){
return 1;
}else if (this.price < goods.price){
return -1;
}else {
// return 0;
return this.name.compareTo(goods.name);
}
//方式二
// return Double.compare(this.price,goods.price);
}
throw new RuntimeException("传入的数据类型不一样");
}
当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码,
或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那
么可以考虑使用 Comparator 的对象来排序
Comparator com = new Compare(){
public int compare(Object o1, Object o2){
if(o1 instanceof XXX && O2 instanceof xxx){
}
return 0;//可以实现排序条件的嵌套,再来个if判断
}
}
返回目录
java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回
值类型一般为double型.
返回目录
java.math包的BigInteger可以表示不可变的任意精度的整数。
BigInteger(String val):根据字符串构建BigInteger对象
一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中
要求数字精度比较高,故用到java.math.BigDecimal类
BigDecimal类支持不可变的、任意精度的有符号十进制定点数
math.BigDecimal==类
BigDecimal类支持不可变的、任意精度的有符号十进制定点数