Groovy 基础语法

变量定义

1、支持动态类型,使用def关键字定义变量

// Java中定义变量的方式
int age = 18;
String name = "张三"; // Groovy中使用def关键字定义变量,编译器自动推断出变量的实际类型
def age = 22
def name = "James"

2、语句结尾不用写 ; 号

def age = 22
def name = "James"

3、使用基本类型定义的变量,全部装箱为对应的包装类

Groovy中定义变量使用 def 关键字,但是Groovy是基于Java扩展的,因此也可以使用Java里面的类型,如Java中8大基本数据类型:byte、short、int、long、float、double、char、boolean

// 定义8大基本数据类型
byte mByte = 1
short mShort = 2
int mInt = 3
long mLong = 4
float mFloat = 5
double mDouble = 6
boolean mBoolean = true
char mChar = '男' // 对类型进行打印
println mByte.class
println mShort.class
println mInt.class
println mLong.class
println mFloat.class
println mDouble.class
println mBoolean.class
println mChar.class // 打印结果如下
class java.lang.Byte
class java.lang.Short
class java.lang.Integer
class java.lang.Long
class java.lang.Float
class java.lang.Double
class java.lang.Boolean
class java.lang.Character

字符串

Groovy中有三种常用的字符串定义方式,如下所示:

可扩展字符串的含义就是在字符串里面可以引用变量或表达式

1、单引号 '' 定义的字符串为不可扩展字符串

2、双引号 "" 定义的字符串为可扩展字符串,可扩展字符串中可以使用\({}引用变量值或表达式
3、三引号 `"""` 定义的字符串为输出带格式的字符串,也可使用\){}引用变量

def age = 18
def name = 'James'
// 定义一个不可扩展字符串,跟Java类似
def str1 = 'hello ' + name
// 定义一个可扩展字符串
def str2 = "Hello ${name} ${name + age}"
// 定义一个输出带格式的可扩展字符串,使用 \ 来分行
def str3 = """
\
${str2}
Hello
name
""" // 打印类型和值
println 'str1类型:' + str1.class
println 'str1输出值:' + str1
println 'str2类型:' + str2.class
println 'str2输出值:' + str2
println 'str3类型:' + str3.class
println 'str3输出值:' + str3 // 打印结果
str1类型:class java.lang.String
str1输出值:hello James
str2类型:class org.codehaus.groovy.runtime.GStringImpl
str2输出值:Hello James James18
str3类型:class org.codehaus.groovy.runtime.GStringImpl
str3输出值:
Hello James James18
Hello
name

可以看到str2和Str3的类型为GStringImpl,这两种类型在开发过程中需要强制转换吗?

// 定义一个String类型变量接收GStringImpl类型的变量,没有强转
String str4 = str2
// 打印类型和值
println 'str4类型:' + str4.class
println 'str4输出值:' + str4 // 输出结果
str4类型:class java.lang.String
str4输出值:Hello James James18

结论:在编码过程中,不需要特别关注String和GSting的区别,编译器会帮助我们自动转换类型。

方法

get和set方法

Class是一等公民

==和equals

Groovy基础语法的更多相关文章

  1. Gradle Groovy 基础语法 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. Groovy系列(3)- Groovy基础语法

    Groovy基础语法 动态类型 Groovy定义变量时:可以用Groovy风格的def声明,不指定类型:也可以兼容Java风格,指定变量类型:甚至还可以省略def或类型 def t1 = 't1' S ...

  3. groovy常用语法及实战

    groovy语言简介 一种基于JVM的敏捷开发语言,作为编程语言可编译成java字节码,也可以作为脚本语言解释执行. 结合了Python.Ruby和Smalltalk的许多强大的特性 支持面向对象编程 ...

  4. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  5. python基础语法及知识点总结

    本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...

  6. 【Scala学习之一】 Scala基础语法

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  7. devops-jenkins-Pipeline基础语法

    1. jenkins-Pipeline基础语法  1) jenkins-Pipeline总体介绍 • Pipeline,简而言之,就是一套运行与jenkins上的工作流框架,将原本独立运行于单个或多个 ...

  8. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  9. iOS-----正则表达式的基础语法

    正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...

随机推荐

  1. ABP源码分析 - 约定注册(2)

    比较随意,记录下过程,以便忘了以后重拾. 所谓约定注册是指不需要明确写代码注入,只需要按约定规则写服务类,框架自动完成服务注册. 例如,只要这样写,框架就会自动注册. public class Tax ...

  2. Docker的简介

    前言 Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源. 何为Docker? ...

  3. 讲解CPU之NUMA硬件体系以及机制(lscpu查看相关信息)

    先看看从系统层面反映出来的numa cpu信息.采样机器为实体机.80核.128内存. [root@ht2 src]# lscpu Architecture: x86_64 #x86架构下的64位 C ...

  4. drf过滤和排序及异常处理的包装

    过滤和排序(4星) 查询所有才需要过滤(根据过滤条件),排序(按某个规律排序) 使用前提: 必须继承的顶层类是GenericAPIView 内置过滤类 内置过滤类使用,在视图类中配置,是模糊查询 使用 ...

  5. linux centos 8.2 安装docker

    1 使用yum -y install docker安装后启动docker提示Failed to start docker.service: Unit docker.service not found. ...

  6. 为vscode开发一款svn右键菜单扩展

    在我平时的工作中会经常用到svn blame这个命令,但是vscode现有的svn扩展普遍都不能自定义右键菜单. 所以我产生一个想法:自己动手为vscode开发一款svn的扩展来定制右键菜单,本文记录 ...

  7. C# 静态常量(const)动态常量(static、readonly)用法区别

    C# 常量的命名方法 一个低级错误 readonly.const 代码 使用方式 支持类型 维护性 性能比较 优先使用 C# Static 与 Java Static C# Const 与 Java ...

  8. Apache Hudi 如何加速传统的批处理模式?

    1. 现状说明 1.1 数据湖摄取和计算过程 - 处理更新 在我们的用例中1-10% 是对历史记录的更新.当记录更新时,我们需要从之前的 updated_date 分区中删除之前的条目,并将条目添加到 ...

  9. 【学习笔记】CDQ分治(等待填坑)

    因为我对CDQ分治理解不深,所以这篇博客只是我现在的浅显理解有任何不对的,希望大佬指出. 首先就是CDQ分治适用的题型: (1)带修改,但修改互相独立 (2)必须允许离线 (3)解决数据结构的题,能把 ...

  10. XCTF练习题---CRYPTO---混合编码解析

    XCTF练习题---CRYPTO---混合编码解析 flag:cyberpeace{welcometoattackanddefenceworld} 解题步骤: 1.观察题目,下载附件进行查看 2.看到 ...