java.util.Arrays在对double[]数组排序的源码,调用sort2(double[],int,int),具体如下:
private static void sort2(double a[], int fromIndex, int toIndex) {
final long NEG_ZERO_BITS = Double.doubleToLongBits(-0.0d);
/*
* The sort is done in three phases to avoid the expense of using NaN
* and -0.0 aware comparisons during the main sort.
*/
/*
* Preprocessing phase: Move any NaN's to end of array, count the number
* of -0.0's, and turn them into 0.0's.
*/
int numNegZeros = 0;
int i = fromIndex, n = toIndex;
while (i < n) {
if (a[i] != a[i]) {
double swap = a[i];
a[i] = a[--n];
a[n] = swap;
System.err.println(a);
} else {
if (a[i] == 0 && Double.doubleToLongBits(a[i]) == NEG_ZERO_BITS) {
a[i] = 0.0d;
numNegZeros++;
System.err.println(a);
}
i++;
}
}
//下面的就省略了~
}
对于
if (a[i] != a[i]) {}
请问此处的在哪种特殊情况下才能进入?求个例子。
谢谢。