Groovy基本语法(1)

2、Starting Groovy 

      相比于一个传统的Java类,一个包含main方法的Groovy类可以如下书写:

代码1:具有main函数的Groovy类

package plswg.edu.groovy.basic


// 利用class关键字创建一个groovy类
class G01_HelloWorldClass {

	// 静态的main方法作为程序入口
	static main(args) {
		
		// 使用println命令输出
		println "HelloWorld in class"
	}

}

       和Java一样,程序会从这个类的main方法开始执行,和Java的区别是:

  • class前省略public修饰;
  • main方法前省略public修饰;
  • main方法省略返回值类型void;
  • main方法形参列表省略类型String[];
      当然,这只是Groovy代码的一种写法,实际上执行Groovy代码完全可以不必需要一个类或main方法,所以更简单的写法如下:

package plswg.edu.groovy.basic


// 对于groovy程序来说,可以没有类和main方法,直接书写的代码就可以作为脚本运行
println "HelloWorld in script"

      这段代码仍可以直接运行。

      实际上,最终编译器仍会为这段代码生成一个类,类名和文件名相同,只不过从源码的角度上,确实不用写类或者main方法了,这一点很像Javascript等其它脚本语言。

      可以注意到,Groovy将Java中繁琐的System.out.println简化为了println,甚至可以不为形参列表加括号,这都是允许的,Groovy非常简洁,甚至不要求语句末尾的分号(当然,写上分号也无伤大雅)

3、Groovy变量

      既然是脚本语言,Groovy的变量也被设计成为了类似的弱类型,实际上Groovy同时支持强类型变量和“弱”类型变量,强类型变量拥有自己的类型,而“弱”类型变量则全部会被编译为Object类型,从代码的角度上,Groovy的变量无需声明类型了:

package plswg.edu.groovy.basic

// groovy可以使用类型确定的变量或常量

String s1 = "Hello "
print s1

final String s2 = "World"
println s2

// 利用def关键字可以定义可变类型的变量或常量

def s3 = "Welcome "
print s3

// 对于可变类型,即随时可以改变其类型,赋予不同的量

s3 = 123		// 此时str3被赋予了整型量,所以其类型变为Integer类型
println s3

s3 += 100		// 整型的str3和整型相加,结果是整型223
println s3

s3 = true		// str3目前是boolean类型
println ("Ok " + s3)


// 对于局部变量,甚至可以不使用def关键字来定义
s4 = "Good job"
println s4


// 对于数值类型,有如下规则

int n1 = 10
n2 = n1 / 3
println n2		// 对于n1为整数时, 10 / 3的结果并不是整数,这说明常量n2并不是整数

int n3 = n1 / 3		// 明确定义n3为整数后,相除的结果为整数
println n3

n2 = n1.intdiv(3)
println n2		// intdiv用于进行整除

n2 = n1.power(2)	// 求平方	groovy方法
println n2

n2 = n1 ** 2		// 求平方的groovy语法
println n2

n1 = Math.sqrt(n2)	// 求开方	java方法
println n1
      从上面的代码可以看到,Groovy支持有类型的变量,例如 String s;也支持无类型的变量,例如 def s,相当于Java中的Object s;对于无类型的变量,甚至可以不写 def关键字。

      final关键字依然作为常量标识,这一点和Java相同。

      最后注意一点,Groovy中没有Java中的值类型简单对象,所有的对象都是引用类型对象,例如定义def n = 10,n的类型应该是Integer类型而不是int类型;即便定义了int n = 100,n的类型依然是Integer类型;如果定义了def n = 12.34,则注意,n的类型是BigDecimal类型而不是Double类型,只有显式定义double n = 12.34,n的类型才明确为Double类型(依旧不是double类型)

      对于基本算术运算符,Groovy增加了**运算符,表示求幂,x ** y表示求x的y次方;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值