范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java8之后的那些新特性(一)局部变量var

  本周开始,我将开启一个新的系列,这个系列是关于Java的。
  在IDEA中2021年的一个调查中,程序员中使用Java的版本中,Java 8仍是主流。新的长期支持版Java 11,Java 17并未有Java 8流行。
  我并不认为一定得使用新版的Java,但我们也要意识到Java 8是在2014年发布的,距今已经是8年之久了。而在这8年中,类似Kotlin,Swift,TypeScript语言都在不断的更新优化自己的语言特性。
  这使得Java 8相比起来,在让代码更简洁优雅上越来越有所差距。好在,Java并未停止它前进的步伐,从Java 8之后的许多个版本,在借鉴参考其它语言优秀的特性的基础之上,Java发展出了新的能让代码更简洁的语法特性。
  一起来随我一起了解一下,究竟有哪些新的语言特性值得我们关注吧。
  这是第一篇,我来说一下局部变量var这个特性吧。 变量与常量
  在声明变量这个事情上,大家所熟知的Java变量申明方式是: //变量 EntityRepository entityRepository = new EntityRepositoryJPA(); //常量 final String httpMethod = "post"
  Java变量申明的方式是 类 + 名称 的方式来进行申明 ,如果是常量,则以final 关键字来申明。
  我们可以对比下其它语言的变量申明方式
  Kotlin中是以var声明变量,val申明常量  //变量 var entityRepository = EntityRepositoryJPA() //常量 val httpMehod = "post"
  TypeScript是以let来声明变量,const来申明常量  //变量 let entityRepository = new EntityRepositoryJPA() //常量 const httpMethod = "post"
  Swift中是由var定义变量,let来定义常量  //变量 var entityRepository = EntityRepositoryJPA() //常量 let httpMethod = "post"
  从上面对比可以看出,相较于Java的 类型 + 名称 的定义方式,新的语言都偏好关键字 + 名称 的模式。类型自动判定
  事实上,现代编程语言,都非常喜欢最大限度的使用 类型自动判定 ,也就是关键字 +名称 这种模式。
  类型推定的基本原则是:只要通过上下文能猜测到的,就不需要明确声明它的类型
  因为,一个显而易见的点是,这样的代码确实更简洁。
  我们如果用 关键字 + 名称 的写法来重写上述Java代码中的变量与常量定义,那我们的代码就是是如此://使用(关键字 + 名称)的模式重写  //变量 var entityRepository = new EntityRepositoryJPA(); //常量 var httpMethod = "post"
  依据类型自动判定的逻辑,编译器和我们程序员,都会很显而易见的猜测到,entityRepository的类型是EntityRepositoryJPA类的实例,而 httpMethod 则是一个String类型。
  当然,上面这个例子可能不太令人感觉到必要性,因为简洁不到哪去,但在一些复杂的场景中,确实能简洁很多 //使用旧有模式 Collector> byOccurrence      = groupingBy(Function.identity(), counting());  //使用var来重写 var byOccurrence = groupingBy(Function.identity(), counting()); 语法解析
  所以,Java 10引进了局部变量var这个关键字,最显著的一个原因就是: 简化代码
  很难说这个特性没有借鉴其它现代主流语言,我认为肯定是参考与借鉴了的。
  但受限于Java过于长久的历史,这个特性相比其它语言,也只是个 半吊子 的实现,它有挺多的限制var关键字只能在方法中使用,不能在方法参数,类参数等上使用 var是变量的含义,没有简化常量的关键字
  其中,最大的一个受限就是,你只能在方法中的局部变量中使用var这个关键字     @Test     void testEntityExists(){         var exists = repository.exists(User.class,-1L);         Assertions.assertFalse(exists);          var created = repository.save(randomUser());         exists = repository.exists(User.class,created.getId());         Assertions.assertTrue(exists);     }
  如上代码所示,你只能在方法内部使用var,不能在其它地方使用这个关键字,而且它表示 变量 ,对于常量,并无相应的关键字来简化。缺点与影响
  优点我就不说了,上面说了,最大的也基本上是最主要的优点是让代码更简洁。
  还是来说缺点吧。
  就我个人的经历来说,我认为,对于长期使用Java语言的程序员来说,这个特性的缺点表现为如下:
  Java程序员并不习惯这个风格
  如果是前端 ,移动端的程序员,他们使用的主要编程语言都基本上是 关键字+名称 的模式,会对这种风格非常熟悉。
  比如对于我这样的,确实我在知道这个特性之后,非常喜欢这样,瞬间基本上就切换为这种模式了,因为我在其它语言中,都是这种风格,我习惯了 关键字+名字 的风格。
  但一直从事Java的程序员并不一样, 类名+名称 的风格他们太熟悉了,对他们来说,这个半吊子特性并无特别使用的必要。
  我们都非常喜欢自己熟悉的风格,不是么?
  局部的优化而非全局性转变
  Java的这个转变,并非是全局性的,你在类的变量,方法参数中,并不能使用这种风格。
  这导致这个转变的影响面比较小,可能进一步加剧了大家对这个特性的忽略。
  影响了代码的可读性
  好吧,我们都知道,简洁性与可读性可能有时候方向不太一样;越简洁,有时候越难以阅读,啰嗦一点,可能读起来更容易理解。
  这种风格,对于习惯了的人来说,并不存在阅读性上的减弱的影响,但对于Java程序员来说,感觉可读性还是会降低一些。
  关于这一点,IDEA这个工具为了强化可读性,提供了一个非常有意思的工具辅助。参照下面的图
  看到没,IDEA自动把var的类型显示出来了。
  为什么IDEA要这么干?肯定是因为Java程序员不太熟悉这种风格,用这种方式来帮助和提醒程序员。
  但站在经常使用其它语言的人,比如我这样的来看,这种并无太多必要。事实上,在IDEA中使用Kotlin时,压根就没有这种提示。
  参照如图所示:
  可见,这个提示是特意为Java准备的,非常贴心。 值得赞赏的进步
  在我知道Java有局部变量以后,受到我过往使用其它语言的影响,我确实很快转变过来了,这种转变几乎不费什么成本。而且从我的编码感觉上来看,这种确实令代码更简洁,这是肯定的。
  但对于那些从始至终使用Java的程序员来说,这种转变我认为需要一些成本。
  但为了追求代码的简洁性,这也是非常值得的。
  当然,一切都由你自己随心所欲来决定了。
  不过从这一点上来看,我倒是对Java这门语言刮目相看,它确实没有停止自己的步伐,不断的借鉴与学习其它现代语言的一些新的好的做法,改进自身。
  而从Java 8到现在最新的Java 17,这个语言都升级了这么多个版本,改进的当然不会是只这一点。
  仅凭我们对Java的热爱,我们也确实值得跟随我们喜欢的这门语言,不要再停留在八年前的版本了,不是么?
  下一篇,我将继续聊聊Java 8之后的有意思的新特性。、

