Groovy与Java的区别

来源:互联网 发布:js点击事件的window 编辑:程序博客网 时间:2024/05/17 10:39

1. 在Groovy可以用def定义无类型的变量(定义变量方面def与JavaScript中的var相似),和返回值为无类型的方法,而在Java中没有def

2. Java中的equals方法对应Groovy中的== , 而Java中的==(判断是否引用同一对象)对应Groovy中的is方法

3. Java中的数组定义int[] a = {1, 2, 3}; 在Groovy写成int[] a = [1, 2, 3]

4. Java中的for循环for (int i = 0; i < len; i++) {...} 在Groovy中还可以写成for (i in 0..len-1) {...} 或者 for (i in 0..<len) {...}

5. Java中的方法返回写为return; 或者return obj; 在Groovy的方法中return是可选的

6.Java中的inner class即内部类,在Groovy中用Closure实现(Closure是Java7正在考虑的一个特性,比inner class在语义方面更完善)

7.Groovy中的注释比Java多了首行注释#!,其他与Java相同比如单行注释://    多行注释:/*  */   或者是  支持javadoc的/**   */

8.Java5中的for-each:for (Type t : iteratable) {...}  在Groovy中,for (t in iteratable) {...}

9.Groovy中switch语句与Java中相同,不过支持更多类型了,比如String

10.Groovy的while语句跟Java相同,但废弃了do-while (考虑到语义方面的问题,而且do-while可以用其他形式的循环语句代替,使用频率低)

11.Java中的String常量表示为"Hello, 山风小子",在Groovy中可如下表示“Hello, 山风小子”,‘Hello, 山风小子’,“”“Hello, 山风小子”“”(多行),‘’‘Hello, 山风小子’‘’(多行),def name="山风小子"    "Hello, ${name}" or  "Hello, $name"

12.在Groovy中定义类,定义方法与Java中定义类相同,唯一区别在于Groovy中类,属性默认是private但会自动生成get/set方法供外部使用,方法默认是public的,而在Java中默认是package的,另外,在Groovy中可以用def来定义方法,请看注释。

13.对象创建在Java写为Thought t = new Thought(); 在Groovy也可以这样写,不过还多了种写法:def t = new Thought()

14.静态方法调用在Java和Groovy中相同,即ClassName.staticMethodName();

15.实现接口和继承父类方面Groovy也与Java完全相同,即实现接口class ClassName implements InterfaceName {...}
      继承父类:class ClassName extends SuperClass {...}

16.定义接口方面Groovy与Java完全相同,即interface InterfaceName {...}  //在Groovy中默认为public的

17.正则表达式常量在Java中没有,在Groovy中表示为 /pattern/ 

18.Hash常量(类型为java.util.HashMap)在Java没有,在Groovy中表示为 def frequence = ["the": 5, "hello": 2, "world": 2]

19.类变量即static变量,Groovy与Java相同,static String name = "山风小子",在Groovy也可写为static name = "山风小子"

20.在varargs方法方面,Groovy比Java多一种表达方式,java/groovy:varargsMethod(Type... args),groovy:varargsMethod(Type[] args)

21.引用当前对象,Groovy和Java相同,在Java中用this表示,在Groovy中也用this表示,而且在Groovy中,this可以出现在static范围中,指向所在类的类对象,本例中,this等同于ThisInStaticScope.class(Java写法)或ThisInStaticScope(Groovy写法)

22.子类中调用父类方法,Groovy和Java也相同,在Java中 super.methodName() ,在Groovy中 super.methodName()

23.命名空间的定义,Groovy和Java相同,在Java中 package edu.ecust.bluesun;   在Groovy中 package edu.ecust.bluesun     (分号可省略)

24.在导入类方面,Groovy和Java相同,在Java中 import edu.ecust.bluesun.GroovyTest;  在Groovy中 import edu.ecust.bluesun.GroovyTest

