因为Groovy可以用Java的所有功能(虽然JVM不同的时候可能会比较麻烦,比如在Android上),所以Groovy与Java的区别可以说就是Groovy的所有特点与优点了。

1. 自动import以下类:

  • java.io.*
  • java.lang.*
  • java.math.BigDecimal
  • java.math.BigInteger
  • java.net.*
  • java.util.*
  • groovy.lang.*
  • groovy.util.*

其实如果用Eclipse的话这个真无所谓……

2. ==相当于equals(),相同性要用.is()

在Java中==对基本量当于equals(),对对象表示相同性,确实有时让人容易搞混。

3.
in现在是关键词,用在groovy版的enhanced for loop中。比如for

(i
in
0..len-1)
{...}或者for

(i
in
0..<len)
{...}(还有一个用法是len.times
{...})

其实我觉得Java5的enhanced
for loop已经很好用了。

4. 数组写法:int[]
a = [1,2,3]

在Java中是:int[]
a = {1,2,3};


5. 分号结束符可用可不用

但是一行写多句代码的时候肯定还是要用的

6.
函数可以不申明return,如果不写的话函数的最后一句将被自动返回

个人认为还是写一下return比较清楚明白。当然closure中就不用了。

7.
用def定义变量相当于定义一个Object类型的变量

这一点应该是给经常用JavaScript的人看的,Java的话就用想用的定义就好了。

8. public
是默认的,也就是default没有了…………

是不错,反正我是没怎么真正用到default的。不过少写几个public也算不上大改变。

9. 调用函数时参数可以不打括号,closure总可以写在括号外面。

有些情况下却非打不可……如果为了保持一致性还是打上吧……

10. 类名直接表示类,不用写.class

11. 如果不加任何修饰的建立一个field,实际上会产生一个private
field加上public的getter以及setter;如果只加final修饰的话会产生一个final private
field加上一个public的getter,没有setter。当用到this时会直接调用field而不是用getter和setter。总之就是getter和setter不用自己写了。

对于Java来说是个进步,但是Eclipse自带的生成setter和getter的功能已经做到这一点了……

12. 用闭包代替匿名内部类做listener。不再支持匿名内部类。

虽然我也不喜欢匿名内部类,但是突然不支持匿名内部类恐怕会导致很多直接拷过来的Java文件需要重写……

13.
编译器变得宽松,容许许多错误,因为动态运行时这些错误也许就不是错误了。

总的来说,我还是更喜欢严禁的编译器,不过为了动态效率就忍了吧……

 青春就应该这样绽放  游戏测试:三国时期谁是你最好的兄弟!!  你不得不信的星座秘密

[转载][Groovy] Groovy与Java的区别(一)的更多相关文章

  1. lua、groovy嵌入到java中的性能对比(转)

    lua和groovy都是可以嵌入到java中的脚本语言.lua以高性能著称,与C/C++在游戏开放中有较多使用,groovy是一个基于Java虚拟机(JVM)的敏捷动态语言,在jvm下有着不错的性能. ...

  2. Groovy小结:java调用Groovy方法并传递参数

    Groovy小结:java调用Groovy方法并传递参数 @(JAVA总结) 1. 场景描述 在网上查了资料发现,java有三种方式调用groovy脚本.但是真正在实际的服务器环境中,嵌入groovy ...

  3. java版本区别

    java版本区别 点我,点我,Eclipse几个版本号的区别(part1) 点我,点我,Eclipse几个版本号的区别(part2) 点我,点我,Eclipse几个版本号的区别(part3)

  4. JavaScript与Java的区别

    关于java和javascript的关系,我曾在一个论坛上看过这样一句话,java和javascript的关系,就好比雷锋和雷峰塔的关系,实在是经典! 因为名字的关系,总是有人误以为Javascrip ...

  5. 转载:Ajax及 GET、POST 区别

    转载:Ajax及 GET.POST 区别 收获: xhr.setRequestHeader(), xhr.getResponseHeader() 可以设置和获取请求头/响应头信息; new FormD ...

  6. 我来谈谈PHP和JAVA的区别

    这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!! 因为由于我是从多年的php开发转到java开发的.所以最,不时的有好 ...

  7. php和java的区别

    php和java的区别 前几天有个大学的同学给我来电话,他是在培训java的,然后我们就讨论了一下关于php和java的优劣区别(我们的是初学者,所以下面发表的内容可能不会很精准到位,望体谅): 我们 ...

  8. JavaScript与java语法区别

    网页中各种技术的作用 感谢大佬:https://blog.csdn.net/RookiexiaoMu_a/article/details/89052768 HTML 制作网页的结构 CSS 美化网页 ...

  9. 转载:详细解析Java中抽象类和接口的区别

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

随机推荐

  1. High Availability (HA) 和 Disaster Recovery (DR) 的区别

    High availability 和disaster recovery不是一回事. 尽管在规划和解决方案上有重叠的部分, 它们俩都是business contiunity的子集. HA的目的是在主数 ...

  2. Java通信过程的中文乱码的解决

    J在基于Java的编程中,常常会碰到汉字的处里及显示的问题.比方一大堆乱码或问号. 这是由于JAVA中默认的编码方式是UNICODE.而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码 ...

  3. Android -- EventBus解析

    EventBus EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递.传统的事件传递方式包括:Handler.BroadCastRece ...

  4. Spark(十二)--性能调优篇

    一段程序只能完成功能是没有用的,只能能够稳定.高效率地运行才是生成环境所需要的. 本篇记录了Spark各个角度的调优技巧,以备不时之需. 一.配置参数的方式和观察性能的方式 额...从最基本的开始讲, ...

  5. sklearn文本特征提取

    http://cloga.info/2014/01/19/sklearn_text_feature_extraction/ 文本特征提取 词袋(Bag of Words)表征 文本分析是机器学习算法的 ...

  6. OpenWRT使用wifidog实现强制认证的WIFI热点

    首先安装wifidog到OpenWRT的路由器: opkg update opkg install wifidog wifidog依赖下面这些模块: iptables-mod-extra iptabl ...

  7. Android Studio 打包时 Signature Version 选择 V1 V2 说明

      问题描述(v1和v2) Android 7.0中引入了APK Signature Scheme v2,v1是jar Signature来自JDKV1:应该是通过ZIP条目进行验证,这样APK 签署 ...

  8. Skyline开发1-环境搭建

    三维一直很火热,它比二维的明显优势是立体效果,更接近真实的物理世界:凡是与三统有关的就叫XX模型,其实就是一种数据罢了:简单的浏览.展示 操作就看起来很炫,尤其是对外行的人来说.无论如何,领导.用户喜 ...

  9. git设置默认编辑为vim

    f you want to set the editor only for Git, do either (you don’t need both): Set core.editor in your ...

  10. 【树莓派】服务配置相关3:基于Ubuntu Server的服务配置

    该文接续之前写过的两篇: [树莓派]服务配置相关 [树莓派]服务配置相关2:基于RPi Desktop的服务配置 这是我个人用来进行树莓派盒子安装配置的脚本,对于外部其他博友,可以部分参考,但不需要逐 ...