简介

Groovy 是 Apache 旗下的一门基于 JVM 平台的动态/敏捷编程语言,在语言的设计上它吸纳了 Python、Ruby 和 Smalltalk 语言的优秀特性, 语法非常简练和优美,开发效率也非常高,Groovy 可以与 Java 语言无缝对接,在写 Groovy 的时候如果忘记了语法可以直接按Java的语法继续写。

Groovy是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。

Groovy 1.0于2007年1月2日发布,其中Groovy 2.4是当前的主要版本。 Groovy通过Apache License v 2.0发布。

基本特点

同时支持静态和动态类型。

支持运算符重载。

本地语法列表和关联数组。

对正则表达式的本地支持。

各种标记语言,如XML和HTML原生支持。

Groovy对于Java开发人员来说很简单,因为Java和Groovy的语法非常相似。

您可以使用现有的Java库。

Groovy扩展了java.lang.Object。

动态类型

类型对于变量,属性,方法,闭包的参数以及方法的返回类型都是可有可无的,都是在给变量赋值的时候才决定它的类型, 不同的类型会在后面用到,任何类型都可以被使用,即使是基本类型 (通过自动包装(autoboxing)). 当需要时,很多类型之间的转换都会自动发生,比如在这些类型之间的转换: 字符串(String),基本类型(如int) 和类型的包装类 (如Integer)之间,可以把不同的基本类型添加到同一数组(collections)中。

闭包

闭包就是可以使用参数的代码片段,每个闭包会被编译成继承groovy.lang.Closure类的类,这个类有一个叫call方法,通过该方法可以传递参数并调用这个闭包.它们可以访问并修改在闭包创建的范围内的变量,在闭包内创建的变量在闭包被调用的范围内同样可以被引用, 闭包可以保存在变量中并被作为参数传递到方法中。

语法

Groovy 语法与Java 语言的语法很相似,虽然 Groovy 的语法源于Smalltalk和Ruby这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby与 Groovy 不同,因为它的语法与 Java 语法差异很大。)

许多 Java 开发人员喜欢 Groovy 代码和 Java 代码的相似性。从学习的角度看,如果知道如何编写 Java 代码,那就已经了解 Groovy 了。Groovy 和 Java 语言的主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。

Groovy类和java类一样,完全可以用标准java bean的语法定义一个Groovy类。但作为另一种语言,可以使用更Groovy的方式定义类,这样的好处是,可以少写一半以上的javabean代码。

(1)不需public修饰符

如前面所言,Groovy的默认访问修饰符就是public,如果Groovy类成员需要public修饰,则根本不用写它。

(2)不需要类型说明

同样前面也说过,Groovy也不关心变量和方法参数的具体类型。

(3)不需要getter/setter方法

在很多ide(如eclipse)早就可以为程序员自动产生getter/setter方法了,在Groovy中,不需要getter/setter方法--所有类成员(如果是默认的public)根本不用通过getter/setter方法引用它们(当然,如果一定要通过getter/setter方法访问成员属性,Groovy也提供了它们)。

(4)不需要构造函数

不再需要程序员声明任何构造函数,因为实际上只需要两个构造函数(1个不带参数的默认构造函数,1个只带一个map参数的构造函数--由于是map类型,通过这个参数可以构造对象时任意初始化它的成员变量)。

(5)不需要return

Groovy中,方法不需要return来返回值。

(6)不需要()

Groovy中方法调用可以省略()(构造函数除外)。

适用人群

本教程对于想要学习Groovy编程基础知识的所有软件专业人员非常有用。

学习前提

在继续本教程之前,您应该有一些Java或任何其他面向对象编程语言的实践经验。

