Groovy Tip 1 ==、equals及其他

我们说基于Groovy语言的Java项目开发是一个敏捷的开发,除了我们使用Grails作为Web开发平台,Groovy语言本身就提供了很多敏捷的地方。

我们知道,在Java语言中,判断两个字符串的值是否相等,我们使用equals方法,而“==”作为判断两个对象引用是否相同的符号。事实证明,我们使用equals方法多过使用“==”符号,特别是在字符串的使用中。

在实际编码的过程中,形如:

if(abc1.equals(abc2))
  {
    ……
  }

这样的if语言特别多,但是我们每一次都得拼写equals方法,而不是简单的使用“==”符号。虽然Eclipse等IDE能够帮我们把equals方法拼写完整,但使用equals方法毕竟耽误了我们的时间,远远没有使用“==”符号敏捷。

Groovy语言考虑到了我们的这个实际的需求,果断的使用“==”符号代替了equals方法,来提供Groovy语言编程的敏捷性。

def abc1 = 'abc'
  def abc2 = "abc"
println abc1 == abc2

打印的结果为true。

这样,我们就不必再if(abc1.equals(abc2))了,而可以直接使用:

if(abc1==abc2)
  {
    ……
  }

是不是方便了很多?

甚至判断Collection两个对象的内容是否相同也可以使用“==”符号,如:

def list1 = [1]
  def list2 = [1]
println list1 == list2

你可以把上面的语句运行看看,结果为true。

两个Map对象的内容是否相同也可以使用“==”符号判断,如:

def map1 = ['name':'tom']
  def map2 = ['name':'tom']
println map1 == map2

结果为true。但是你要运行下面的语句:

def map1 = ['name':'tom']
  def map3 = ['name':'alice']
println map1 == map3

时间: 2024-10-30 05:45:35

Groovy Tip 1 ==、equals及其他的相关文章

Groovy Tip 3:如何在if条件语句中判断对象为空

在Java语言编程中,对对象的非空判断是一个永恒的话题.例如,我们经常需要对一个字 符串进行如下的判断: if(str!=null&&!str.equals("")) { ...... } 输入这样的语句的确使人生厌,而且有时候还会忘掉输入"!str.equals ("")"语句中的"!"导致代码出现逻辑错误. 而敏捷的Groovy语言开发就不需要我们担心这样的问题.同样的判断语句,我们只需要输 入下面的代码:

Groovy Tip 30 BigDecimal数据类型

Groovy语言比Java语言使用起来更为方便的一个地方就是Groovy语言引入了对大小数的运算.当然,我们这里所说的大小数,是指精度超过float类型和double类型的小数.我们可能在某些场合会涉及到对大小数的处理,如果是使用Java语言,我们只能是或者使用java.math.BigDecimal来处理,当然,它的使用是很不方便的:或者干脆自己设计数据类型来解决大小数的问题.但是,在Groovy语言中,我们却能够直接使用BigDecimal数据类型来解决这个问题. 在Groovy语言中,小数

Groovy Tip 5:数组

一.数组的定义及赋初值 在Groovy语言中,数组的定义和Java语言中一样. def a = new String[4] def nums = newint[10] def objs = new Object[3] 然后赋值也一样: a[0] = 'a' a[1] = 'b' a[2] = 'c' a[3] = 'd' 所不同的在于在数组定义的时候赋初值. 在Java语言里,对一个字符串数组这样定义: String[] strs = new String[]{'a','b','c','d'};

Groovy Tip 4:对象非空判断及“?”运算符

对于一个Domain类对象,如下面的例子: class Empl { String name } 我们需要对它进行操作,比如打印"name"属性的值,我们首先要对它进行非 空判断,如下: def em if(em) { println"name: $em.name" } em = new Empl() em.name = 'Tom' if(em) { println"name: $em.name" } 很显然,如果不做非空判断,那么在第一个pri

Groovy Tip 2:each方法和break

在Groovy这样的动态语言中,闭包是其中的一个重要武器.而这些语言的开发者自然不会 放弃使用这些武器,我们可以看到在Groovy语言的集合类中,广泛的使用了闭包.其中, each方法就是这样一个使用闭包的方法. 我们知道,在Java中,我们使用下面的语句对集合类对象进行遍历: for(int i=0;i<list.size();i++) { System.out.println(list.get(i)) } 而在Groovy语言中,我们使用each方法对集合类对象进行遍历: list.each

Groovy Tip 37 字符串和数字之间的转化

字符串和数字之间的转化是我们在项目中必然要碰到的问题,因为我们从用户界面取得的变量的值肯 定是字符串. 所以,我们在项目中经常要做的事情就是:第一,需要对用户的输入进行校验,以判断用户的输入是 否是一个数字:第二,如果是的话,我们则需要进一步把它转化为数字,以方便我们进行计算. 在Java语言中,我们要判断一个字符串是否是数字,基本上有两种方法,第一是直接进行转化,如果 有Exception抛出,则该字符串非我们所需要的数字.如下面就是一段判定一个字符串是否为整型数字的 代码: public s

Groovy Tip 36 “in”关键字

谈到"in"关键字,在Java语言里很少用到,因为它引入得比较晚,也就是JDK5的增强 for循环.Groovy语言也把这个功能保留了下来,这样,我们可以写一些类似于下面的代码: def list = [1,2,3] for(i in list) { println i } 运行结果为: 1 2 3 这个增强的for循环也可以用在对Map的循环上,如: def map = [a:"1",b:"2"] for(i in map) { println

Groovy Tip 33 方法的参数 二

Map参数是我们在Groovy语言的编码中比较常用的一种参数类型,我们常常会很自然的写出来如下的 代码: t.testMap(a:1) t.testMap(a:1,b:1) t.testMap(a:1,b:1,c:1) new Person(name:'Tom',sex:23) 这些都是Map参数的使用.以此类推,我们也常常希望List参数也有同样的功能,比如,我们有如下 的一个以List对象为参数的方法: class Testor2 { def testList(List list) { pr

Groovy Tip 32 方法的参数 一

Groovy语言在方法的输入参数方面做了很多有益的工作,这些工作有些能提高代码的阅读性,有些能 提供编码的方便和敏捷.在前面的文字中,我们已经陆续的介绍过一些,如<Groovy探索之Map与DSL> .在这个系列中,我们再把一些前面没有提及的一一介绍过来. 首先,是关于调用方法时的括号的使用. 在Groovy语言的编码中,我们可能已经很熟练的使用下面的语句: println 'hello,world' 我们都知道,上面的语句相当于下面的语句: println('hello,world') 这就