首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Groovy中打开字符串值会产生意外的结果

在Groovy中,打开字符串值会产生意外的结果。这是因为Groovy中的字符串是可变的,可以像列表一样进行索引和修改。当我们使用类似于"string"[index]的语法来访问字符串中的字符时,Groovy会将字符串视为字符列表,并返回指定索引处的字符。

例如,对于字符串"hello",我们可以使用"hello"[0]来访问第一个字符'h'。同样地,我们可以使用"hello"[1]来访问第二个字符'e'

然而,当我们尝试修改字符串中的字符时,会发生意外的结果。例如,如果我们执行以下代码:

代码语言:groovy
复制
def str = "hello"
str[0] = 'H'
println str

我们期望输出结果为"Hello",但实际上输出结果为"Hello"。这是因为Groovy将字符串视为不可变的,尽管我们可以像修改列表元素一样修改字符串中的字符,但实际上并没有改变原始字符串。相反,Groovy会创建一个新的字符串对象,其中修改后的字符被替换。

在Groovy中,如果我们需要修改字符串中的字符,可以使用StringBuilder类或StringBuffer类来构建可变字符串。这些类提供了一系列方法来修改字符串,如append()insert()replace()等。

总结起来,Groovy中打开字符串值会产生意外的结果,因为字符串是可变的,但实际上修改字符串中的字符并不会改变原始字符串。如果需要修改字符串中的字符,应使用StringBuilder类或StringBuffer类。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

教妹学 Java:动态伴侣 Groovy

但在 Groovy ,不必指定变量类型(可选),变量类型是声明(或返回)时候确定。 比如说可以把一个整形赋值给变量 a,然后紧接着把一个字符串赋值给变量 a。...1)Groovy 松散语法让我们不需要为打印 “Hello World” 这样简单操作定义类。 2)Groovy 非常聪明地为我们 println 前面加上 System.out。...当然了,你也可以按照编译再运行步骤来: groovyc Wanger.groovy groovy Wanger 用 groovyc 编译 Groovy 代码产生标准 Java 字节码,然后也可以通过...注意,命令行运行 Groovy 代码前提是,你需要先到 Groovy 官网下载免安装包,再将其解压后配置到环境变量,就像当初你配置 Java 环境变量那样。...第一步,打开 Eclipse, Help 菜单中选择 Eclipse Marketplace,搜索 groovy 关键字,结果如下图所示。 ?

55120

GroovyGroovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )

-- Android Gradle 配置 , 最常用用法是 , 将 build.gradle dependencies 依赖 org.codehaus.groovy:groovy-all...names 执行结果 : [org.codehaus.groovy, groovy-all, 3.0.5] 2、使用 Groovy 语法切割字符串直接为变量赋值 使用 Groovy 语法切割字符串 ,...并使用 (group, name, version) 接收切割后字符串数组元素 , 切割后数组 3 个元素 , 分别赋值给 group , name , version 变量 ; def...前两个数组元素 进行赋值 ; 这里注意 : 赋值变量 可以少于 分割数组长度 , 不能多于数组长度 , 否则会产生越界异常 ; def libName = "org.codehaus.groovy:..., 否则会产生越界异常 def (group2, name2) = libName.split(":") // 打印结果 : // group2 : org.codehaus.groovy , name2

7.9K30

Groovy 运算符 条件运算符,对象运算符学习

因为Groovy,对字符串取反比较。其实就是判断了字符串是否为空字符串,根据是否为空返回boolean,然后再进行取反。...所以上面的示例:zinyan字符串是非空所以为true,然后取反输出为false。而下面第三行代码字符串为空,所以为false,取反得到就是true了。...PS:Groovy判断字符串是否为空可以直接使用这个条件判断符来进行判断。如果对象是null 也是可以判断。...zinyan) //输出结果为true 2.1 三元运算符 java三元运算符 表达式 ? 结果1:结果2Groovy当然也是一样支持。...对于静态Groovy,方法引用运算符产生字节码类似于Java为相同上下文生成字节码。 上面的文字没有看懂,没关系。我们结合代码示例进行理解:下面都是静态对象使用。

1.8K10

Groovy新手教程

