- 前情回顾
如果学过Java的小伙伴,那么对于上手Groovy这门课程就会变的so easy,在我们学习一门新的语言的时候,首先要学习的就是编写Hello World。
下面我们创建一个hello.groovy的文件 看下Groovy的Hello world的写法。
Class HelloWorld{
public static void main(String[] args){
System.out.println("Hello groovy!);
}
}
这就是Groovy的代码,可能你会说这不就是Java语言吗?没错,这就是Java语言,所以Groovy代码可以完全使用Java语言来编写。
另外,由于Groovy代码具有敏捷性的特点,所有上面的代码可以改写为
Class HelloWorld{
static void main(String[] args){
System.out.println("Hello groovy!)
}
}
在Java中需要创建Class类,还需要一个main方法才能执行,通过下面代码看下Groovy的强大之处
println ("Hello groovy")
同样,上面三种写法都会输出Hello groovy的结果
Hello groovy
-
前期准备
- 开发环境的搭建
- 创建一个Groovy的工程
-
开始学习
- 基础语法
1.1 变量的类型
类型和Java中的类型一样,也分为基本类型(byte、char、short、int、long、double)和对象类型。唯一不同的点就是Groovy中的类型都会是对象类型。
比如int的类型是Integer,double的类型是Double,也就是Java中的装箱类
int x=10
println(x.class)
double y=3.14
println(y.class)
最后发现得到的结果是
java.lang.Integer
java.lang.Double
由此可见,基本数据类型的最终结果的确会变成对象类型。
所以可以总结为:Groovy中的所有事物皆为对象
1.2 变量定义
强定义
强定义就是类似于int x,double y这种的变量定义
弱定义
若定义变量的声明可以使用关键字def,如
def x=10
println(x.class)
def y=3.14
println(y.class)
打印的结果
java.lang.Integer
java.lang.Double
Q:什么时候该使用def呢?
A:如果说是自己使用的时候,不需要供外部引用的时候我们就可以使用def,如果说外部需要调用改属性的时候,则需要采用java的强引用类型。
总结:关键字def声明的变量相当于是Object类型的,会根据赋值的结果来自动转换为对应的类型
1.3 字符串
在Java中我们使用字符串常用的类是String,在Groovy中我们除了可以用String类外,还可以使用它自身的GString类
关于String类不在过多叙述,下面重点说说GSting这个类。常见的定义方式
//单引号
def name='a single name'
def name='a single \'a\' name'
//三引号可以输出有格式的字符串
def mutilName='''
line one
line two
line three
'''
//双引号 可扩展字符串
def doubleName="this a common String"
def sayHello =“Hello: ${doubleName}”
println(sayhello.class)
def sum="The sum of 2 and 3 equalus ${2+3}"
扩展表达式使用${}的方式表达式
不管是几个引号,他们的类属于java.lang.String.但是如果是包含了扩展表达式的定义后,则变成了GString类型
**Q:**能否将String个Gstring进行转换?
**A:**请看如下代码
def sum1="The sum of 2 and 3 equalus ${2+3}"
def result=echo(sum1)
String echo(String msg){
return msg
}
通过代码发现,GString和String是完全可以进行转换的
在Groovy中通过调用变量的方法发现比Java中的String类中的方法多了很多,方法来源如下:
由于StringGroovyMethods大部分方法重写了DefaultGroovyMethods中的方法,所以我们了解StringGroovyMethods中的方法就好了。API:
字符传填充
static String center(CharSequence self, Number numberOfChars, CharSequence padding)
numberOfChars:字符传填充的位置
padding:填充的内容
注:如果padding不赋值的情况下默认添加空格
def str="groovy"
println str.center(8,'a')
println str.center(8)
static String padLeft(String self, Number numberOfChars, CharSequence padding)
static String padRight(String self, Number numberOfChars, CharSequence padding)
def str="groovy"
println str.padLeft(8,'a')
println str.padRight(8,'a')
字符传比较
compareTo(Stirng anotherStr)
compareToIgnoreCase(String str)
也可以使用操作符进行比较
def str1="groovy"
def str2="Hello"
println str1>str2
字符串索引
static String getAt(GString text, int index)
def indexStr="groovy"
println indexStr.getAt(0)
println indexStr[0] //可是通过中括号获取下标值
println indexStr[0..1]//输出结果为gr
//删除另一个字符串中包含的内容
def str1="groovy Hello"
def str2="Hello"
static String minus(String self, Object target)
等价于str1-str2
字符串其他方法
//字符串倒序
static String reverse(CharSequence self)
//字符串首字母大写
public static String capitalize(CharSequence self)
//是否为数字
public static boolean isNumber(CharSequence self)
//转换为基本类型
public static Integer toInteger(CharSequence self)
public static Double toDouble(CharSequence self)
到此就算是Groovy的入门篇的开始。