第一段Groovy代码

// first groovy program
for(int i = 0; i < 3; i++) {System.out.println("ho ");
}System.out.println("Merry Groovy");

看起来好简单。

还有更简单的方式:

for (i in 0..2) { print 'ho '}

0.upto(2) { print "$it "}

upto默认接受一个闭包作为参数,如果闭包只需要一个参数,在Groovy中可以使用名字it来表示该参数。

如果范围从0开始,还可以使用times

3.times { print "$it " }

Groovy没有强迫使用一组新的类库,而是可以通过向JDK的各种类添加便捷方法,Groovy扩展了强大的JDK。

比如调用系统命令

println "groovy.bat -v".execute().text

这里的bat不能省略,奶奶的。

或者可以这样

println "groovy.bat -v".execute().text
println "cmd /C groovy -v".execute().text

def foo(str) {// if (str != null) { str.reverse(); }print str?.reverse()
}foo('evil')
print '\n'
foo(null)

Java强制我们处理所有的受检查异常(Checked Exception)。

对于那些我们不想处理,或者不适合在代码的当前层次处理的异常,Groovy并不强制我们处理。

我们不处理的任何异常都会被自动传递到更高一层去。

// 定义打开文件
def openFile(fileName) {new FileInputStream(fileName)
}try {openFile("nonexistentFile")
} catch (FileNotFoundException ex) {println "Oops: " + ex
}

注意,这里不能捕获Exception之外的Error或Throwable。要捕获这些请用catch(Throwable throwable)

class Car {def miles = 0final yearCar(theYear) {year = theYear}
}Car car = new Car(2008)println "Year: $car.year"
println "Miles: $car.miles"
car.miles = 25
println "Miles: $car.miles"

看起来好简单的样子啊。

JVM不愧是宇宙第一虚拟机。

如果属性给了final,那么只会提供访问器,而不会提供更改器。

修改final字段的任何尝试都会导致异常。

请谨慎使用class属性,像Map、生成器等一些类对该属性有特殊的处理。因此为了避免意外,一般使用getClass,而不是class。

Groovy学习()面向Java开发者的Groovy相关推荐

  1. 面向Java开发者的ChatGPT提示词工程(5)

    GPT 的局限性 当我们探讨开发大型语言模型应用程序时,必须认识到 GPT 存在一些局限性.这些限制对于我们保持清醒的头脑至关重要. 在 GPT 的训练过程中,虽然注入了大量知识,但它并不能完美地记住 ...

  2. 面向Java开发者的ChatGPT提示词工程(4)

    在之前的文章中,我们了解到了编写明确具体的指令关键原则的四种策略,它们分别是: 使用分隔符清楚地指示输入的不同部分. 要求GTP结构化输出. 要求GTP检查是否满足条件. 写示例时提示词要尽量少一些. ...

  3. groovy java_在java中使用groovy怎么搞

    临摹微笑 一种基于Java虚拟机的动态语言,可以和java无缝集成,正是这个特性,很多时候把二者同时使用,把groovy作为java的有效补充.对于Java程序员来说,学习成本几乎为零.同时支持DSL ...

  4. Redis高频面试笔记:面向Java开发者的复习指南

    前言 Redis作为基于键值对的NoSQL数据库,具有高性能.丰富的数据结构.持久化.高可用.分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛认可和使用.因此,作为一个Java开发者,掌握 ...

  5. 面向java开发者的函数式编程_函数式编程让你忘记设计模式

    本文是一篇<Java 8实战>的阅读笔记,阅读大约需要5分钟. 有点标题党,但是这确实是我最近使用Lambda表达式的感受.设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让 ...

  6. Java高级面试题!这是一份面向Java开发者的复习指南

    流程描述 我们从bind函数开始: 1.首先创建了两个NioEventLoopGroup,这是初始化了两个线程组,这两个线程组根据命名可以知道一个是bossGroup,是服务器用来接收客户端的请求的, ...

  7. play2.0文档-面向java开发者(7)异步HTTP编程

    为什么80%的码农都做不了架构师?>>>    Handling asynchronous results 处理异步results Why asynchronous results? ...

  8. 面向Java开发者的ChatGPT提示词工程(2)

    在这篇博客文章中,我将分享一些关于提示词的关键原则,帮助你在使用语言模型时获得更好的结果.具体来说,我将介绍两个关键原则,帮助你编写有效的提示词.同时,我也鼓励你在阅读文章的过程中运行代码,亲自体验不 ...

  9. 一文了解十大 Java 开发者必备测试框架!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 想要提升自己的自动化测试技能吗?本文将介绍10个优秀的 Java 测试框架和库,来提升你的自 ...

最新文章

  1. 从 AlphaGo 到具有人类智慧的 AI 究竟有多远?François Chollet 有了一些新想法
  2. SQL Server 移动数据库
  3. securecrt7.0.0合并多个窗口
  4. IDA 7.5 Demo 包含 Windows、Linux、macOS
  5. java 动态字符串_Java动态编译执行一串字符串,类似于Javascript里的eval函数
  6. cshtml中引用css_css基础必备-使用样式,前端小白一看就会
  7. php 获取某个月的周一
  8. hadoop伪分布式配置
  9. 查看我的mysql_我的MYSQL学习心得(七) 查询
  10. Python中默认参数self的理解
  11. win11打开安全中心显示英文怎么办 windows11打开安全中心显示英文的解决方法
  12. 树莓派3B wiringPi 控制LED小灯
  13. 华为 项目管理10大模板 【Word版 (可直接套用)】
  14. AutoCAD2012从入门到精通中文视频教程 第20课 移动与旋转(个人收藏)
  15. Java中Base64的解析
  16. android 程序控制开关飞行模式,android开关飞行模式的方法
  17. 移动彩信大小限制307200字节?
  18. 毕业设计 - 基于机器视觉的12306验证码识别
  19. layui扩展组件(组合输入框inputTags)
  20. linux 电脑观看电视,使用Zattoo在您的Ubuntu桌面上观看直播电视

热门文章

  1. webpack打包转换es6_webpack(二)解析es6并打包
  2. python读取文件夹图片_读取文件夹里的图片,并且与标签对应
  3. cx oracle6 oracle10,python安装cx_Oracle
  4. laravel mysql 锁表_Laravel 数据库加密及数据库表前缀配置方法
  5. python name is not defined_PythonNameError: global name 'NAME' is not not defined这个问题怎么解决?...
  6. 1x pcie 速度_在主板规格上,x8在“1 x PCIe 3.0 x16(x8带宽)”中的含义是什么?...
  7. 5 select 选择的值_表单元素之选择类型
  8. mysql parametertype_MyBatis传入参数与parameterType
  9. java juel表达式_activiti 自定义函数解析juel表达式
  10. cs怎么加电脑人_怎么给电脑文件夹加密码?