python编程语言在线编译手机_groovy在线运行,groovy在线编译,支持手机在线编程写代码 - Groovy教程...相关推荐

  1. python编程语言在线编译手机_VB.net在线运行,VB.net在线编译,支持手机在线编程写代码 - VB.NET教程...

    简介 VB.Net是由微软开发的一种简单,现代,面向对象的计算机编程语言, 将.NET Framework 和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合. 它是由经典 ...

  2. docker保护python源码_Tensorflow在Docker中运行和源码编译

    本文分享在在Docker中运行Tensorflow和进行源码编译的方法和步骤,包括:编译.构建docker镜像.创建和运行Docker容器.部署完的容器可以通过Jupyter Notebook进行访问 ...

  3. 手机java应用运行卡顿_解决手机运行慢,困顿的小妙招

    你的手机卡顿严重么?相信95%的小伙伴们都经历过系统卡顿.死机的情况,同时对大部分人来说,换手机主要原因就是旧手机的卡顿严重,你是否有思考过面对卡顿该如何解决呢?下面,跟着小编来看看吧! 一.造成手机 ...

  4. 华为鸿蒙系统支持什么手机_华为鸿蒙os2.0系统支持手机 华为鸿蒙os2.0系统支持哪些型号升级...

    华为鸿蒙os2.0系统支持手机,华为鸿蒙os2.0的beta版近日已经如期上市,很多用户都想率先尝试一下,那么华为鸿蒙os2.0系统支持哪些手机升级呢? 华为鸿蒙os2.0系统支持手机 华为鸿蒙OS2 ...

  5. 支持鸿蒙的手机型号多少钱,华为鸿蒙系统支持手机型号一览

    随着华为鸿蒙系统即将推出,大家也愈发的关注.据悉华为鸿蒙系统是支持第三方手机厂商使用的,因此不少用户也考虑届时尝试用看看.那么,鸿蒙系统支持哪些手机呢?像国产手机小米.OPPO等能不能使用?下面一起来 ...

  6. html5手机电商网页设计代码_一部手机,万物皆可复制粘贴,这位兼职写代码的设计师将AR玩出了新高度...

    看到什么就复制什么,这是魔法还是孙悟空的神通?都不是.这是 AR 的魔力. 机器之心报道,参与:蛋酱.魔王.杜伟. 如何将一件物品的图像导入 Photoshop?首先你要拍摄照片,然后将这张照片通过网 ...

  7. python怎么换行输入而不执行_关于在IDLE中怎么换行继续敲写代码而不执行语句...

    查看: 44535|回复: 29 [已解决]关于在IDLE中怎么换行继续敲写代码而不执行语句 电梯直达 发表于 2016-9-30 10:05:49 | 只看该作者 |倒序浏览 |阅读模式 马上注册, ...

  8. python虚拟机直接加载字节码运行程序_第二章 python如何运行程序

    一.python解释器介绍 Python解释器是一种让程序运行起来的程序.实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层. 当Python包安装在机器上后,它包含了一些最小化的组件:一个解释器 ...

  9. python编程语言_python编程语言的简要历史

    python编程语言 The Python programming language is a general-purpose programming language that has carved ...

  10. 微信支持手机温度监控;苹果、谷歌和微软扩大对无密码登录的支持;可在浏览器中运行Python应用的框架发布 | EA周报...

    EA周报 2022年5月7日 每个星期7分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 周报看点 1.硬核新功能!微信支持手机温度监控 2.IP代理畸形产业爆火 最低6元可更改 ...

最新文章

  1. Apache Kylin Cube 的构建过程
  2. C 实现基于角色的权限系统
  3. 六步创建TCP服务端
  4. 信息学奥赛C++语言: 计算两个数的最大公约数
  5. 一文快速掌握IPv6基础知识及使用指南
  6. 基于visual Studio2013解决C语言竞赛题之0203格式化输出
  7. python3----练习题(图片转字符画)
  8. linux电路图软件有哪些,新手福利,推荐一款好用的电路图绘制软件!
  9. Windows下 Java9安装教程
  10. Jetson nano 2G跑通Nvidia官方案例Jetson Inference
  11. 计算机win7启动不起来,详解电脑启动不了怎么办
  12. 和老外聊天、发邮件常用英语缩写。
  13. 文盲的Python入门日记:第二十八天,封装一个自定义爬虫类,用来执行日常的采集(二)
  14. 基于SpringBoot+Bootstrap【爱码个人博客系统】附源码
  15. SISD、MIMD、SIMD、MISD计算机的体系结构的Flynn分类法
  16. 内存不能为read大全
  17. 【Paper】DTWSequence Analysis
  18. 浅析缓冲区溢出漏洞的利用与Shellcode编写
  19. Linux运行SQL文件
  20. r720服务器系统安装u盘,服务器r720设置u盘启动

热门文章

  1. vue项目接入高拍仪
  2. BootLoad中上位机与下位机交互
  3. java做抽奖小程序_随机抽奖小程序
  4. 影视剪辑,Pr视频剪辑软件,波纹滚动编辑及比例拉伸
  5. AD15如何在PCB界面锁定选中元件
  6. Win2008系统下装CTBS之前的系统组件安装向导第一篇
  7. 小米笔记本Pro14 黑苹果失败<经验>
  8. Icode编程>>>图形化编程>>>1级训练场>>>重复执行练习【1】
  9. java 值班管理_​运维告警的值班管理
  10. 360,手机助手的功能,既然有如此二面性?