只是简单的反向字符串方法。仅供参考,正确的方法是 reverseString1 和 reverseString2,但 revereStirng3() 并没有给我正确的输出。我认为这是因为方法参数和返回值存储在堆栈中并与此概念相关。但我不清楚为什么 revereStirng3() 不能正常工作。请让我知道这不起作用。
这是我理解的,如果我错了,请纠正我。1. main() 调用 revereStirng3(A),其中传递的参数数组 A 存储在 main() 的堆栈帧中。
revereStirng3(char[] A) 其中这个传递的参数数组 A 存储在 revereStirng3 的方法框架中,这意味着 main 的 A[] 被复制到 revereStirng3 的堆栈框架的方法参数 A[]。
反向后,revereStirng3 为返回字符串创建新的 String(A)。
然后,我认为,返回的 new String(A) 主要是正确打印反转字符串,但实际上不是。
// 给定一个字符串“abcdef”,反转它。所以输出应该是“fedcba”
import java.util.*; public class ReverseString { static String revereStirng3(char[] A) { int n = A.length; for(int i=0; i<n/2; i++) { char temp = A[n-i-1]; A[n-i-1] = A[i]; A[i] = temp; } return new String(A); } static void revereStirng1(char[] A) { int n = A.length; for(int i=0; i<n/2; i++) { char temp = A[n-i-1]; A[n-i-1] = A[i]; A[i] = temp; } } static String revereStirng2(String str) { char[] A = str.toCharArray(); int n = A.length; for(int i=0; i<n/2; i++) { char temp = A[n-i-1]; A[n-i-1] = A[i]; A[i] = temp; } return String.valueOf(A); } public static void main(String[] args) { String s = "abcdef"; char[] A = s.toCharArray(); System.out.print( revereStirng3(A) + "\n" ); **// print out "abcdef"** System.out.println( "" ); revereStirng1(A); // print out "fedcba" for(int i=0; i<A.length; i++) System.out.print( A[i] ); System.out.println( "" ); System.out.print( revereStirng2(s) + "\n" ); // print out "fedcba" System.out.println( "" ); } }