实现字符串反转,有很多方法,我想递归是可以实现的。我们再来看Java给我们实现的方法,使用的是前半部分和后半部分字符交换的方法(不错,记得在学C的时候,当时老师也是教我们这样做的)。
先看看怎么使用这个方法。
public static String reverseStr(String orignalStr){
StringBuilder sBuffer = new StringBuilder(orignalStr);
sBuffer.reverse();
return sBuffer.toString();
}
再看看JDK实现的源码:
public AbstractStringBuilder reverse() {
boolean hasSurrogate = false;
int n = count - 1;
for (int j = (n-1) >> 1; j >= 0; --j) {//此处右移一位就是除以2
char temp = value[j];
char temp2 = value[n - j];
if (!hasSurrogate) {
hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
|| (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
}
value[j] = temp2;
value[n - j] = temp;
}
if (hasSurrogate) {
// Reverse back all valid surrogate pairs
for (int i = 0; i < count - 1; i++) {
char c2 = value[i];
if (Character.isLowSurrogate(c2)) {
char c1 = value[i + 1];
if (Character.isHighSurrogate(c1)) {
value[i++] = c1;
value[i] = c2;
}
}
}
}
return this;
}
其实整个方法并不难看懂;除了StringBuilder外,同样StringBuffer也拥有。这个方法给我的思考是右移的使用,从数电我们可以知道,计算机的乘除法使用的是移位操作来实现的;因此可以看得出,乘除的最基本实现还是来源于移位操作。固然直接使用移位可以提高效率;对于简单的乘除,这个应该作为一种编程习惯。
分享到:
相关推荐
总的来说,这些Java源码提供了一个实践数据结构和算法的好机会,可以帮助初学者更好地理解和应用这些基本概念。无论是字符串逆序还是排序算法,理解其工作原理和实现方式对于提升编程技能和解决实际问题都至关重要。
StringBuilder reversed = new StringBuilder(strNum).reverse(); return Integer.parseInt(reversed.toString()); } ``` 以上就是对标题和描述中提到的Java知识点的详细解析。在"我的Java学习代码"这个压缩包...
JDK 包含了 JRE,同时还包含了编译 Java 源码的编译器 javac,还包含了很多 Java 程序调试和分析的工具。如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。 2. == 和 ...
Java没有内置的字符串逆序方法,但可以利用`StringBuilder`类的`reverse()`方法来达到目的。`StringBuilder`是一个可变的字符序列,可以方便地进行字符串操作。在Java代码中,我们创建了一个`StringBuilder`对象,将...
在 Java 中,可以使用 StringBuilder 或 StringBuffer 类的 reverse() 方法来反转字符串。例如: ```java String str = "hello"; StringBuilder sb = new StringBuilder(str); String reversed = sb.reverse()....
以上内容涵盖了Java编程中的关键知识点,特别是内部类的分类及其特点,以及`StringBuffer`的`reverse()`方法的用法。理解并熟练运用这些概念对于编写高效、清晰的Java代码至关重要。在实际开发中,内部类常用于实现...
这里展示了 `toString()` 方法用于将 `StringBuilder` 转换为字符串,`replace()` 方法替换字符串中的子串,以及 `reverse()` 方法反转字符串。 - `UseString` 类中,`str` 变量通过 `substring()` 方法截取子串,...
通过阅读源码,学生可以学习到如何编写和理解Java程序。 在学习这些Java实验室作业时,学生将深入理解Java语法,包括面向对象的概念、数据类型、字符串操作、数组处理、类和对象的创建,以及基本的算法设计。同时,...
在Java中,可以使用StringBuilder或StringBuffer类的reverse()方法来实现这个功能,这对于学习字符串操作和方法调用很有帮助。 多线程是Java的一大特色,它允许程序同时执行多个任务。通过实现Runnable接口或者继承...
本篇将深入探讨Java中的工具类及其重要性,结合给定的标签“源码”和“工具”,我们将主要关注标准库中的`java.util`包以及自定义工具类的创建。 `java.util`包是Java标准库的核心部分,包含了大量用于处理集合、...
StringBuilder sb = new StringBuilder(); while (id > 0) { int remainder = (int) (id % BASE); id /= BASE; sb.append((char) ('0' + remainder)); } // 倒序排列 return sb.reverse().toString(); } } ...
在Java编程环境中,解析Google Map地址以及反向解析经纬度是一项常见的任务,特别是在地理信息系统(GIS)相关的项目中。Google Maps API提供了丰富的功能,包括地址转换(Geocoding)和反向地理编码(Reverse ...
Java 中主要使用 String、StringBuilder 和 StringBuffer 来操作字符串。String 是不可变的,每次修改都会创建新的对象;StringBuilder 和 StringBuffer 是可变的,它们允许在原地修改字符串,效率较高。其中,...
- **查看方法源码**:`Ctrl+B`可快速跳转到方法的实现代码。 - **调试**: - 设置断点:左键单击所需行号即可。 - 运行断点:右键点击断点所在行,选择`Debug`方法名。 - 使用`F7`键运行Debug。 #### 二、变量...
这个类位于`java.lang`包中,是线程安全的字符串操作类,与`StringBuilder`类一起提供了对字符串的动态构建。在多线程环境中,`StringBuffer`比直接使用`+`操作符或`StringBuilder`更推荐,因为它的所有方法都是同步...
这里我们将深入探讨如何在Java中实现字符串反转,同时也会涉及到字符串的基本原理和一些相关工具的使用。 首先,我们需要理解Java中的字符串。在Java中,字符串是由字符组成的不可变序列,通常表示为`String`类的...
9. **String**: 不可变的字符序列,是Java中最常用的类之一。包含了许多操作字符串的方法,如连接(`concat()`)、分割(`split()`)、替换(`replace()`)和查找子串(`indexOf()`)。 10. **UUID**: 生成全局唯一...
`StringBuilder`类的`reverse()`方法用于反转字符串。 3. **JavaScript**: ```javascript var s = "hello"; console.log(s.split("").reverse().join("")); ``` 先用`split("")`将字符串拆分为字符数组,再...
常见的方法有使用StringBuilder或StringBuffer类的reverse()方法,或者通过双指针技巧实现。双指针法是从字符串的两端向中间遍历,交换首尾字符,直到两个指针相遇。这两种方法都有其优劣,前者简洁但不可变,后者...
2. **Java**:Java中可以使用StringBuilder或StringBuffer类的reverse()方法,如`StringBuilder sb = new StringBuilder("Hello World"); sb.reverse();`,然后将sb.toString()得到的结果就是取反后的字符串。 3. *...