因为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. 0mq 入门 (转)

    最近做后台发现很多地方需要队列,我用东西一般有两个要求:     1) 够傻够简单.    2) 有源码,能看又能改.    最后相中了0mq,下面介绍如何安装和写个简单的例子.一. linux平台: ...

  2. 荔枝FM 字体文件 IconFontTextView

    使用效果 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...

  3. 【Kafka】Kafka-副本-分区设置-性能调优

    Kafka-副本-分区设置-性能调优 SparkKafkaDemo - Executors kafka replication 负载均衡_百度搜索 Kafka 高性能吞吐揭秘 - 友盟博客 - Seg ...

  4. JAVA-错误Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.

    运行java程序的时候显示如下错误: 问题原因:导致这个错误的原因是因为已经启动了一个tomcat服务器 解决办法:到任务管理器中显示所有用户进程,将tomcat服务进程关闭,重新运行java程序就可 ...

  5. 3分钟搞定Linux系统正则表达式

    正则表达式是一种字符模式,用于在查找过程中匹配制定的字符. 元字符通常在Linux中分为两类:Shell元字符,由Linux Shell进行解析:正则表达式元字符,由vi/grep/sed/awk等文 ...

  6. Spark Strcutured Streaming中使用Dataset的groupBy agg 与 join 示例(java api)

    Dataset的groupBy agg示例 Dataset<Row> resultDs = dsParsed .groupBy("enodeb_id", "e ...

  7. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十八):kafka0.10.1 内置性能测试API用法示例

    消费者测试: ./kafka-consumer-perf-test..com.cn:,vm10..com.cn:,vm10..com.cn: --group test-teg1 --messages ...

  8. Java扫描二维码进行会议签到思路

    1:签到页面都是同一个JSP页面 2:根据不同的会议ID进行拼接URL跳转页面进行签到 JSP页面代码如下 <%@ page language="java" pageEnco ...

  9. (转)Unity3d中的碰撞检测

    很多时候,当我们的主角与其他GameObject发生碰撞时, 我们需要做一些特殊的事情,比如:子弹击中敌人,敌人就得执行一系列的动作.这时,我们就需要检测到碰撞现象,即碰撞检测.这一篇,我来具体谈谈自 ...

  10. js获取当月最后一天

    构造函数 new Date(); new Date(value); new Date(dateString); new Date(year, month[, day[, hour[, minutes[ ...