一、Groovy编写类

Groovy可以跟Java一样,编写一个类,也可以直接在上面编写代码,如:

  1. public class HelloGroovy{
  2. public static void main(String[] args){
  3. def name="Hello"
  4. println(name)
  5. }
  6. }
  1. def x=1.23
  2. println x

二、Groovy声明变量

Groovy可以像java一样,先声明类型,也可以直接用像kotlin类似,用def来自动匹配值的类型

  1. int a=0
  2. def b=0

Groovy的字符串可以用单引号(‘’),双引号(“”),三引号(‘’’ ‘’’)来
单引号跟双引号一样,三引号代表保留里面的格式

  1. def Hello='''
  2. Hello1
  3. Hello2
  4. Hello3
  5. '''
  6. println(Hello)

image.png

三、基础类型与闭包

1、循环

  1. int x = fab(5)
  2. println x
  3. int x2 = fab2(5)
  4. println x2
  5. int fab(int number) {
  6. int result = 1
  7. //从1循环到指定数,
  8. 1.upto(number, { num -> result *= num })
  9. return result
  10. }
  11. int fab2(int number) {
  12. int result = 1
  13. number.downto(1) {
  14. result *= it
  15. }
  16. return result
  17. }

upto:从1循环到指定数
downto:从指定数循环到1

2、字符串与闭包

  1. String str="the 2 and 3 is 5"
  2. str.each {
  3. print it
  4. }
  5. println()
  6. //find来查找符合条件的第一个,输出2
  7. println str.find{
  8. it.isNumber()
  9. }
  10. //找到所有符合条件的字符
  11. def list = str.findAll{
  12. it.isNumber()
  13. }
  14. println list.toListString()
  15. //字符串中有符合条件的就返回true
  16. println str.any{
  17. it.isNumber()
  18. }
  19. //字符串所有符合条件才返回true
  20. println str.every{
  21. it.isNumber()
  22. }
  23. //对每个值进行处理
  24. def collectList= str.collect{
  25. it.toUpperCase()
  26. }
  27. println collectList.toListString()

image.png
each:遍历字符串
find:找出符合条件的第一个字符
findAll:找出所有符合条件的字符
any:字符串中有符合条件的就返回true
every:字符串所有符合条件才返回true
collect:对每个值进行处理

3、列表与闭包

  1. def sortList=[6,-3,9,2,-7,1,5]
  2. //sortList.sort()
  3. sortList.sort{ a,b->
  4. a==b?0:Math.abs(a)<Math.abs(b)?-1:1
  5. }
  6. println sortList
  7. def sortStringList=['abc','z','Hello','groovy','java']
  8. sortStringList.sort{
  9. return it.size()
  10. }
  11. println sortStringList
  12. def findList = [-3, 9, 6, 2, -7, 1, 5]
  13. println findList.min()
  14. println findList.max()
  15. println findList.count{
  16. return it%2==0
  17. }

sort:对列表进行排序(可自定义条件)
min:最小值
max:最大值
count:统计(条件)
contains:包含

4、影射(字典)

  1. def colors = [red: 'FF0000', green: '00ff00', blue: '0000ff']
  2. colors.yellow='FFFF33'
  3. println colors.blue
  4. colors.each {
  5. println(it.key +","+ it.value)
  6. }
  7. def group=colors.groupBy {
  8. return it.key=='red' ?"红色":"其他颜色"
  9. }
  10. println group.toMapString()

each:遍历
groupBy:分组成为新的map

5、范围

  1. def range=1..10
  2. println range.contains(10)
  3. println range.from
  4. println range.to
  5. range.each { print "$it " }
  6. def getGrade(Number number){
  7. def result=""
  8. switch (number){
  9. case 0..<60:
  10. result="不及格"
  11. break
  12. default:
  13. result="及格"
  14. break
  15. }
  16. }
  17. println getGrade(75)