因为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. js中document.write的那点事

    document.write()方法可以用在两个方面:页面载入过程中用实时脚本创建页面内容,以及用延时脚本创建本窗口或新窗口的内容.该方法需要一个字符串参数,它是写到窗口或框架中的HTML内容.这些字 ...

  2. [leetcode]Text Justification @ Python

    原题地址:https://oj.leetcode.com/problems/text-justification/ 题意: Given an array of words and a length L ...

  3. ORM数据库框架 LitePal SQLite MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. 基于PU-Learning的恶意URL检测

    https://xz.aliyun.com/t/2190 Ya-Lin Zhang, Longfei Li, Jun Zhou, Xiaolong Li, Yujiang Liu, Yuanchao ...

  5. 【R】函数-统计函数

  6. Linux解决安装包无法找到问题Unable to locate package rar

    1:问题 在默认安装的Linux中有时候会找不到需要安装的软件包,那就需要更新了 例如在执行apt-get install xx的时候就报错了 E: Unable to locate package ...

  7. 设置py文件的路径

    想在IDLE中打开py文件,需要设置PYTHONPATH环境变量: 设置后,就能在IDLE的Path Browser中看到sys.path了: 然后,就可以用import了

  8. 【mybatis】多次查询缓存的问题

    转自:http://cheng-xinwei.iteye.com/blog/2021700?utm_source=tuicool&utm_medium=referral 最近在使用mybati ...

  9. 编码GBK的不可映射字符

    1.错误描写叙述 [ERROR] /E:/Eclipse/workspace/huxs/src/test/java/com/you/huxs/utils/SpringTestBase.java:[14 ...

  10. Mat类具体解释(二)

    Mat::~Mat Mat的析构函数. C++: Mat::~Mat() 析构函数调用Mat::release(). Mat::operator = 提供矩阵赋值操作. C++: Mat& M ...