直接来源于Java语法的特性
1.关键字于语法
2.类,接口,属性,方法的定义
3.使用new创建对象
4.包导入机制
5.try/catch/finally异常处理机制
6.运算符,表达式,复制
7.控制结构
8.代码注释
groovy自动导入如下包
groovy.lang.*
groovy.util.*
java.lang.*
jaav.util.*
java.util.regex.*
java.net.*
java.io.*
java.math.BigDecimal
java.math.BigInteger
数值
Groovy的一切都是对象。可以自动装箱与拆箱。
整数123,-12,0都是Integer类的对象
def price = 100 < == > Integer price = new Integer(100)
语句可以不用’;’结尾
浮点数1.5,-3.14都是BigDecimal类的对象
数值类型:
Integer
Long
Float
Double
java.math.BigDecimal
java.math.BigInteger
GDK数值方法
def store = ''
10.times{ store += 'X' } assert store == 'XXXXXXXXXX'
store = ''
1.upto(5){ number -> store += number } assert store == '12345'
store = ''
2.downto(-1){ number -> store += number + ' ' } assert store == '2 1 0 -1 -2'
store = ''
0.step(0.5,0.1){ number -> store += number + ' ' } assert store == '0 0.1 0.2 0.3 0.4 0.5'
表达式与运算符
基于方法的运算符(参考英文版Groovy in Action 第64页)
assert 4+3 == 7 //4.plus(3)
assert 4-3 == 1 //4.minus(3)
assert 4*3 == 12 //4.multiply(3)
assert 4%3 == 1 //4.mod(3)
assert 4**3 == 64 //4.power(3)
assert 4/3 == 1.3333333333 //4.div(3)
assert 4.intdiv(3) == 1 //整除
assert !(4 == 3) //!(4.equals(3))
assert 4 != 3 //!4.equals(3)
assert !(4 < 3) //4.compareTo(3) < 0
assert !(4 <= 3) //4.compareTo(3) <= 0
assert 4 > 3 //4.compareTo(3) > 0
assert 4 >= 3 //4.compareTo(3) >= 0
assert 4 <=> 3 == 1 //4.compareTo(3)
assert 4 <=> 8 == -1 //4.compareTo(8)
assert 4 <=> 4 == 0 //4.compareTo(4)
a == b 等价 a.equals(b)
Groovy 的 “==”就是Java的 “==”
Groovy 支持操作符重载,重载运算符对应的方法就是操作符重载
<< 操作符被重载,以支持向集合添加项
?:安全引用操作符(防止NullPointerException),在方法调用前面添加一个?就相当于在调用前面放了一个条件,可以防止在null对象上调用方法。 ?操作符时刻都非常有用,可以极大地减少条件语句。
字符串GString简介
def str = ‘hello\nlxt008’; prin str
//在同一行放多条语句‘;’不能少
def name = ‘lxt008’
print “\thello
name”可以在其中加入‘\t′‘\n′等转义符原格式输出:print”′aaabbb”′字符被六个引号包围可以连回车都输出三个双引号可以解释其中的GStringdefname=‘lxt008′print“”“”“”aaa\tbbb
{name}
“”“”“”
${name} 会解释为lxt008
GString简化了编写多行字符串和进行运行时替换功能
Groovy 方法一
1.可以直接使用Java的方法
2.变量作用域与Java方法类似
3.可以使用动态类型或者静态类型
4.可以省略return,默认返回最后语句的值
def welcome1(name){
println "Hello ${name"
}
welcome1('lxt008')
//输出:Hello lxt008
Groovy 方法二
def welcome2(name,welcomeStr='Welcome'){
println "${welcomeStr} ${name}"
}
welcome2('lxt007') //输出:Welcome lxt007
welcome2('lxt008','Good') //输出:Good lxt008
方法参数是传值调用
def printName(name){
println "Name (at entry): ${name}"
name = 'lxt001'
println "Name (after assignment): ${name}"
}
def tutor = 'lxt008'
printName(tutor) //Name (at entry): lxt008
//Name (at assignment): lxt001
println "Tutpor: ${tutor}" //输出:Tutor:lxt008
break 与 continue 与 Java一样
if 的条件除了是布尔值外,也可以是对象,如对象是空则条件为false,否则为true
**读取标准输入:
def name = new BufferedReader(new InputStreamReader(System.in)).readLine()
System.in.readLine()已经被废除,使用出错**