[英]Behavior of an array after sorting in Java
我想對以下程序的行為有一些看法:
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時,字符數組的排序正在發生,但不知何故,排序的數組沒有被任何變量引用,因此行為丟失了。 也許有人請幫我一樣。
好吧,讓我們看看會發生什么。
首先, a.toCharArray()
。 這將返回一個包含字符“aabbaabb”的新char數組。
然后,對此數組進行排序。
你沒有給自己一種方法來訪問陣列,所以你不能。 這就是“失去”的意思。 沒有什么特別的或魔法發生,你只是制作了一個你無法訪問的陣列。 它不會浪費內存 - 垃圾收集器會檢測到它無法被訪問,並將其銷毀。
它類似於你只是在沒有排序的情況下做到這一點:
a.toCharArray();
再一次, toCharArray
為你做了一個數組,你沒有給自己一個使用它的方法,所以它也“丟失”了。 分揀是紅鯡魚。
是。 你是對的。
每次調用toCharArray()
實際上都會創建一個包含字符串中字符的新數組實例。
對於aArr
,實際上是指新的數組實例,使用aArr
進行排序。 它是由變量aArr
引用的數組實例,它被排序。
但是當你將a.toCharArray()
傳遞給Array.sort()
方法時,你傳遞的數組實例沒有引用的變量。 數組實例已排序,但您沒有任何引用。
當你再次使用a.toCharArray()
調用println
會創建一個新的數組實例並傳遞給println
,這顯然是未排序的。
Arrays.sort(a.toCharArray());
這a.toCharArray()
返回的數組進行排序,而不是對字符串a進行排序。 因此,無論何時執行a.toCharArray()
您都會獲得String的separate(new) Character array
。 因此它是未分類的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.