gpt4 book ai didi

java - Java 中排序后数组的行为

转载 作者:行者123 更新时间:2023-12-02 06:11:45 25 4
gpt4 key购买 nike

我想了解以下程序行为的一些看法:

package main;
import java.util.Arrays;
public class StringAnagram {
public static void main(String args[]) {
String a = "aabbaabb";
char[] aArr = a.toCharArray();

Arrays.sort(aArr); //1
Arrays.sort(a.toCharArray()); //2

System.out.println(aArr); // Sorted
System.out.println(a.toCharArray()); // UnSorted
}
}

根据我的说法,语句1对aArr引用的字符数组进行排序,但是当涉及到语句2时,字符数组正在排序,但不知何故,排序后的数组没有被任何变量引用,所以行为丢失。有人可以帮我做同样的事情吗?

最佳答案

是的。你是对的。

每次调用 toCharArray() 实际上都会使用字符串中的字符创建一个新的数组实例。

对于aArr,您实际上引用了新的数组实例,您使用aArr进行排序。它是由变量 aArr 引用的数组实例,该数组实例已排序。

但是当您将 a.toCharArray() 传递给 Array.sort() 方法时,您正在传递没有引用变量的数组实例。数组实例已排序,但您没有任何引用。

当您再次使用 a.toCharArray() 调用 println 时,会创建一个新的数组实例并将其传递给 println ,这显然是未排序的。

关于java - Java 中排序后数组的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com