groovy基础了解

Groovy是基于JVM的动态编程语言,兼容Java语法且提供了大量简化特性,兼具脚本语言的灵活性和Java 的生态优势

1.语法简化(对比 Java)
  Groovy 最大的特点是少样板代码,核心简化点:
    分号可选:语句末尾的分号可省略(多行一句时仍需)。
    括号可选:方法调用时,若参数明确,括号可省(构造器、运算符重载除外)。
    return 可选:方法最后一行表达式的结果自动返回,无需 return。
    类型可选:支持动态类型(用 def 声明),也可显式指定类型。
  // Java 写法
  public String sayHello(String name) {
    return "Hello, " + name;
  }
  // Groovy 简化写法
  def sayHello(name) { "Hello, $name" } // 自动返回、类型省略、字符串插值

  // 调用(括号可选)
  println sayHello("Groovy") // 输出:Hello, Groovy

2.变量声明
  动态类型:def 声明,类型由赋值决定,运行时可变。
  静态类型:支持 Java 所有基本类型 / 引用类型,编译时类型检查。
  常量:final 修饰(同 Java),或 @groovy.transform.Immutable 注解类。
  def a = 10 // 动态类型,初始为 int
  a = "Groovy" // 可改为 String
  int b = 20 // 静态类型,不可改类型
  final String c = "固定值" // 常量,不可重新赋值

3.字符串
  Groovy 支持 3 种字符串类型,核心是插值特性:
  类型               语法                      插值                         转义           适用场景
  单引号字符串   'hello'                   ❌                            ✅            纯静态字符串
  双引号字符串   "hello"                  ✅                            ✅            简单插值(变量 / 表达式)
  三引号字符串   '''多行'''/"""多行""" 单引号❌,双引号✅   原生换行    多行文本、模板

  def s1 = 'Hello $name' // 输出:Hello $name(无插值)
  def s2 = "Hello $name" // 输出:Hello Groovy(变量插值)
  def s3 = "1+1=${1+1}" // 输出:1+1=2(表达式插值)
  def s4 = """
  多行文本
  姓名:$name
  计算:${Math.random()}
  """ // 多行插值

4.与 Java 的兼容与差异
  完全兼容:可直接调用Java 类/方法,Groovy 类可被 Java 调用。
  关键差异:
  Groovy 是动态类型(默认),Java 是静态类型。
  Groovy 允许方法 / 属性的动态调用(运行时解析),Java 编译时解析。
  Groovy 的 == 等价于 Java 的 equals(),=== 才是引用相等。
  Groovy 支持运算符重载、闭包,Java 需通过接口 / Lambda 模拟。
  总结:Groovy 的核心优势是简化 Java 样板代码+动态特性+强大的集合 / 闭包支持,适合写脚本、测试(如 Spock 框架)、Gradle 构建脚本等场景。

 

posted on 2025-12-15 22:05  枫飘过的天1  阅读(0)  评论(0)    收藏  举报