LocalDate详解

LocalDate使用

localDate时间创建方式

	/*** localDate时间创建方式* 获取当前时间*/@Testpublic void localDateCreate() {LocalDate yyyyMMdd = LocalDate.now();LocalTime HHmmssSSS = LocalTime.now();LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();System.out.println("年月日: " + yyyyMMdd);System.out.println("时分秒毫秒: " + HHmmssSSS);System.out.println("年月日时分秒毫秒: " + yyyyMMddHHmmssSSS);//输出://        年月日: 2020-10-16//        时分秒毫秒: 09:55:49.448//        年月日时分秒毫秒: 2020-10-16T09:55:49.448}

localDate 设值自定义日期 根据指定日期/时间创建对象

	/*** localDate 设值自定义日期* 根据指定日期/时间创建对象*/@Testpublic void setDate() {LocalDate yyyyMMdd = LocalDate.of(2020, 10, 15);LocalTime HHmmssSSS = LocalTime.of(10, 10, 10);LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.of(2020, 10, 15, 10, 10);System.out.println("自定义的年月日: " + yyyyMMdd);System.out.println("自定义时分秒毫秒: " + HHmmssSSS);System.out.println("自定义年月日时分秒毫秒: " + yyyyMMddHHmmssSSS);//输出://        自定义的年月日: 2020-10-15//        自定义时分秒毫秒: 10:10:10//        自定义年月日时分秒毫秒: 2020-10-15T10:10}

日期时间的加减

	/*** 日期时间的加减*/@Testpublic void lessOrAddDate() {LocalDate yyyyMMdd = LocalDate.now();LocalDate addOneDay = yyyyMMdd.plusDays(1L); //添加一日LocalDate addOneMonths = yyyyMMdd.plusMonths(1L);//添加一月LocalDate addOneYears = yyyyMMdd.plusYears(1L);//添加一年LocalDate addOneWeeks = yyyyMMdd.plusWeeks(1L);//添加一周LocalDate delOneDay = yyyyMMdd.minusDays(1L); //减去一日LocalDate delOneMonths = yyyyMMdd.minusMonths(1L);//减去一月LocalDate delOneYears = yyyyMMdd.minusYears(1L);//减去一年LocalDate delOneWeeks = yyyyMMdd.minusWeeks(1L);//减去一周System.out.println("LocalDate yyyyMMdd 当前时间: " + yyyyMMdd);System.out.println("*********LocalDate yyyyMMdd 添加 操作*********");System.out.println("LocalDate yyyyMMdd 添加一日: " + addOneDay);System.out.println("LocalDate yyyyMMdd 添加一月: " + addOneMonths);System.out.println("LocalDate yyyyMMdd 添加一年: " + addOneYears);System.out.println("LocalDate yyyyMMdd 添加一周: " + addOneWeeks);System.out.println("*********LocalDate yyyyMMdd 减 操作*********");System.out.println("LocalDate yyyyMMdd 减去一日: " + delOneDay);System.out.println("LocalDate yyyyMMdd 减去一月: " + delOneMonths);System.out.println("LocalDate yyyyMMdd 减去一年: " + delOneYears);System.out.println("LocalDate yyyyMMdd 减去一周: " + delOneWeeks);System.out.println("####################################################################");LocalTime HHmmssSSS = LocalTime.now();LocalTime addOneHours = HHmmssSSS.plusHours(1L); //添加1小时LocalTime addOneMinutes = HHmmssSSS.plusMinutes(1L);//添加1分钟LocalTime addOneSeconds = HHmmssSSS.plusSeconds(1L);//添加1秒LocalTime addOneNanos = HHmmssSSS.plusNanos(1L);//添加1纳秒LocalTime delOneHours = HHmmssSSS.minusHours(1L); //减去1小时LocalTime delOneMinutes = HHmmssSSS.minusMinutes(1L);//减去1分钟LocalTime delOneSeconds = HHmmssSSS.minusSeconds(1L);//减去1秒LocalTime delOneNanos = HHmmssSSS.minusNanos(1L);//减去1纳秒System.out.println("LocalTime HHmmssSSS 当前时间: " + HHmmssSSS);System.out.println("*********LocalTime HHmmssSSS 添加 操作*********");System.out.println("LocalTime HHmmssSSS 添加1小时: " + addOneHours);System.out.println("LocalTime HHmmssSSS 添加1分钟: " + addOneMinutes);System.out.println("LocalTime HHmmssSSS 添加1秒: " + addOneSeconds);System.out.println("LocalTime HHmmssSSS 添加1纳秒: " + addOneNanos);System.out.println("*********LocalTime HHmmssSSS 减 操作*********");System.out.println("LocalTime HHmmssSSS 减去1小时: " + delOneHours);System.out.println("LocalTime HHmmssSSS 减去1分钟: " + delOneMinutes);System.out.println("LocalTime HHmmssSSS 减去1秒: " + delOneSeconds);System.out.println("LocalTime HHmmssSSS 减去1纳秒: " + delOneNanos);System.out.println("####################################################################");LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();LocalDateTime localDateTimeaddOneDay = yyyyMMddHHmmssSSS.plusDays(1L); //添加一日LocalDateTime localDateTimeaddOneMonths = yyyyMMddHHmmssSSS.plusMonths(1L);//添加一月LocalDateTime localDateTimeaddOneYears = yyyyMMddHHmmssSSS.plusYears(1L);//添加一年LocalDateTime localDateTimeaddOneWeeks = yyyyMMddHHmmssSSS.plusWeeks(1L);//添加一周LocalDateTime localDateTimeaddOneHours = yyyyMMddHHmmssSSS.plusHours(1L); //添加1小时LocalDateTime localDateTimeaddOneMinutes = yyyyMMddHHmmssSSS.plusMinutes(1L);//添加1分钟LocalDateTime localDateTimeaddOneSeconds = yyyyMMddHHmmssSSS.plusSeconds(1L);//添加1秒LocalDateTime localDateTimeaddOneNanos = yyyyMMddHHmmssSSS.plusNanos(1L);//添加1纳秒System.out.println("LocalDateTime yyyyMMddHHmmssSSS 当前时间: " + yyyyMMddHHmmssSSS);System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********");System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一日: " + localDateTimeaddOneDay);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一月: " + localDateTimeaddOneMonths);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一年: " + localDateTimeaddOneYears);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一周: " + localDateTimeaddOneWeeks);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1小时: " + localDateTimeaddOneHours);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1分钟: " + localDateTimeaddOneMinutes);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1秒: " + localDateTimeaddOneSeconds);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1纳秒: " + localDateTimeaddOneNanos);LocalDateTime localDateTimedelOneDay = yyyyMMddHHmmssSSS.minusDays(1L); //减去一日LocalDateTime localDateTimedelOneMonths = yyyyMMddHHmmssSSS.minusMonths(1L);//减去一月LocalDateTime localDateTimedelOneYears = yyyyMMddHHmmssSSS.minusYears(1L);//减去一年LocalDateTime localDateTimedelOneWeeks = yyyyMMddHHmmssSSS.minusWeeks(1L);//减去一周LocalDateTime localDateTimedelOneHours = yyyyMMddHHmmssSSS.minusHours(1L); //减去1小时LocalDateTime localDateTimedelOneMinutes = yyyyMMddHHmmssSSS.minusMinutes(1L);//减去1分钟LocalDateTime localDateTimedelOneSeconds = yyyyMMddHHmmssSSS.minusSeconds(1L);//减去1秒LocalDateTime localDateTimedelOneNanos = yyyyMMddHHmmssSSS.minusNanos(1L);//减去1纳秒System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 减 操作*********");System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一日: " + localDateTimedelOneDay);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一月: " + localDateTimedelOneMonths);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一年: " + localDateTimedelOneYears);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一周: " + localDateTimedelOneWeeks);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1小时: " + localDateTimedelOneHours);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1分钟: " + localDateTimedelOneMinutes);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1秒: " + localDateTimedelOneSeconds);System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1纳秒: " + localDateTimedelOneNanos);/*输出:LocalDate yyyyMMdd 当前时间: 2020-10-16*********LocalDate yyyyMMdd 添加 操作*********LocalDate yyyyMMdd 添加一日: 2020-10-17LocalDate yyyyMMdd 添加一月: 2020-11-16LocalDate yyyyMMdd 添加一年: 2021-10-16LocalDate yyyyMMdd 添加一周: 2020-10-23*********LocalDate yyyyMMdd 减 操作*********LocalDate yyyyMMdd 减去一日: 2020-10-15LocalDate yyyyMMdd 减去一月: 2020-09-16LocalDate yyyyMMdd 减去一年: 2019-10-16LocalDate yyyyMMdd 减去一周: 2020-10-09####################################################################LocalTime HHmmssSSS 当前时间: 10:20:22.164*********LocalTime HHmmssSSS 添加 操作*********LocalTime HHmmssSSS 添加1小时: 11:20:22.164LocalTime HHmmssSSS 添加1分钟: 10:21:22.164LocalTime HHmmssSSS 添加1秒: 10:20:23.164LocalTime HHmmssSSS 添加1纳秒: 10:20:22.164000001*********LocalTime HHmmssSSS 减 操作*********LocalTime HHmmssSSS 减去1小时: 09:20:22.164LocalTime HHmmssSSS 减去1分钟: 10:19:22.164LocalTime HHmmssSSS 减去1秒: 10:20:21.164LocalTime HHmmssSSS 减去1纳秒: 10:20:22.163999999####################################################################LocalDateTime yyyyMMddHHmmssSSS 当前时间: 2020-10-16T10:20:22.165*********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********LocalDateTime yyyyMMddHHmmssSSS 添加一日: 2020-10-17T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 添加一月: 2020-11-16T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 添加一年: 2021-10-16T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 添加一周: 2020-10-23T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 添加1小时: 2020-10-16T11:20:22.165LocalDateTime yyyyMMddHHmmssSSS 添加1分钟: 2020-10-16T10:21:22.165LocalDateTime yyyyMMddHHmmssSSS 添加1秒: 2020-10-16T10:20:23.165LocalDateTime yyyyMMddHHmmssSSS 添加1纳秒: 2020-10-16T10:20:22.165000001*********LocalDateTime yyyyMMddHHmmssSSS 减 操作*********LocalDateTime yyyyMMddHHmmssSSS 减去一日: 2020-10-15T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 减去一月: 2020-09-16T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 减去一年: 2019-10-16T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 减去一周: 2020-10-09T10:20:22.165LocalDateTime yyyyMMddHHmmssSSS 减去1小时: 2020-10-16T09:20:22.165LocalDateTime yyyyMMddHHmmssSSS 减去1分钟: 2020-10-16T10:19:22.165LocalDateTime yyyyMMddHHmmssSSS 减去1秒: 2020-10-16T10:20:21.165LocalDateTime yyyyMMddHHmmssSSS 减去1纳秒: 2020-10-16T10:20:22.164999999*/}

将年、月、日等修改为指定的值,并返回新的日期(时间)对象

/*** 将年、月、日等修改为指定的值,并返回新的日期(时间)对象* 析: 其效果与时间日期相加减差不多,如今天是2018-01-13,要想变为2018-01-20有两种方式* a. localDate.plusDays(20L) -> 相加指定的天数* b. localDate.withDayOfYear(20) -> 直接指定到哪一天*/@Testpublic void directDesignationTime() {LocalDate yyyyMMdd = LocalDate.now();System.out.println("LocalDate yyyyMMdd 当前时间: " + yyyyMMdd);LocalDate addDay = yyyyMMdd.plusDays(4);System.out.println("LocalDate yyyyMMdd 添加4天后的日期: " + addDay);LocalDate directDesignationDate = yyyyMMdd.withDayOfMonth(20);System.out.println("LocalDate yyyyMMdd 直接指定到当月第几号: " + directDesignationDate);LocalDate directDesignationYearDate = yyyyMMdd.withDayOfYear(20);System.out.println("LocalDate yyyyMMdd 直接指定到当年第几天: " + directDesignationYearDate);LocalDate directDesignationYear = yyyyMMdd.withYear(2000);System.out.println("LocalDate yyyyMMdd 当前时间直接指定年份: " + directDesignationYear);LocalDate directDesignationMonth = yyyyMMdd.withMonth(6);System.out.println("LocalDate yyyyMMdd 当前时间直接指定月份: " + directDesignationMonth);}

获取日期的年月日周时分秒

	 /*** 获取日期的年月日周时分秒*/@Testpublic void getDateInfo() {LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();//本年当中第多少天int dayOfYear = yyyyMMddHHmmssSSS.getDayOfYear();//本月当中第多少天int dayOfMonth = yyyyMMddHHmmssSSS.getDayOfMonth();DayOfWeek dayOfWeek = yyyyMMddHHmmssSSS.getDayOfWeek();//本周中星期几int value = dayOfWeek.getValue();System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n"+ "本年当中第" + dayOfYear + "天" + "\n"+ "本月当中第" + dayOfMonth + "天" + "\n"+ "本周中星期" + value + "-即" + dayOfWeek + "\n");//年int year = yyyyMMddHHmmssSSS.getYear();//月Month month = yyyyMMddHHmmssSSS.getMonth();//直接获取int monthValue = yyyyMMddHHmmssSSS.getMonthValue();//日int dayOfMonth1 = yyyyMMddHHmmssSSS.getDayOfMonth();//时int hour = yyyyMMddHHmmssSSS.getHour();//分int minute = yyyyMMddHHmmssSSS.getMinute();//秒int second = yyyyMMddHHmmssSSS.getSecond();//纳秒int nano = yyyyMMddHHmmssSSS.getNano();System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n"+ "年 : " + year + "\n"+ "月 : " + monthValue + "-即 " + month + "\n"+ "日 : " + dayOfMonth1 + "\n"+ "时 : " + hour + "\n"+ "分 : " + minute + "\n"+ "秒 : " + second + "\n"+ "纳秒 : " + nano + "\n");}

时间日期前后的比较与判断

	/*** 时间日期前后的比较与判断*/@Testpublic void isBefore() {LocalDate now = LocalDate.now();LocalDate of = LocalDate.of(2020, 10, 15);//判断of 是否在 now 时间之前boolean before = of.isBefore(now);System.out.println("判断of 是否在 now 时间之前 " + before);//判断of 是否在 now 时间之后boolean after = of.isAfter(now);System.out.println("判断of 是否在 now 时间之后 " + after);//判断两个时间是否相等boolean equal = of.isEqual(now);System.out.println("判断两个时间是否相等 " + equal);//判断是否为闰年boolean leapYear = now.isLeapYear();System.out.println("判断是否为闰年 " + leapYear);/*判断of 是否在 now 时间之前true判断of 是否在 now 时间之后false判断两个时间是否相等false判断是否为闰年true*/}

java8时钟 : clock()

	/*** java8时钟 : clock()*/@Testpublic void clock() {//返回当前时间,根据系统时间和UTCClock clock = Clock.systemUTC();System.out.println(clock);// 运行结果: SystemClock[Z]}

时间戳

	/*** 时间戳* 事实上Instant就是java8以前的Date,* 可以使用以下两个类中的方法在这两个类型之间进行转换,* 比如Date.from(Instant)就是用来把Instant转换成java.util.date的,* 而new Date().toInstant()就是将Date转换成Instant的*/@Testpublic void instant() {Instant instant = Instant.now();System.out.println(instant);Date date = Date.from(instant);Instant instant2 = date.toInstant();System.out.println(date);System.out.println(instant2);}

计算时间、日期间隔

	/*** 计算时间、日期间隔* Duration:用于计算两个“时间”间隔* Period:用于计算两个“日期”间隔*/@Testpublic void durationOrPeriod() {LocalDateTime now = LocalDateTime.now();System.out.println("duration当前时间:" + now);LocalDateTime of = LocalDateTime.of(2020, 10, 15, 10, 24);System.out.println("duration自定义时间:" + of);//Duration:用于计算两个“时间”间隔Duration duration = Duration.between(now, of);System.out.println(now + " 与 " + of + " 间隔  " + "\n"+ " 天 :" + duration.toDays() + "\n"+ " 时 :" + duration.toHours() + "\n"+ " 分 :" + duration.toMinutes() + "\n"+ " 毫秒 :" + duration.toMillis() + "\n"+ " 纳秒 :" + duration.toNanos() + "\n");LocalDate nowDate = LocalDate.now();System.out.println("period当前时间:" + now);LocalDate OfDate = LocalDate.of(2020, 10, 15);System.out.println("period自定义时间:" + of);//Period:用于计算两个“日期”间隔Period period = Period.between(nowDate, OfDate);System.out.println("Period相差年数 : " + period.getYears());System.out.println("Period相差月数 : " + period.getMonths());System.out.println("Period相差日数 : " + period.getDays());//还可以这样获取相差的年月日System.out.println("-------------------------------");long years = period.get(ChronoUnit.YEARS);long months = period.get(ChronoUnit.MONTHS);long days = period.get(ChronoUnit.DAYS);System.out.println("Period相差的年月日分别为 : " + years + "," + months + "," + days);//注意,当获取两个日期的间隔时,并不是单纯的年月日对应的数字相加减,而是会先算出具体差多少天,在折算成相差几年几月几日的/*输出:duration当前时间:2020-10-16T14:41:40.235duration自定义时间:2020-10-15T10:242020-10-16T14:41:40.235 与 2020-10-15T10:24 间隔天 :-1时 :-28分 :-1697毫秒 :-101860235纳秒 :-101860235000000period当前时间:2020-10-16T14:41:40.235period自定义时间:2020-10-15T10:24Period相差年数 : 0Period相差月数 : 0Period相差日数 : -1-------------------------------Period相差的年月日分别为 : 0,0,-1*/}

日期格式化

将时间对象转化为日期字符串

	 /*** 将时间对象转化为日期字符串* 时间日期的格式化(格式化后返回的类型是String) 自定格式 使用 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");* 注:自定义转化的格式一定要与日期类型对应* LocalDate只能设置仅含年月日的格式* LocalTime只能设置仅含时分秒的格式* LocalDateTime可以设置含年月日时分秒的格式*/@Testpublic void formatter1() {LocalDateTime now = LocalDateTime.now();DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");String format = dtf.format(now);System.out.println(format);//输出: 2020-10-16 14:41:01:086}

将时间字符串形式转化为日期对象

	/*** 将时间字符串形式转化为日期对象* <p>* 注:格式的写法必须与字符串的形式一样* 2018-01-13 21:27:30 对应 yyyy-MM-dd HH:mm:ss* 20180113213328 对应 yyyyMMddHHmmss* 否则会报运行时异常!* <p>* 但要记住:得到的最终结果都是类似2018-01-13T21:27:30的格式* 因为在输出LocalDateTime对象时,会调用其重写的toString方法。*/@Testpublic void formatter2() {String dateStr = "2020-11-12";DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");LocalDate formatterDate = LocalDate.parse(dateStr, dtf);System.out.println(formatterDate);//输出 2020-11-12}

将时间日期对象转为格式化后的时间日期对象

	/*** 将时间日期对象转为格式化后的时间日期对象*/@Testpublic void formatter3() {//新的格式化API中,格式化后的结果都默认是String,有时我们也需要返回经过格式化的同类型对象LocalDateTime ldt1 = LocalDateTime.now();DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String temp = dtf1.format(ldt1);LocalDateTime formatedDateTime = LocalDateTime.parse(temp, dtf1);System.out.println(formatedDateTime);}

转换

localDate 转 date

	/*** localDate 转 date* localDateTime 转 date*/@Testpublic void localDateToDate() {LocalDate now = LocalDate.now();Date from = Date.from(now.atStartOfDay(ZoneOffset.systemDefault()).toInstant());LocalDateTime localDateTime = LocalDateTime.now();Date date = Date.from(localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant());System.out.println(from);System.out.println(date);}

date 转 localDate

	/*** date 转 localDate* date 转 localDateTime*/@Testpublic void dateToLocalDate() {Date date = new Date();LocalDate localDate = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDate();System.out.println(localDate);LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDateTime();System.out.println(localDateTime);}

localDate 转 时间戳

	/*** LocalDate 转 时间戳* LocalDateTime 转 时间戳*/@Testpublic void localDateToInstant() {LocalDate localDate = LocalDate.now();long instant = localDate.atStartOfDay(ZoneOffset.systemDefault()).toInstant().toEpochMilli();System.out.println(instant);LocalDateTime now = LocalDateTime.now();long instant1 = now.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();System.out.println(instant1);}

时间戳 转 localDate

	/*** 时间戳 转 LocalDate* 时间戳 转 LocalDateTime*/@Testpublic void instantToLocalDate() {long time = new Date().getTime();LocalDateTime localDateTime = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDateTime();System.out.println(localDateTime);LocalDate localDate = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDate();System.out.println(localDate);}

转载:https://www.jianshu.com/p/5e9e2bb55211

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java8中计算时间的四种方式及区别Period、Duration、ChronoUnit、Until 时间区间Duration的简单使用

一.简述 在Java8中&#xff0c;我们可以使用以下类来计算日期时间差异&#xff1a; 1.Period 2.Duration 3.ChronoUnit二.Period类 Period类计算只有年、月、日 计算的是LocalDate两个时间间隔的年月日 public static void main(String[] args) {LocalDate startTime Loc…

[JAVA基础] 成员变量和局部变量(一看就懂的总结归纳篇)

引言 成员变量和局部变量在每种编程语言中都有涉及&#xff0c;如果之前了解过其他语言的成员变量或者局部变量&#xff0c;那么在学习java中的成员变量和局部变量时可以看看有那些联系和不同&#xff0c;这一块的东西也不能说难&#xff0c;如果第一次接触可能会感觉有点乱&a…

【Java多线程】内存模型JMM—主内存与工作内存分析

文章目录JAVA内存模型JVM主内存与工作内存描述JVM内存间交互规则JVM先行发生原则内存交互基本操作的 3 个特性原子性(Atomicity)可见性(Visibility)有序性(Ordering)上述内存模型与Java多线程之间的问题JAVA内存模型 共享变量&#xff1a;如果一个变量在多个线程的工作内存中都…

Java 两个日期之间相差的天数计算 Calendar的DAY_OF_MONTH, DAY_OF_YEAR, DATE的区别

项目开发过程中经常遇到这类需求&#xff0c;计算两个日期之间的差&#xff0c;今天我系统总结一下这个技术点&#xff1a; 1、两个日期之间相差的天数&#xff0c;日期为单位&#xff08;比如相差两秒&#xff0c;可能就相差一天&#xff0c;1.12:23:59&#xff1a;59和13:01…

JMM中工作内存和主内存的关系

Java运行时的数据区域分布&#xff1a; 一、共享区域&#xff1a; &#xff08;1&#xff09;方法区:存储了每个类的信息&#xff08;包括类的名称、方法信息、字段信息&#xff09;、静态变量、常量以及编译器编译后的代码等。其中常量池就是在此区域&#xff1a;记录了每一…

使用MyBatis获得包含内嵌对象或对象集合的结果——MyBatis结果集封装(复杂对象,连接查询结果集封装)

最终要获得的SysUser对象 public class SysUser implements Serializable {//普通String属性private String userId;private String userName;private String userPhone;private String userPassword;private String userLastLoginTime;private String userCreateTime;private…

SpringBoot配置MyBatis的sql执行超时时间(mysql)

当某些sql因为不知名原因堵塞时&#xff0c;为了不影响后台服务运行&#xff0c;想要给sql增加执行时间限制&#xff0c;超时后就抛异常&#xff0c;保证后台线程不会因为sql堵塞而堵塞。 方法一 yml全局配置&#xff1a;单数据源可以&#xff0c;多数据源时会失效 方法二 j…

HTTP协议中的302,303状态码

之前也只知道302,303是请求重定向,但是当被问到302,303的具体区别是什么的时候我有点迷,现在就为了加强记忆,来了解下具体情况: 302是http1.0的内容&#xff0c;303是http1.1的内容。301和302本来在规范中是不允许重定向时改变请求方法的&#xff08;将POST改为GET&#xff09…

Java8中Stream为什么要boxed

在介绍boxed前&#xff0c;先看下面一个案例 Java8中的有个生成随机数的Random类&#xff0c;先看下面代码&#xff0c;功能是生成100个随机数。数字在0到100之间。 Random random new Random(); IntStream intStream random.ints(0, 100); intStream.lim…

Spring工具类:FileCopyUtils、StreamUtils

文章目录FileCopyUtilsStreamUtils参考资料Spring 在 org.springframework.util 包提供了很多实用的工具类。今天关心一下Copy 相关的两个&#xff1a; FileCopyUtils FileCopyUtils就是对StreamUtils的copy方法进行了封装&#xff0c;在每次复制完毕后关闭流。&#xff08;因…

Spring自带工具类(断言、ObjectUtils、FileCopyUtils、ResourceUtils、StreamUtils、ReflectionUtils、AopUtils、AopCont)

文章目录断言对象、数组、集合文件、资源、IO 流反射、AOP断言 断言是一个逻辑判断&#xff0c;用于检查不应该发生的情况Assert 关键字在 JDK1.4 中引入&#xff0c;可通过 JVM 参数-enableassertions开启SpringBoot 中提供了 Assert 断言工具类&#xff0c;通常用于数据合法…

Arrays.asList踩坑——引发的Exception in thread “main“ java.lang.UnsupportedOperationException

Exception in thread “main” java.lang.UnsupportedOperationException 如果你尝试修改Arrays.asList方法生产的List&#xff0c;那么就会报这个错误 public static void main(String[] args) {Integer[] arr new Integer[]{7,8,9};List<Integer> list Arrays.asLi…

GIS算法:JAVA拓扑套件JTS

常用可以用于GIS数据处理和空间计算的java包有geotool和jts。 相对来说&#xff0c;geotool功能更全面&#xff0c;还可以用于数据转换、瓦片地图发布、栅格影像分析等&#xff0c;jts只能进行基本的数据处理和空间计算。 但大多数情况下jts就完全够用了。 geotool的官网&am…

Java本地远程服务器debug调试详解

日常我们debug是经常用的&#xff0c;但是本地还好说&#xff0c;远程debug就有点难度&#xff0c;而且有时候必须要在预演&#xff0c;测试环境的服务器去debug&#xff0c;举个例子&#xff0c;需要https&#xff0c;公网&#xff0c;域名之类的&#xff0c;测试服务器这些有…

Linux “ll“ 命令详解

“ls -l” “ls -al” ll 用来查询当前目录下文件及目录的详情 1.第一位文件类型 普通文件 &#xff0c; d 目录文件&#xff0c;I 链接文件&#xff0c;p 管理文件&#xff0c; b 块设备文件&#xff0c; c 字符设备文件&#xff0c; s 套接字文件 2.文件属性 第一部分表示文…

使用BASE64Decoder完成文件与二进制之间互相转化

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;/**\* 使用sun.misc.BASE64Decoder和sun.misc.BASE64Encoder\* 完成文件转化二进…

SpringBoot项目jar发布获取jar包所在目录路径

//第一种File path new File(ResourceUtils.getURL("classpath:").getPath());if(!path.exists()) path new File("");System.out.println(path.getAbsolutePath());//第二种System.out.println(System.getProperty("user.dir"));//第三种Stri…

路径classpath,classpath*,以及file:

./ 当前目录 …/上一层目录 /是根目录 1. classpath : 类路径&#xff0c;指的是编译后的字节码文件存储路径&#xff0c;一般为target目录下的classes目录&#xff08;java项目&#xff09;&#xff0c;在web项目中指的是WEB-INF下的classes目录。实际上&#xff0c;两者其实…

到底什么时候该使用MQ?

一、缘起 一切脱离业务的架构设计与新技术引入都是耍流氓。 引入一个技术之前&#xff0c;首先应该解答的问题是&#xff0c;这个技术解决什么问题。 就像微服务分层架构之前&#xff0c;应该首先回答&#xff0c;为什么要引入微服务&#xff0c;微服务究竟解决什么问题&…

Java中ByteArrayInputStream和ByteArrayOutputStream用法详解

Java中ByteArrayInputStream和ByteArrayOutputStream用法详解 这篇文章主要介绍了Java中ByteArrayInputStream和ByteArrayOutputStream用法详解&#xff0c; ByteArrayInputStream 的内部额外的定义了一个计数器&#xff0c;它被用来跟踪 read() 方法要读取的下一个字节 Byte…