25.List常量(类型为java.util.ArrayList)在Java中没有, 在Groovy中表示为 def list = [3, 11, "Hello", "山风小子", "!"]

26.在异常处理方面,Groovy与Java相同,除了不强制程序员捕获检查异常(checked exception)外 (这跟C#很像,如果我没记错的话 :)
        并且在方法声明时,也可以不写throws语句。

27.方法的默认参数,Java中没有,Groovy中表示如下:def greet(name="andy"){...}

28.在Groovy中,语句如果单独占一行的话,句尾的分号(;)可以省略,而在Java中每条语句后面必须跟有分号(;)

29.在Groovy中,如果不是Boolean或boolean类型,非null或非空(空字符串,[],[:])为true,null为false,而Java中对象不可以表示true或false;如果是Boolean或boolean类型,与Java中的一样。

30.在Groovy中,万事万物都是对象!而Java中不是这样,基本类型(primitive type)就不是对象。

31.在Java中,Class对象表示为ClassName.class,而在Groovy中,可以直接用ClassName表示Class对象

32.Groovy会自动导入java.lang.*, java.util.*, java.NET.*, java.io.*, java.math.BigInteger, java.math.BigDecimal,   groovy.lang.*, groovy.util.*,而Java则只自动导入java.lang.*

33.Groovy不仅有? :三元操作符,还有?:两元操作符,但Java只有? :三元操作符。def result ?: "default result",如果result不为空则是result,否则值为default result

34.Groovy能进行多重赋值,但Java不能。def a,b   (a,b) = [a,b]    println([a,b])

35.closure的owner引用的是该closure的‘拥有者’,隐式变量delegate的默认值为owner,如果closure没有‘嵌套’在其他closure中,那么该closure的owner的值为this;否则该closure的owner引用的是‘直接包含’该closure的closure

36.集合主要遍历方法,each{...}逐个遍历,collect{...}遍历集合处理后的结果返回给对应的项,find{...}根据条件返回找到的第一个项,findAll{...}根据条件返回找到的所有项,min/max{...}返回集合中最小最大的项,join{'-'}用'-'连接集合中所有的项,any/every等等

37.Mixins,builder系列:MarkupBuilder,SwingBuilder等 ......

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 户口身份证被注销了网贷怎么办 首付交了贷款办不下来怎么办 付首付后贷款没有批下来怎么办 交了首付贷款没有办下来怎么办 买房交了首付贷款没批下来怎么办 交完首付办不下来贷款怎么办 房子交了首付贷款办不下来怎么办 浦发银行办理房贷流水不够怎么办 房贷审批过程中突然换工作怎么办 建行快贷结清后无额度怎么办 建设银行快贷逾期2个月怎么办 全职速卖通一个月没订单要怎么办 买家点的好评写的差评怎么办 手机流量把话费扣没了怎么办 街电忘记还怎么办3天了 街电1个星期没还怎么办 苹果手机设置密码忘记问题了怎么办 买房付了首付后无法办按揭怎么办 苹果x导入通讯录不显示名字怎么办 苹果切换了id通讯录没有了怎么办 换了id通讯录记录没有了怎么办 4s升级系统通讯录没了怎么办 手机接听声音小怎么办但插耳机正常 苹果6p手机听筒声音小怎么办 苹果6s接电话对方声音小怎么办 iphone死机了怎么办关机也关不了 苹果7p卡死sos了怎么办 苹果x死机且屏幕失灵怎怎么办 幸果手机开机数字便按不动了怎么办 苹果6s黑屏但没关机怎么办 苹果6p突然黑屏怎么办单冷接电话 华硕86u的5g掉线找不到怎么办 信而富额度被清0怎么办 贷款回访电话回答错两个问题怎么办 天天中彩票获取期号失败怎么办 借贷宝电话打到家里了怎么办 私人借款付了利息不下款怎么办 别人借钱不还打电话不接怎么办 有信电话给别人打电话不接怎么办 别人欠我材料钱不接电话怎么办 别人欠我两千块钱不接电话怎么办