因为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. SCRIPT5009: “Sys”未定义 部署.net ajax 解决方案

    今天在部署asp.net ajax 的时候发现部署服务器的时候,ajax刷新不正确,开始以为是System.Web.Extensions没有引用到本地,baidu一圈发现(最近google上不了郁闷~ ...

  2. Leetcode-841. 钥匙和房间

    题目 有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间. 在形式上,对于每个房间 i 都有一个钥匙列表 room ...

  3. 自定义View 水印布局 WaterMark 前景色 MD

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

  4. cmd怎么删除Oracle数据库中的用户实例

    Oracle数据库使用过程中,针对系统都会建立独立的数据库用户,但有些时候处于测试或别的原因需要删除,原来的DB用户,这时我们可以使用下面的办法. 下属操作的前提是——确保数据库服务及监听均处于启动状 ...

  5. iOS - 切换图片/clip subview/iCarousel

    源代码:点击打开链接 这个图片展示的时候,我只想让它在蓝色的view上展示..就需要去设置view的一个属性clip subview..把这个属性打勾...view有个clip subview属性,选 ...

  6. javascript——获取列表选择行的列值

    表格布局 方法 代码 $("#send").click(function(){ //获取选择的行号 n= $('input:radio[name="radio" ...

  7. wamp因配置错误而导致apache无法启动的问题

    在使用wamp搭建一个PHP项目环境时,却出现了apache无法启动的问题   通过查看window的错误日志才发现apache出现了错误   错误的原因说的很清楚,是因为配置文件中的Director ...

  8. Android 关于 ActionBarSherlock 的使用

    原文地址 本文内容 使用 主题化 ActionBarSherlock 演示项目 本文 ActionBarSherlock 简单演示 最近一个星期被 actionsherlock 搞得很不爽(光去足疗店 ...

  9. VS2017安装或卸载错误1303

    为添加一个Python开发环境,运行Visual Studio Installer安装报错,下面是日志: 问题日志 安装出现问题. 可通过以下方式排查包故障问题: 1. 使用以下搜索 URL 来搜索针 ...

  10. 微软BI 之SSRS 系列 - 如何实现报表标签的本地化 - 中文和英文的互换

    SSRS 中并没有直接提供本地化的配置方式,因此在 SSRS 中实现本地化,比如有英文标题还有可选的中文标题,就需要通过其它的方式来解决. 比如默认是这样的英文标题 - 但是本地中方用户可能比较喜欢看 ...