作为跑JVM还有一种语言,groovy语法与 Java 语言语法非常类似。同一时候,Groovy 抛弃了java烦琐文法。...方法中加一句打印语句: println “Hello World” 4、 编译执行groovy源文件上右键,Compile Groovy File,然后右键,Run As à Groovy控制台中查看执行结果...当然更groovy写法是: def var=“””hello world groovy!“”” 三个”号之间不在须要+号进行连接(只是字符串格式符都会被保留,包含回车和tab)。...–”对集合,groovy,键不一定是String,能够是不论什么对象(实际上GroovyMap就是java.util.Linke dHashMap)。...name : “Unknown”; groovy,也能够简化为(由于nullgroovy能够转化为布尔false): String displayName = name ?

2K10

Groovy快速入门看这篇就够了

具体操作步骤就是:一个目录中新建build.gradle文件,build.gradle中新建一个task,task编写Groovy代码,用命令行进入这个build.gradle文件所在目录,...数据类型 Groovy数据类型主要有以下几种: Java基本数据类型 Groovy容器类 闭包 7.1 字符串 Groovy基本数据类型和Java大同小异,这里主要介绍下字符串类型。...Groovy种有两种字符串类型,普通字符串String(java.lang.String)和插字符串GString(groovy.lang.GString)。...单引号字符串 Groovy单引号字符串和双引号字符串都可以定义一个字符串常量,只不过单引号字符串不支持插。...'Android进阶解密' 双引号字符串 要想插可以使用双引号字符串,插指的是替换字符串占位符,占位符表达式为${}或者以$为前缀。

12.3K63

编程小技巧之 IDEA Live Template

自定义 Template 打开配置页面,进入 Live Template 选项卡,我们可以看到 IDEA 预先设置模板配置。这些模板都是最常用一些语句,我们先来看一下它们都是如何定义。 ?...而参数设置就是设置这些参数,可以使用 IDEA 提供一些内置函数,还可以使用强大 Groovy 脚本。去 IDEA 官网可以查看这些函数具体作用。 ?...它能提供一切你想要能力,它支持执行 Groovy 脚本处理输入,然后输出处理后字符串 groovyScript("code", ...) | code | 一段Groovy代码或者Groovy...| 可选入参,这些参数绑定到`_1, _2, _3, ..._n`, Groovy 代码中使用。| 比如之前打印函数参数模板是这样定义。 ?...,它返回结果作为参数输入到 Groovy 脚本,生成打印参数函数字符串

89820

Gradle For Android(7)--创建Task以及Plugin

Java打印一个字符串如下: System.out.println("Hello, world!"); 而在Groovy如下: println 'Hello, world!'...双引号String可以包含一些差值表达式。差值表达式可以或者函数来代替其中占位符。而占位符表达式包含多个,并且通过$前缀来代表。...闭包概念和Java不一样,但是Groovy和Gradle尤为重要。 Closures 闭包是匿名代码块,能够接受参数并且返回一个。它能够被分配给变量,也能够作为参数传递给函数。...")) } Groovy检查字符串是否为空是一个很简单操作。用?标志password?.trim()检查了password是否为null,并且使用trim()避免password为空。...Groovy,我们可以通过-=运算符来从String减去一个String。这些修改可以保证安装过后,使用后缀APP也不会打开失败。

1.8K20

Groovy处理JMeter断言和日志

闲扯一jmeter和Groovy 首先说明一下,我并不擅长jmeter,因为我基本不用这个,关于jmeter设置疑问可以多去搜索引擎求助。...查阅完官方文档得出结论,脚本语言如:Groovyjmeter体系基本说是全能,例如:处理请求、响应、参数、变量以及收集器和监听器(这些以后有机会再写文章,有需求请异步官方Demo)。...以下Demo,我们要测试服务器响应是否包含结构良好JSON。我们将通过我们应用程序服务器运行一个请求,并且我们期望收到一个结构化JSON,校验结构化JSON包含固定字段。...由于我们知道期望响应接收哪些键,以及应该分配给它们,因此我们可以使用Groovy断言来断言响应。 1.简单开始 该脚本包括一个线程组和一个采样器。...success字段意外,还验证了prev几个基本API以及jmeter日志使用。

1.7K30

Groovy 语法-注释,关键字和标识符学习

