public String replace(char oldChar, char newChar) { if (oldChar != newChar) { int len = value.length;//value就是一个数组,这里得到string字符串的长度 int i = -1; char[] val = value; /* avoid getfield opcode */ while (++i < len) //先确保字符串中有旧的字符 { if (val[i] == oldChar) {break;} } if (i < len) { char buf[] = new char[len]; for (int j = 0; j < i; j++) { buf[j] = val[j]; } while (i < len) { char c = val[i]; buf[i] = (c == oldChar) ? newChar : c; i++; } return new String(buf, true); } } return this; }
使用方法举例: string.replace('e','o') 将string字符串中所有的e转换为o
这段代码的精髓之处:1.为了程序更快,所以才先确保原来的字符串中有旧的字符,不然会白白循环很多次
2.找到后,创建一个新的字符串buf,长度和原字符串一样,再用while循环替换所有的旧字符.
我们来分析一下这样做的效率提升:
如果不判断字符串是否有旧字符,直接执行
while (i < len)
{
char c = val[i];
buf[i] = (c == oldChar) ? newChar : c;
i++;
}
有n个字符,每个字符要执行判断的次数为: while语句1次,char c赋值1次,c==oldChar判断1次,赋值给buf[i] 1次
i++ 1次,所以总操作数为 5n
而先判断有旧字符再while循环,找到旧字符前每个字符只要执行3次操作,明显提升了程序效率
(具体操作次数,新手入门,可能会有纰漏,恳请指正)
相关推荐
以上就是`String`类的一些常见方法,理解并熟练使用它们对于提升Java编程效率至关重要。在实际开发中,开发者通常会结合这些方法来处理字符串,实现各种文本操作。通过阅读和分析`TestString.java`文件,我们可以...
在Java编程语言中,`String`类提供了多种方法来处理字符串,其中之一便是`replace()`方法。这个方法主要用于在字符串中替换指定的字符或子串,返回一个新的字符串,原字符串不会被改变,因为Java中的字符串是不可变...
在Java编程语言中,源码是程序的基本组成单元,它由程序员编写,包含了类、方法、变量以及其他元素的定义。"java源码整理包"是一个集合,包含了与字符串(String)、日期(Date)、数据格式化(DataFormat)、数组(Array)...
9. **字符串处理**:String类是Java中最常用的类之一,源码解析可以帮助我们理解字符串的不可变性、substring、replace等方法的实现。 10. **枚举和注解**:Java枚举提供了一种安全的常量表示,而注解则提供了一种...
这个“String_raw-源码.rar”文件很可能包含了Java标准库中`String`类的原始源代码,这对于深入理解`String`类的工作原理非常有帮助。在这里,我们将深入探讨`String`类的一些关键知识点。 1. **字符串常量池**:在...
`String`源码分析 深入理解`String`源码可以揭示更多细节,例如`char[]`数组的使用、不可变性的实现以及字符串操作的效率优化。`String`类在JDK的源码中是用C++实现的,但其主要接口和方法都是在Java中定义和使用的...
《Java String 可变性的分析》 在Java编程语言中,String对象的不可变性是一个核心概念,也是面试中常见的问题。通常我们认为,一旦创建了一个String对象,其内容就不能更改。然而,通过深入源码,我们可以揭示...
10. **字符串处理**:Java的String类提供了丰富的操作字符串的方法,如substring、indexOf、replace等,这些在处理用户输入和数据显示时会频繁用到。 通过这些项目,学习者不仅能掌握Java编程的基本技能,还能锻炼...
### Java自定义类加载器(Class Loader)详解 #### 一、引言 在Java语言中,类加载机制是其动态特性的核心之一。通过类加载器(Class Loader),Java程序能够在运行时根据需要加载所需的类,从而实现高度的灵活性...
在Java中,字符串被表示为`String`类的对象,该类位于`java.lang`包中,这意味着它在每个Java程序中都是默认可用的。字符串对象是不可变的,意味着一旦创建,其内容就不能更改。下面我们将深入探讨一些关于Java字符...
4. **字符串处理**:在查找和替换功能中,Java的`String`类及其方法(如indexOf、replace、substring等)被广泛使用。此外,正则表达式(Pattern和Matcher类)可以用于复杂文本匹配。 5. **多线程**:如果程序需要...
JDK 包含了 JRE,同时还包含了编译 Java 源码的编译器 javac,还包含了很多 Java 程序调试和分析的工具。如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。 2. == 和 ...
5. **第10章** - 这章可能涉及字符串(String)类的使用,包括字符串的创建、操作(如concatenation、substring、replace等)以及字符串池的概念。 6. **第11章** - 可能会讲解文件和I/O流。Java的I/O流允许程序进行...
### Java学习源码知识点概述 #### 一、读写文件操作 在Java中,进行文件的读取与写入是一项非常基础且重要的功能。这部分代码示例提供了如何使用`java.io`包中的类来实现这一功能的具体实现。 ##### 1.1 文件读取 ...
在Java中,进行字符串替换通常会用到`String`类的方法,如`replace()`、`replaceAll()`或`replaceFirst()`。这些方法各有其特点和适用场景,例如`replace()`只替换首次出现的目标字符串,而`replaceAll()`和`...
7. **字符串处理**:String类在Java中非常常用,学习者需要熟悉字符串的不可变性,以及substring()、replace()、indexOf()等方法的用法。 8. **泛型**:泛型是Java SE 5.0引入的新特性,允许在类、接口和方法中使用...
对于Java 6 `String`源码的分析,`OpenGrok`提供了一个理想的工作平台,帮助我们更好地理解和学习`String`类的内部机制。 1. **构造方法**:`String`类有多种构造方法,包括空字符串的构造、通过字符数组构造、通过...
8. **字符串处理**:Java的String类提供了丰富的字符串操作方法,如concatenation、substring、indexOf、replace等。源码中会展示如何高效地处理字符串。 9. **文件和目录操作**:Java的File类允许对文件和目录进行...