屌丝就爱尝鲜头——java8总结晒一晒
前两节讨论了那么多,这节就是两个议题,讨论了新增的日期的api,再说一说我的Java8的一些心得体会了。
首先,我们必须要搞清楚Java 8 为什么要增加新的日期的api,这是由于老的日期api非常的繁琐,使用起来非常不方便,Java作者奉行这变者通不变者死的原则,于是增加了这些api。下面,我们总点介绍这几个类——LocalDate类、LocalTime类、LocalDateTime类、DateTimeFormatter类,zoneDate类。一个个来看:
Ⅰ、LocalDate类——返回日期类。
LocalDate表示不带时区的日期,比如2000-1-1.此类的常见方法是:
getYear——返回相应的年份,
getMonth——返回相应的月份,
getDayOfMonth——返回相应的月份的某一天,
of——传递整型格式化日期。
例如我们用此类将当前日期格式化xxxx年xx月xx日,并且与相应的tostring方法就行对比。例如,请看代码:
LocalDate localDate = LocalDate.now();
int year = localDate.getYear();
int month = localDate.getMonthValue();
int day=localDate.getDayOfMonth();
DecimalFormat decimalFormat=new DecimalFormat("00");
System.out.println(year+"年"+decimalFormat.format(month)+"月"+decimalFormat.format(day)+"日");
System.out.println(localDate.toString());
运行结果如下:
我们看到Localdate不想calendar类中的月份的值自动少一了。
ⅡLocalTime类——返回时间类。
LocalTime表示不带时区的时间,比如04:44:50.12。常见的方法有:
getHour——返回当前所对应的小时数,
getMinute——返回当前所对应的分钟数,
getSecond——返回当前所对应的秒数,
ofxxxx——返回所对应某(小时,分钟,秒)数.
例如我们用此类将当前时间格式化xx时xx分xx秒,并且与相应的tostring方法就行对比。例如,请看代码:
LocalTime time=LocalTime.now();
DecimalFormat decimalFormat=new DecimalFormat("00");
int hour= time.getHour();
int minute=time.getMinute();
int second=time.getSecond();
System.out.println(decimalFormat.format(hour)+"时"+decimalFormat.format(minute)+"分"+decimalFormat.format(second));
System.out.println(time.toString());
运行结果如下:
从而看出LocalTime能够抛弃时区的影响。
ⅢLocalDateTime类——返回时间日期类。
他是日期日期时间中一个最重要的类,它是LocalDate和LocalTime的组合体,表示的是不带时区的日期及时间。看上去,LocalDateTime和Instant很象,但记得的是“Instant中是不带时区的即时时间点。可能有人说,即时的时间点不就是日期+时间么?看上去是这样的,但还是有所区别,比如LocalDateTime对于用户来说,可能就只是一个简单的日期和时间的概念,考虑如下的例子:两个人都在2013年7月2日11点出生,第一个人是在英国出生,而第二个是在中国北京,如果我们问他们是在什么时候出生的话,则他们看上去都是在同样的时间出生(就是LocalDateTime所表达的),但如果我们根据时间线(如格林威治时间线)去仔细考察,则会发现在出生的人会比在英国出生的人稍微早8个小时(这就是Instant所表达的概念,并且要将其转换为UTC格式的时间)。常见的方法有:
getYear——返回相应的年份,
getMonth——返回相应的月份,
getDayOfMonth——返回相应的月份的某一天,
getHour——返回当前所对应的小时数,
getMinute——返回当前所对应的分钟数,
getSecond——返回当前所对应的秒数。
例如我们用此类将当前时间格式化xxxx年xx月xx日 xx时xx分xx秒,并且与相应的tostring方法就行对比。例如,请看代码:
LocalDateTime localDateTime = LocalDateTime.now();
int year = localDateTime.getYear();
int month = localDateTime.getMonthValue();
int day = localDateTime.getDayOfMonth();
DecimalFormat decimalFormat = new DecimalFormat("00");
int hour = localDateTime.getHour();
int minute = localDateTime.getMinute();
int second = localDateTime.getSecond();
System.out.println(year + "年" + decimalFormat.format(month) + "月"
+ decimalFormat.format(day) + "日" + " "
+ decimalFormat.format(hour) + "时"
+ decimalFormat.format(minute) + "分"
+ decimalFormat.format(second));
System.out.println(localDateTime.toString());
运行结果如下:
ⅣDateTimeFormatter类——返回日期时间格式化类。
java.text.NumberFormat不一样的是DateTimeFormatter是不可变的并且是类型安全的。常见的方法有:
format方法——将其格式化成相应的字符串。请看源代码:
DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("MM dd, yyyy - HH:mm");
LocalDateTime parsed = LocalDateTime.parse("11 03, 2014 - 07:13", dateTimeFormatter);
String string = dateTimeFormatter.format(parsed);
System.out.println(string);
运行结果如下:
这样格式化字符串更加的方便
ⅤZonedDateTime类——获取相应的时区时间,妈妈再也不用为我的时区问题发愁了。
ZonedDateTime, ZoneId -时区很重要的时候使用.
我们看个实例,获取相应时区时间:
ZonedDateTime zonedDateTime= ZonedDateTime.now();
System.out.println(zonedDateTime.toString());
运行结果如下:
看到没有了,能够获取相应时区。十分的方便。
总之,Java8 日期的api十分方便。
java8最终总结,一些边边角角的知识拾人牙慧
反射和注解的变化
通过类型注解,我们能够在更多的地方使用注解,例如像List<@Nullable String>这样的泛型参数中。这增强了通过静态分析工具发现错误的能力,它将增强并重定义Java内置的类型系统。
Nashorn JavaScript引擎
Nashorn是一个集成到JDK中的新的、轻量级、高性能的JavaScript实现。Nashorn是Rhino的继任者,它提升了性能和内存使用情况。它将会支持javax.script API,但是它并不会支持DOM/CSS,也不会包含浏览器插件API。
java.lang、java.util等其他地方的新增功能
Java 8还向很多其他的包中添加了大量其他的功能,在本文中我们并没有提及。下面是一些值得注意的内容。可以使用ThreadLocal.withInitial(Supplier)更加简洁的声明本地线程变量。长期未兑现的StringJoiner和String.join(...)现在已经是Java 8的一部分了。比较器提供了一些新的方法能够用于链接和基于域的比较。默认的字符串池映射大小更大了,大约在25—50K。
屌丝就爱尝鲜头——java8总结晒一晒的更多相关文章
- 屌丝就爱尝鲜头——java8再判断
这节,我们来通过具体的实例来看看Java8的具体用法. 首当其冲,就是lambda用法. 这里的案例,就是用lambda来实现runnable接口,我们知道以前用匿名内部类的方式来实现runnable ...
- 屌丝就爱尝鲜头——java8初体验
Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分 ...
- 微信小程序“满月”:尝鲜之后你还用过它吗?
距离 2017 年 1 月 9 日微信小程序上线,整整过去了一个月时间.和互联网时代每天出现的众多新鲜事物相似,小程序甫一诞生,立即占据了各大科技媒体网站头屏并引起社交圈的兴奋讨论.由于背靠微信,纷纷 ...
- Java 8特性尝鲜:新新IO
Java 8特性尝鲜:新新IO 在这个专题前面的文章中,我们已经看到,使用Java8的lambda表达式对现有的JDK1.2 I/O库的提升,主要是可以使用lambda表达式来构造java.io.Fi ...
- JEP解读与尝鲜系列4 - Java 16 中对于 Project Valhalla 的铺垫
这是 JEP 解读与尝鲜系列的第 4 篇,之前的文章如下: JEP解读与尝鲜系列 1 - Java Valhalla与Java Inline class JEP解读与尝鲜系列 2 - JEP 142 ...
- Windows 10 周年版尝鲜
早在今年的 Build 大会上,微软就开始宣传最新的 Windows 10 周年版更新,炫了不少特技,直到昨天(2016/8/2 PST)才正式放出,相关新闻可以参考这里,正式的版本为 Version ...
- 【翻译】五步快速使用LINQPad尝鲜StreamInsight
StreamInsight 学习地址:http://www.cnblogs.com/StreamInsight/archive/2011/10/26/StreamInsight-Query-Seri ...
- 小程序新能力-个人开发者尝鲜微信小程序
个人开发者的福利 微信小程序,刚听到这个新名词的时候,我就兴冲冲的去找入口,看看自己能不能搞个微信小程序的HelloWorld,毕竟能在微信上把自己写的一些小工具跑起来还是满炫酷的. 没想,网上一查, ...
- 【响应式】foundation栅格布局的“尝鲜”与“填坑”
提到响应式,就不得不提两个响应式框架--bootstrap和foundation.在标题上我已经说明白啦,今天给大家介绍的是foundation框架. 何为"尝鲜"?就是带大伙 ...
随机推荐
- BZOJ.2938.[POI2000]病毒(AC自动机)
题目链接 \(Description\) 给n个模式串,问是否存在长度无限的主串,使得任何一个模式串都没有在主串中出现. \(Solution\) 先建AC自动机. 假设我们有了一个无限长的安全代码, ...
- BZOJ4254 : Aerial Tramway
可以修建的缆车总数不超过n,于是可以先通过$O(n^2)$的枚举求出所有可以修建的缆车. 对于一个缆车,若它仅连接i和i+1,那么它不受k的限制,把这种缆车额外取出,从大到小排序. 剩下的缆车两两之间 ...
- HDU 5901 Count primes 论文题
Count primes 题目连接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5901 Description Easy question! C ...
- Jmeter自定义编写Java代码调用socket通信
一.前言 最近需要测试一款手机游戏的性能,找不到啥录制脚本的工具,然后,另外想办法.性能测试实际上就是对服务器的承载能力的测试,和各种类型的手机客户端没有啥多大关系,手机再好,服务器负载不了,也不能够 ...
- PHP常用设计模式
1.单例模式指在整个应用中只有一个对象实例的设计模式 class Single { public $rand; static private $instance; // 类直接调用 final pri ...
- spring-boot 速成(9) druid+mybatis 多数据源及读写分离的处理
按上节继续学习,稍微复杂的业务系统,一般会将数据库按业务拆开,比如产品系统的数据库放在product db中,订单系统的数据库放在order db中...,然后,如果量大了,可能每个库还要考虑做读.写 ...
- Visual Studio新的 .csporj 文件
Visual Studio新的 .csporj 文件非常方便,虽然目前还不支持WPF.WinForm等工程,但应用到控制台程序,类库还是没有任何问题的.只需要简单的用如下内容替换老的csproj即可: ...
- 爬虫IP被禁的简单解决方法
爬虫以前听上去好厉害好神秘的样子,用好了可以成就像Google.百度这样的索索引擎,用不好可以凭借不恰当的高并发分分钟崩掉一个小型网站.写到这里想到12306每年扛住的并发请求量,觉得好牛逼. 爬虫和 ...
- ProFTPd Local pr_ctrls_connect Vulnerability - ftpdctl 漏洞及攻击代码分析
攻击代码网址:http://www.exploit-db.com/exploits/394/ 1.执行环境: 1.ProFTPD 1.3.0/1.3.0a 2.编译ProFTPD时.--enable- ...
- delphi 服务程序
http://www.delphifans.com/InfoView/Article_662.html 用Delphi创建服务程序 Windows 2000/XP和2003等支持一种叫做"服 ...