单行注释是根据换行来判断结束。 而多行注释是根据 */标签来进行结束。例如: println 1 /* one */ + 2 /* two */ 不会影响输出结果为3 这个。...最后,还有一个特殊注释就是:文档注释(文档注释,主要是通过doc工具生成文档时程序自动提取文档注释内容,不会抓取单行注释和多行注释内容) 规范性写法,文档注释通常在函数,静态变量,类等地方进行标注...我们如果在Groovy代码添加了该注释它将会允许从命令行直接运行脚本,前提是我们已经安装了Groovy发行版,并且PATH上可以使用Groovy命令。...(也就是环境变量配置了Groovy SDK地址)。 示例: #!...$/dollar slashy string/$ 普通字符串GroovyGString(插字符串)之间有一个区别,在后一种情况下,插被插入到最后字符串,用于计算整个标识符: def firstname

68630

Groovy 快速入门

如果某个标识符Groovy合法,Java不合法,我们可以使用单引号或双引号将标识符包括起来。 字符串 字符串可以使用单引号'或双引号"包括起来。...编译器会把美元和花括号内容替换成实际,内插字符串还可以进行表达式计算。...Groovy三元运算符条件?1:2和Java类似。 可空运算符 Groovy支持Elvis操作符,当对象非空时候结果1,为空时结果2。...不过Groovy布尔真假不仅看条件比较结果,还可以以其他情况判断。前面已经介绍过了。switch语句同理,真值判断非常自由。详情可参见Groovy文档 真值判断。...Groovy中方法返回语句可以省略,这时候编译器会使用方法最后一个语句作为返回。在前面我们还看到了def关键字定义变量,这时候变量类型需要从代码推断。

1.3K10

Groovy 语法-字符串学习

介绍 本篇为Groovy学习第三篇,接着学习关于Groovy语法规则知识。 本篇主要学习Groovy字符串操作。 了解字符串拼接,表达式与字符串混合拼接。 字符串各种转义字符等等。...所以开头三个单引号后面我添加了一个\否则的话,多一个换行 2.3 转义字符 和java转义字符是一样。我们如果要输入换行等等,为了避免显示就可以通过\实现转义。...(因为Groovy可以动态确定数据类型。) 任何Groovy表达式都可以插入到所有字符串,单引号和三单引号字符串除外。插补是计算字符串时用它替换字符串占位符行为。...Groovy自动帮我们进行转换,调用GStringtoString方法将字符串转为String然后传递进去。...因此,它们支持插,我们可以斜杠定义字符串插入变量。

6.9K20

使用 Python 来解决慈善机构业务问题

