Java Arrays.sort()对于int[]和String对于同一输入的作用不同为什么?

Java Arrays.sort()对于int[]和String对于同一输入的作用不同为什么?,java,arrays,sorting,Java,Arrays,Sorting,我正在从leetcode着手解决这个问题 我在研究解决方案时注意到,当输入为数字时,排序的行为不同于当输入为字符串时(仍然是数字) 输入: [3,30,34,5,9] 代码: String[]numstoString=新字符串[nums.length]; 对于(int i=0;i在int[]的情况下,数值用于对列表进行排序,以便5

我正在从leetcode着手解决这个问题

我在研究解决方案时注意到,当输入为数字时,排序的行为不同于当输入为字符串时(仍然是数字)

输入:

[3,30,34,5,9]

代码:

String[]numstoString=新字符串[nums.length];

对于(int i=0;i在
int[]
的情况下,数值用于对列表进行排序,以便5<9<30


对于
字符串[]
而言,字符串中每个字符的数值用于比较。因此“30”代表“5”,因为ASCII值“3”小于“5”。

对于
int[]
而言,数值用于对列表排序,因此5<9<30


字符串[]
的情况下,字符串中每个字符的数值用于比较。因此“30”代表“5”,因为ASCII值“3”小于“5”.

数字排序与字符串排序不同,当您对数字排序时,实际上是在比较其中的值,
3<5<9<30<34
,但是当将它们转换为字符串时,字符串比较是通过将它们转换为ASCII值来逐字符进行的,
34<5
,因为第一个数字
3<5

数字排序不同于字符串排序,当您对数字排序时,实际上是在比较其中的值,
3<5<9<30<34
,但是当将它们转换为字符串时,字符串比较是通过将它们转换为ASCII值来逐字符进行的,
34<5
,因为第一个数字
3<5

即使我认为在sting版本中使用ASCII值[51,51+48,51+52,53,57],你会如何在字典中对字符串排序?使用它们的整数值或它们在字母表中的字符顺序?即使我认为在sting版本中使用ASCII值[51,51+48,51+52,53,57]如何在字典中对字符串进行排序?使用它们的整数值或它们在字母表中的字符顺序?因此字符串一次严格比较一位数字?即忽略前导数字?只要前一位数字不同,字符串一次严格比较一位数字?即忽略前导数字?只要前一位数字不同这是不同的
String[] numstoString = new String[nums.length];
for(int i=0;i<nums.length;i++){
    numstoString[i] = Integer.toString(nums[i]);
}

Arrays.sort(numstoString);
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));        
System.out.println(Arrays.toString(numstoString));