-1

这似乎是一个奇怪的问题,但 string.replace() 如何在二进制中工作?

很抱歉这个简短的问题。

编辑:

所以我想我没有说清楚。

如何搜索类变量 String 的二进制文件。我无法对源代码做出正面或反面,所以。

4

1 回答 1

0

replace 方法有两种工作方式:一种是用另一个“字符串”替换“字符串”,另一种是用指定字符替换字符串中的字符。

在用另一个“字符串”替换“字符串”序列时,Java 虚拟机将不得不加载另一个类(Matcher 类)。这个其他类反过来将目标字符串转换为没有非终端正则表达式符号的东西。然后其他类搜索转换后的字符串以查找与旧字符序列匹配的字符序列。这些字符序列使用另一个类 StringBuffer 一个一个地附加,但这次替换被编码到缓冲存储器中,而不是“旧字符串”序列。Matcher 类的控制随后将返回到 String 类。我不会详细说明这部分,因为我们在这里讨论的是另一个类。

在用指定字符替换字符串中的字符时,Java 虚拟机的控制保留在 String 类的“二进制”指令中。首先,检查是否真的会发生替换。检查新旧字符的相等性以及目标字符的存在等。一旦通过了这些“测试”,就会创建一个 Unicode 字符序列作为目标字符串值的副本。遍历这个字符序列,然后将每个“旧”字符的位置用“新”字符的位序列一一填满。一旦实际填充完成,就会从所述字符序列中创建一个新的字符串类型类。返回结果字符串。

当然,这个答案还可以进一步阐述。我希望窥视者也可以帮助我解决我的问题。

于 2014-07-14T07:18:45.030 回答