[转载][Groovy] Groovy与Java的区别(一)

本文列举了Groovy语言与Java语言的主要区别,包括自动导入常用类、==操作符的使用变化、新关键字in的引入、数组声明方式的不同、分号使用的灵活性等特性,并探讨了这些变化如何影响开发者的编程习惯。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为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. 编译器变得宽松,容许许多错误,因为动态运行时这些错误也许就不是错误了。
总的来说,我还是更喜欢严禁的编译器,不过为了动态效率就忍了吧……

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

转载于:https://www.cnblogs.com/huapox/p/3509913.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值