乡村振兴大有可为!广西玉林市台胞点赞梧州乡村振兴新路中国台湾网4月19日讯通过这次活动大家在看到梧州美丽乡村建设的同时,也学习到了许多推动农文旅融合发展的先进经验。台胞游锦贤表示,乡村振兴大有可为,希望在桂同胞能互通互鉴,在乡村振兴拳里有春秋,看太极拳里究竟藏着怎样不为人知的秘密?当一种文化从不可触摸的模糊影子变成眼前活灵活现的实物当你对这种文化的理解不再停留在肤浅表面,而是逐渐向深处挖掘,并能举一反三,触类旁通对于我来说,这就是旅行的意义所在。关于太极拳,酷!女生一个人从钦州骑单车到横州,全程145公里横县人(现已是横州市)在钦8年,几年前就有骑车回横州的想法。前段时间买了辆山地车,家里人从广东回来,自己也想回家,就突发奇想骑单车回横州。查看了天气,周五周六阴天,没有太阳也不下雨泼水节被撕雨衣女生部分网络传言与当时情况不一致近日,女生在云南景洪市泼水节活动中被人撕扯雨衣的视频引发网络热议。视频显示,众人在马路边围成一个圈用水枪对该女子喷水,还有男子在撕扯女子身上的雨衣。云南景洪市文旅局工作人员表示此事明日谷雨降水多,提醒大家牢记食2物,忌3酒,打好夏天基础一年之际在于春,明天就是2023年春季的最后1个节气,光是未来一周的天气预报中就能看得出来,谷雨不亏是以雨命名,明日之后雨水量可谓是翻倍增长。当然,伴随而至的还有新一轮的冷空气,所肾透支的5个表现,你占了几个?一个妙方补阳回春,请您收好肾透支的5个表现,占的越多,说明你虚的越厉害!不过也不用担心,今天我来跟大家分享一个妙方,补阳回春,男人务必收藏好!肾透支的5个表现都有什么?第一个,经常腰酸腿疼。我们说腰为肾之府不想短命,莫睡三觉,你知道是哪三觉吗?我们都知道睡眠是非常重要的,有许多好处,可以促进身体修复和恢复,睡眠时,身体可以进行修复和恢复工作,包括肌肉的生长和维护脑部细胞的修复等。还可以提高免疫力,睡眠可以提高免疫力,降低酒场高手喝酒,总会在旁边放杯水,以前不理解,如今竟是这番道理其实,这种做法是非常有道理的,它不仅可以保护我们的身体,还能更好地享受白酒的美味。具体是为什么这样的道理,听小编给你慢慢道来。首先,白酒中含有的酒精成分比较高,长期饮用容易对身体不澎湃好物你与厨房达人间,就差一口好锅的距离下厨的人都懂一口好锅,就像第三只手。好锅做菜顺饭菜香,是烹饪不变的真理。而德国有个叫velosan(韦诺森)的品牌,简直把锅做得格外有名气。起源于1896年的velosan,距今已春天,皮皮虾正当季,清蒸水煮都不对,老渔民教你一招,又鲜又嫩虾吃的倒是比较频繁,超市里的基围虾经常做活动,我也爱买,50多元一斤的价格还是比较贵的,所以,我一般都是这样操作早餐的时候,我爸妈喜欢吃海鲜面,其实就类似于青椒肉丝面西红柿鸡蛋面,无锡茶颜悦色180元一杯?想必这几天小伙伴们讨论最多的话题就是茶颜悦色要在无锡开业了吧!奶茶控们是不是跃跃欲试要在开业当天尝个鲜了根据前方网友消息目前茶颜悦色圣塘里店已经架起围栏看这架势不火都不行了!门外还
春日邮你驿路花开高邮春季文旅推介会走进山东济南中国山东网感知山东3月3日讯(记者刘自锐)3月3日上午,春日邮你驿路花开高邮春季文旅推介会在山东济南举办,江苏山东两地政府部门行业协会文旅专家重点旅行社代表新闻媒体代表等200余人中国预制菜竞逐万亿级产业赛道出海热潮涌动法国大厨PeguilletHugues制作法式糕点。大会组委会供图中新网佛山3月5日电(记者程景伟)首届中国国际(佛山)预制菜产业大会5日在世界美食之都佛山顺德闭幕。3天以来,约8重点加强减盐零添加等产品的推广和销售,中国酱油第一股加加食品做起了酱油加减法快消八谈零添加加加食品酱油零添加又一次被加加食品重点提及。加加食品在近日接受投资者调研时表示,为提高产品竞争力,2023年公司将重点加强减盐零添加等中高端系列产品的推广和销售。加加亏损75亿!3月2日晚间,哔哩哔哩(下简称B站)在港交所公告,2022年第四季度的净营业额总额达人民币61亿元,较2021年同期增加6。2022年净营业额总额达人民币219亿元,2021年则为为何没感觉到收入同步增加,反而下降和差距更大了?今年的工作报告中提到居民收入增长与经济增长基本同步。但对大多数人来说却没有增长的感觉!这是为什么呢?一被平均了像去年的核酸检测疫苗公司,仅上半年的年报就显示,十家上市公司营收和净利理想汽车董事长李想挑战千亿营收,2024年或将迎来真正的智能电动车时代3月2日,在发布2022年财报后,理想汽车(02015。HKLI。US)举办了2023年首场媒体沟通会。这是去年底人事大调整后,理想汽车高管首次集体亮相。理想汽车董事长李想表示,公呼和浩特2023年八大富豪,3位女老板齐入围,80后创二代闯进前五魅力青城呼和浩特市位于内蒙古中部,地处亚欧大陆腹地,是北方沿边地区重要的中心城市和呼包鄂城市群的核心成员,同时也是连接黄河经济带亚欧大陆桥环渤海经济区域的重要桥梁。呼市历史悠久,自军费7。2背后的孙子兵法今天的政府报告,有两个数字都所有人感到很意外。GDP5军费7。2GDP定为5,严重低于预期。因为即使是各省目标加权平均一下也得是5。5,后面冲个刺也有6。军费7。2,全球都在进入军全国人大代表,四川能源投资集团党委书记董事长王诚推动清洁能源绿色材料和先进制造融合发展四川是经济大省,也是我国重要的能源基地,近年来,四川能源投资集团肩负打造万亿级优质能源化工产业重任,做出了减碳节能的中国贡献,两会期间,记者就坚持持生态优先绿色低碳发展等对王诚代表王煜委员助企纾困重塑信心中国民航局数据显示,2022年民航业亏损2160亿元,国内航空公司步履艰难,春秋航空公司面临严峻考验。不过,在各级政府与行业一系列助企纾困措施帮助下,春秋航空渡过难关,并建立起再次支付宝破产!余额宝里的钱还能取出来吗?近期,非常多的网友都在关注支付宝相关的话题。如果支付宝破产了,那余额宝里的钱还能取出来吗?网友问题马云会不会把余额宝里的钱给卷走了?能问出这些问题的网友是真的可爱!但是,我发现问这