我也曾写过用不同编程语言写一些小程序来解决这样子小问题以及比较这些程序时如何工作第一篇文章,我是使用了 Groovy 语言来解决问题。...关于 Groovy 和 Python 之间区别,有几点需要注意: Python ,无需关键字来定义变量 packs,Python 变量初始化时需要设置一个。...Python 字典词键(例如,item、brand、units、price、 quantity)需要引号来表明它们是字符串Groovy 假定这些是字符串,但也接受引号。... Python ,符号 { ... } 表明一个字典声明; Groovy 使用与列表相同方括号,但两种情况下结构都必须具有键值对。 当然,表价格不是以美元计算。 接下来,打开散装包。...据我所知,Python 没有类似的东西,所以使用两个列表推导式来产生相同结果: units = [[{'item':pack['item'],'brand':pack['brand'],

85930

JenkinsShareLibrary实践之自定义通知器

因此通过一段时间需求调研以及综合各方建议,最终将消息推送内容包含了以下信息: 应用名称 构建结果 当前版本 构建发起 持续时间 构建日志 更新记录(包含用户提交短日志,用户名称,提交时间) 每次构建结果通知包含了以上就基本完备...这些目录Groovy源文件 脚本化流水线CPS transformation一样。...应用名称 定义为jenkins任务名称,通过全局变量env.JOB_NAME获取或者pipeline自定义一个变量给出 构建结果 pipelinepost字段指标判断并给出 当前版本 定义为...- validResponseContent:字符串类型,比如设置它为“showme.codes”,那么只有 当HTTP返回内容包含了“showme.codes”时,才代表请求成功。...但是使用完之后,记得调用inputStreamclose()方法关闭。◦ STRING(默认):将响应内容转换成一个字符串。 - outputFile:字符串类型,请求响应内容输出路径。

2.2K40

Jenkins共享库之自定义通知器

因此通过一段时间需求调研以及综合各方建议,最终将消息推送内容包含了以下信息: 应用名称 构建结果 当前版本 构建发起 持续时间 构建日志 更新记录(包含用户提交短日志,用户名称,提交时间) 每次构建结果通知包含了以上就基本完备...这些目录Groovy源文件 脚本化流水线CPS transformation一样。...env.JOB_NAME获取或者pipeline自定义一个变量给出 构建结果 pipelinepost字段指标判断并给出 当前版本 定义为jenkins构建编号,通过全局变量env.BUILD_NUMBER...validResponseContent:字符串类型,比如设置它为“showme.codes”,那么只有 当HTTP返回内容包含了“showme.codes”时,才代表请求成功。...但是使用完之后,记得调用inputStreamclose()方法关闭。 ◦ STRING(默认):将响应内容转换成一个字符串。 outputFile:字符串类型,请求响应内容输出路径。

2.6K20

Gradle之Groovy

Groovy 基本语法 类型转换:当需要时,类型之间自动发生类型转换: 字符串(String)、基本类型(如 int) 和类型包装类 (如 Integer) 类说明:如果在一个 groovy 文件没有任何类定义...groovy 文件内容被打包进 run 方法,另外在新产生类中被加入一个 main 方法以进行外部执行该脚本。 4.1 基本注意点 方法调用时,不含有歧义地方可以省略方法调用时括号。...----------- // "-" "+" 操作符重载 map2 = map - [K:"Kotlin"] println map2 map3 = map + [G:"Gradle"] //键相同产生覆盖...闭包 闭包:Groovy 闭包是一个开放、匿名代码块,它可以接受参数、也可以有返回。闭包可以引用其周围作用 域中声明变量。...//build.gradle文件我们见到很多都是闭包格式

1.3K10

通过Groovy来消除代码噪声

通过Groovy来消除代码噪声 Java是JVM上运行最广泛使用编程语言。不过,还有很多其他基于JVM语言,比如Groovy,Scala,JRuby,Jython,Kotlin等等。...除此之外,Groovy还提供了许多类似脚本语言功能,比如,多行字符串字符串,优雅循环结构和简单属性访问。另外,结尾分号是可选。而这些都有足够理帮助开发人员为了提高开发效率。...Spring Boot应用也支持使用Groovy编程语言进行开发。 Groovy字符串 我们可以使用单引号或双引号Groovy创建字符串。...Groovy多行创建跨越一行字符串时非常方便,比如,表格,带占位符HTML模板等。...同样,可以使用p.id读取属性ID,而不需要获取idgetter。 因为Groovy默认将为这些属性生成setter和getters,省去手动get和set操作。

68420

Groovy与java不同之处

默认import Groovy,下面这些包默认引入。...运行结果为 2 Groovy运行结果为 1【因为Groovy在运行时判断出o是String类型】 数组初始化 Groovy{…}是留给闭包使用,所以声明数组时不能像java一样使用 int...&println) GStrings Groovy,双引号字符串会被解释为GString。...使用Groovy编译器 编译包含字符串可能会发生错误,或者会与java编译器编译结果有些许不同(Groovy中用于插入文字使用,”b{a}”相当于”b”+a 包含 字符串如果不是正常格式 While...()==String assert "c${1}".getClass() in GString 当将单引号字符分配给char类型时,Groovy自动将String类型(单引号字符Groovy默认是

1.5K20

Groovy字符串 ( 字符串拼接 | 多行字符串 )

文章目录 一、字符串类型变量 二、多行字符串 三、完整代码示例 一、字符串类型变量 ---- 双引号字符串 , 使用 ${变量名} 进行字符串拼接 , ${变量名} 符号取值 , 是 定义时取值...s1 = "Hello Groovy" // 修改被拼接函数值 // 打印为 "Hello Groovy World!!!"...// 修改被拼接函数值 s1 = "Hello Groovy" // 分别打印 s3 字符串内容和类型 , 修改被拼接函数值没有影响到最终字符串...// 字符串拼接 // 注意 , 双引号才能进行字符串拼接 , 单引号不行 // ${变量名} 符号取值 , 是 定义时取值 ; def s3...// 修改被拼接函数值 s1 = "Hello Groovy" // 分别打印 s3 字符串内容和类型 , 修改被拼接函数值没有影响到最终字符串

2.8K20
领券