GString及IntelliJIdea中调试Groovy的操作步骤
今天是学习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的操作步骤的更多相关文章
- 手动删除Win7系统服务列表中残留服务的操作步骤
卸载tomcat的时候服务用cmd运行不能删除 需要用管理员才能删除 手动删除Win7系统服务列表中残留服务的操作步骤分享给大家,在使用深度Win7系统过程中,将一些程序删除后,有些在服务列表中还会残 ...
- 在eclipse中安装groovy插件
在eclipse中安装groovy插件详细步骤: step 1:检查自己的eclipse版本:在help->About Eclipse中查看: step 2:进入 https://github. ...
- Groovy系列(4)- Groovy集合操作
Groovy集合操作 Lists List 字面值 您可以按如下所示创建列表. 请注意,[]是空列表表达式 def list = [5, 6, 7, 8] assert list.get(2) == ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- IE7中使用Jquery动态操作name问题
问题:IE7中无法使用Jquery动态操作页面元素的name属性. 在项目中有出现问题,某些客户的机器偶尔会有,后台取不到前台的数据值. 然开发和测试环境总是不能重现问题.坑爹之处就在于此,不能重现就 ...
- 如何在VC++ 中调试MEX文件
MEX文件对应的是将C/C++文件语言的编写之后 得到的相关文件加载到Matlab中运行的一种方式, 现对于Matlab 中的某些程序运行效率而言, C/C++ 代码某些算法的领域上面执行效率很高,若 ...
- Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)
1.动手实战和调试Spark文件操作 这里,我以指定executor-memory参数的方式,启动spark-shell. 启动hadoop集群 spark@SparkSingleNode:/usr/ ...
- 使用Memcache在PHP中调试方法的介绍及应用
使用Memcache在PHP中调试方法的介绍及应用 如果我们在网络开发中,特别是大访问量的web项目开发中,为了提高响应速度,减少数据查询运算,那么我们都会选用memcahce.首先我们必须要安装,接 ...
- keil程序在外部RAM中调试的问题总结(个人的一点经验总结)
keil程序在内部RAM调试的基本步骤网上已经有非常多了,我就不再赘述,大家能够在网上搜到非常多. 可是有些时候内部RAM并不够用,这就须要将程序装入外部RAM中调试,而在这个过程中可能会出现各种各样 ...
随机推荐
- JQuery - 点击图片显示大图
效果: 目录结构: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...
- smartforms初始化
smartforms 第一次打开的页面是和prd环境下的一样,需要跑一个程序才能编辑
- 进程、线程、轻量级进程、协程和go中的Goroutine
进程.线程.轻量级进程.协程和go中的Goroutine 那些事儿电话面试被问到go的协程,曾经的军伟也问到过我协程.虽然用python时候在Eurasia和eventlet里了解过协程,但自己对协程 ...
- VIM 用正则表达式
VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下: ...
- ASIHTTPRequest开源类项目导入问题及解决方法
在静态库project中加入ASIHTTPRequest导出lib.a.放到project里编译出一下错: Undefined symbols for architecture armv7: &quo ...
- Codeforces Round #218 (Div. 2)
500pt, 题目链接:http://codeforces.com/problemset/problem/371/A 分析:k-periodic说明每一段长度为k,整个数组被分成这样长度为k的片段,要 ...
- 【Demo 0010】事件响应链
本章学习要点: 1. 熟悉iOS事件分发过程以及事件响应链; 2. 掌握基本事件响应方法(单击,双击): 3. 掌握基本手势处理方法:
- 理想非常丰满,现实非常骨感——致WiFi通话
WiFi通话一词,近来火热,国外,iOS 8系统測试版新增WiFi通话功能,英国运营商也着手WiFi免费通话,国内也没落下,阿里发布的170资费方案中就包含WiFi免费通话. 近日,据外媒报道,在美国 ...
- ORM增删改查询例题
public partial class Form1 : Form { private MydbInfoDataContext context = new MydbInfoDa ...
- android studio下的NDK开发详解(一)
源地址:http://www.voidcn.com/blog/chengkaizone/article/p-5761016.html 好记性不如烂笔头,开始坚持写博客,学一点记一点,只为了生活更好. ...