加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy基本语法(1)

发布时间:2020-12-14 16:55:22 所属栏目:大数据 来源:网络整理
导读:2、Starting?Groovy? ? ? ? 相比于一个传统的Java类,一个包含main方法的Groovy类可以如下书写: 代码1:具有main函数的Groovy类 package plswg.edu.groovy.basic// 利用class关键字创建一个groovy类class G01_HelloWorldClass {// 静态的main方法作为程序入

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次方;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读