今天是学习Groovy的第一天,首先我觉得学习任何一种语言都要先弄清楚这种语言的特性,因为只有了解了特性之后学习才能达到好的效果,那么groovy的特点是什么的。我觉得groovy是一种动态语言,动态主要体现在MOP也就是元对象协议,还有就是groovy也需要运行在jvm上。groovy的学习成本也不高,如果java基础比较好快速上手是没问题的,还有一些其他的特点,大家去查阅资料,这次要分享的是GString以及字符串的操作

1.groovy的字符串

Java里有String,Groovy里新加了GString。Groovy的语法是,如果用单引号括起来的就是String,如果是双引号括起来的就是GString。所以Groovy不能直接定义原来Java里的char了。

String

String s = 'This is a String'

GString 

GString s = "This is a GString"

两种方式定义出来的实例类型是不一样的。当然GString不是这么简单的,GString的强大之处在于它可以作为模板使用

String name = 'count'
int value1 = 23
int value2 = 22
GString s = "The value of $name is ${value1+value2}"
println s

最终的输出是: The value of count is 55

倒数第二行,里面有关键字符 $, $即代表去引用上下文中的变量值,而${}中间不仅可以引用变量值,还可以加上一些运算,作为一个表达式
最后一行这是把GString转换成String,再输出。
String是常量,但是GString是变量,准确的说,在GString中的$仅仅是作为一个模板的占位符存在,GString会保存对那个对象的引用,如果引用的对象值发生改变,GString的值也就跟着改变。
需要注意的是,Map里面String和GString就算最终生成的String值一样,但是还是当作两个key存在的。很容易理解,但是很容易犯的错误,比如手误把单引号写成了双引号等等都会引起这个错误。
http://blog.csdn.net/yanical/article/details/7163138

学习groovy还应该清楚,groovy是一种弱类型语言,所有的变量都可以看成对象,规范的写法是变量之前应该有def修饰并且groovy不强制程序末尾的分号,写不写都可以
如果要定义一个字符串可以这样写:

def str1="编程语言"
def str2="Groovy"

如果没有什么限制的话,写成单引号也是可以的。但是要明确一点就是单引号和双引号是有区别的

def str1="编程语言"
def str2="Groovy"
println "$str1:$str2" (1)
println '$str1:$str2' (2)

输出:

编程语言:Groovy
$str1:$str2

(1)和(2)的输出结果的区别在于(1)会对$str1和$str2和进行解析输出“编程语言:Groovy”

(2)则会输出$str1:$str2

这就是Gstring了,是不是很简单呢

2.字符串的常用操作

groovy字符串的操作和java里的大体类似,因为有的人可能没有用过Intellij IDE,这里我顺便把创建项目的图贴出来

(1)选择File---->New Project

(2)点击下一步之后看到如下界面,配置好groovy和jdk之后,填写项目名称并选择项目存储目录后,点击完成就OK

如果这个工具不熟练可以自己先学着使用下

最后贴出代码:

package org.lxh

class UseGstring {

    static main(def args) {

      //gstring的用法(理解成转义也成)
def str1="编程语言"
def str2="Groovy"
println "$str1:$str2"
println '$str2' //字符串操作函数
def str3="上海市浦东新区轨道交通2号线"
def str4="hello world"
def str5="你,好"
//截取字符串
println str3.substring(0,7)
//大小写转换
println str4.toUpperCase()
//拆分字符串
def split=str5.split(",")
for(item in split){
println item
}
//字符串替换
println str4.replaceAll("world", "Tom")
//字符串转为数字
def str6="28"
def str7="2"
println str6.toInteger()+str7.toInteger()
//字符串的减法
def str8="abcd"
println str8-"c"
//contains的使用
println str8.contains("c")
} }

下面是运行效果:

接下来分享下我用IntelliJ调试的心得

首先在相应行的最前面,单击一下断点就打上去了

在控制台可以看到下面这样的信息

到这里大家应该会调试程序了

http://blog.csdn.net/walkcode/article/details/22953605

IntelliJ Idea 14调试的操作步骤

(1)建Module,写groovy代码

(2)配置一个调试groovy代码的VM

(3)打断点后,调试Groovy

