以下代码有什么问题

时间:2016-04-09 22:46:39

标签: java arrays to-char

为什么以下代码不起作用?

String s = "fecbda";
Arrays.sort(s.toCharArray());
System.out.println(s);

2 个答案:

答案 0 :(得分:2)

字符串是不可变的,所以你不能改变它们,你不应该期望这样做。

您可能想要的是

endDate = new Date(endDate);

答案 1 :(得分:1)

它不能用作s.toCharArray()

  

返回:       新分配的字符数组,其长度为此字符串的长度,其内容初始化为包含此字符串表示的字符序列。

文档的操作部分是它创建了一个 new 数组(即字符串中字符的副本),当你对该数组进行排序时,你不对String进行排序。

你不能对字符串进行排序,因为它是不可变的,但是你可以从排序字符数组中创建一个新字符串,如下所示:

String s = "fecbda";
char[] c = s.toCharArray();
Array.sort( c );
String n = new String( c );

作为替代方法,您可以使用流在Java 8中执行此操作:

String s = "fecbda";

String n = s.chars()  // Convert to an IntStream of character codes
            .sorted() // Sort
            .mapToObj(i -> Character.toString((char) i)) // Convert to strings
            .collect(Collectors.joining()); // Concatenate the strings.