屌丝就爱尝鲜头——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总结晒一晒,布布扣,bubuko.com

时间: 2024-10-11 01:54:47

屌丝就爱尝鲜头——java8总结晒一晒的相关文章

屌丝就爱尝鲜头——java8再判断

这节,我们来通过具体的实例来看看Java8的具体用法. 首当其冲,就是lambda用法. 这里的案例,就是用lambda来实现runnable接口,我们知道以前用匿名内部类的方式来实现runnable接口,这种方法晦涩难懂,用lambda表达式实现以后,这样的代码清爽了不少.上两种对比的代码: public static void main(String[] args) { new Runnable() { public void run() { System.out.println("这是匿名

屌丝就爱尝鲜头——java8初体验

Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分别是Java SE8.Java SE Emebbled 8.Java ME8. Java SE8较以往的系统增强的功能有: ①增强了对集合式操作语言--lambda表达式的支持,"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演

Cocos2d-x v3.0正式版尝鲜体验【3】 Label文本标签

Cocos2d-x在新版本中加入了新的Label API,和以往不同的是,2.x的版本是通过三个不同的类来创建不同的文本标签,而现在是模仿着精灵的创建方式,一个类创建不同形式的文本,不过核心内容还是差不多的. 这是新的Label类结构图 在2.x的系列中,有三种文本,分别是TTF,BMFont和Atlas.在3.0中,将TTF拆分成两种,下面就分别看一下这四种文本的创建. 1.Label::createWithTTF 这是需要使用ttf格式字体文件的创建方式 TTFConfig config("

微信小程序的原型设计尝鲜

"小程序"来了,大世界要变了?微信小程序可能是近期业绩最火的话题之一了. 这个根植于微信流量巨无霸的应用,将对应用市场.对微商.电商.对企业的开发成本.获客成本将产生深远影响?将制造出绕开Google Play和AppStore的另一大App体系?将实现"知人性"的PM张小龙先生的"用后即走"的轻量App之梦?将秒杀传统的App? 虽有海量追捧者趋之若鹜,但也有冷静人士淡定的白眼.但无论如何,腾讯这步棋子既然落在了棋盘上,绝不能悔棋,更不可能半途

二、大数据生态圈尝鲜

Title: 二.大数据生态圈尝鲜 Author: Martin Date: 2016-02-24 18:00 Summary: 先通过几张图对大数据的生态圈有个宏观的认知, 搞清楚有哪些知识点需要掌握, 这些知识点后面都会详细讲解. 技术生态圈: hadoop生态圈: spark生态圈: 企业生态圈: 来自为知笔记(Wiz)

15.EVE-NG小众镜像,助力尝鲜!

文章列表(关注微信公众号EmulatedLab,及时获取文章以及下载链接) 1.EVE-NG介绍(EVE-NG最好用的模拟器,仿真环境时代来临!) 2.EVE-NG安装过程介绍 3.EVE-NG导入Dynamips和IOL 4.EVE-NG导入QEMU镜像 5.EVE-NG关联SecureCRT,VNC,Wireshark 6.EVE-NG网卡桥接,带您走进更高级的实验 7.EVE-NG硬盘扩容,存储海量镜像 8.EVE-NG定制个人镜像,脚本快速导入 9.EVE-NG容纳H3C.Huawei,

51CTO学院新课限时尝鲜计划—爆款课程打造的利器

各位老师好,学院的内容一直都在持续更新,老师源源不断的上线新课程,上线速度也是越来越快,因此学院的小伙伴们准备"在首页第一屏增加一个新内容曝光入口",打造"新课限时尝鲜计划",平台考虑给新课程和新老师更大量的曝光量,推出了"新课限时尝鲜计划",具体内容如下: 一.首页新增[新课限时尝鲜]板块 * 申请加入计划的新课会在学院首页第一屏入口曝光 * 学员限时免费学习 * 免费到期后,课程将恢复原价,并引导学员去购买该讲师的课程 * 在内容免费期间,如

MyEclipse2014新增bug,尝鲜的朋友需注意NotFoundException: org.springframework.web.context.ContextLoaderListener

其实标题后面加上这个异常信息并不合适,但是为了方便和我遇到同样问题的童鞋搜到这篇文章,我不得不这样写啦! 这个异常和你的程序没有关系,如果你没有忘记加入spring Jar包的话,这是fucking MyEclipse2014出现的一个bug! 之前陆续用过MyEclipse8.5.MyEclipse9.1.MyEclipse10.5开发WEB项目,最近听说出了最新版叫MyEclipse2014,于是决定尝尝鲜,运行一个以前在MyEclipse10.5下写的工程,竟然报错如下: 严重: Erro

CoreOS那些事之Rkt容器尝鲜(上)

从CoreOS发布Rocket应用容器项目到现在,已经过去半年时间了.为了增加辨识度,项目更名为了Rkt.在沉寂了许久后,最近又开始在社区里出现了一些新鲜的声音. 首先是4月7日的一条新闻,Google领头投资CoreOS公司1200万美元以共同合作发展旗下的Kubernetes组件.此次合作除了促成新的商业发行版Tectonic的诞生,也使得Rkt容器与Kubernetes的关系拉近了一步:Kubernetes将提供对Rkt的友好支持,而Rkt则将沿用Kubernetes的Pods等概念来规划