GString及IntelliJIdea中调试Groovy的操作步骤的更多相关文章

  1. 手动删除Win7系统服务列表中残留服务的操作步骤

    卸载tomcat的时候服务用cmd运行不能删除 需要用管理员才能删除 手动删除Win7系统服务列表中残留服务的操作步骤分享给大家,在使用深度Win7系统过程中,将一些程序删除后,有些在服务列表中还会残 ...

  2. 在eclipse中安装groovy插件

    在eclipse中安装groovy插件详细步骤: step 1:检查自己的eclipse版本:在help->About Eclipse中查看: step 2:进入 https://github. ...

  3. Groovy系列(4)- Groovy集合操作

    Groovy集合操作 Lists List 字面值 您可以按如下所示创建列表. 请注意,[]是空列表表达式 def list = [5, 6, 7, 8] assert list.get(2) == ...

  4. 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...

  5. IE7中使用Jquery动态操作name问题

    问题:IE7中无法使用Jquery动态操作页面元素的name属性. 在项目中有出现问题,某些客户的机器偶尔会有,后台取不到前台的数据值. 然开发和测试环境总是不能重现问题.坑爹之处就在于此,不能重现就 ...

  6. 如何在VC++ 中调试MEX文件

    MEX文件对应的是将C/C++文件语言的编写之后 得到的相关文件加载到Matlab中运行的一种方式, 现对于Matlab 中的某些程序运行效率而言, C/C++ 代码某些算法的领域上面执行效率很高,若 ...

  7. Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)

    1.动手实战和调试Spark文件操作 这里,我以指定executor-memory参数的方式,启动spark-shell. 启动hadoop集群 spark@SparkSingleNode:/usr/ ...

  8. 使用Memcache在PHP中调试方法的介绍及应用

    使用Memcache在PHP中调试方法的介绍及应用 如果我们在网络开发中,特别是大访问量的web项目开发中,为了提高响应速度,减少数据查询运算,那么我们都会选用memcahce.首先我们必须要安装,接 ...

  9. keil程序在外部RAM中调试的问题总结(个人的一点经验总结)

    keil程序在内部RAM调试的基本步骤网上已经有非常多了,我就不再赘述,大家能够在网上搜到非常多. 可是有些时候内部RAM并不够用,这就须要将程序装入外部RAM中调试,而在这个过程中可能会出现各种各样 ...

随机推荐

  1. .NET常见面试题

    面试题 1  什么是 CTS.CLS 和CLR 公共语言运行库(CLR)是一个CLI 的一个实现,包含了.NET 运行引擎和符合 CLI 的类库. 通用类型系统(CTS)包含在微软公司提交的 CLI ...

  2. Appium TestNg Maven Android Eclipse java简单启动实例

    环境准备 Eclipse + maven + appium + TestNg 确保已经在Eclipse 上面安装maven TestNg的插件 打开Eclipse,新建一个java项目,把项目转换成m ...

  3. Delphi安装NT服务程序时(不出现提示信息)

    如果我们不加上"/silent",那么Delphi在安装和卸载NT服务程序时候,都会出现一个提示信息,不希望出现这个提示信息,那么使用如下命令: 1,安装:“你的nt程序 /ins ...

  4. Android系统权限和root权限大全

    tyle="margin:20px 0px 0px; font-size:14.285714149475098px; line-height:26px; font-family:Arial; ...

  5. haproxy redirect location和redirect prefix

    <pre name="code" class="html">redirect location <loc> [code <code ...

  6. Nginx设置alias实现虚拟目录 alias与root的用法区别

    Nginx 貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的.如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较"像",干脆来说说alias ...

  7. 14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器

    14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器 这个章节描述技术关于移动或者copy ...

  8. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  9. php 上传文件 $_FILES['']['type']的值

    php 上传文件 $_FILES['']['type']的值 一个函数 function upload_file($fname,$ftype,$fsize,$ferror,$ftmp_name,$fp ...

  10. 给工程师的 10 条哲理(浅薄者迷信运气,强者相信因果,软件复制成本为零,文凭不重要,AWS使得创业成本为零,每个手机都是口袋里的强大电脑)

    无论是主题分布式数据库,微服务,Soylent,尤伯杯,或者矮人要塞,我们试图从物质分离出来炒作,推迟叙事的客人.与尊重有软件工程日报的社论部分客观性. 一位渠道的成员说,“当软件工程每日的意见公布, ...