Groovy窥探-入门语法1

519 阅读4分钟
  • 前情回顾

如果学过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
  • 前期准备

    1. 开发环境的搭建
    2. 创建一个Groovy的工程
  • 开始学习

  1. 基础语法
    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的入门篇的开始。