Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串[]常量是否自动排序?如何保持索引顺序?_Java_Arrays - Fatal编程技术网

Java 字符串[]常量是否自动排序?如何保持索引顺序?

Java 字符串[]常量是否自动排序?如何保持索引顺序?,java,arrays,Java,Arrays,我有分隔符的字符串[] private static final String[] LEFT_DELIMITER = { "PUT", "CALL", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" }; 当我使用一个好的旧for循环遍历这个字符串[]时,索引0处的条目是JAN而不是PUT。但是,如果我在使用它的方法中声明字符串[] String[]

我有分隔符的字符串[]

private static final String[] LEFT_DELIMITER = {
    "PUT", "CALL",
    "JAN", "FEB", "MAR", "APR", "MAY", "JUN", 
    "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
};
当我使用一个好的旧for循环遍历这个字符串[]时,索引0处的条目是JAN而不是PUT。但是,如果我在使用它的方法中声明字符串[]

String[] delim = {
    "PUT", "CALL",
    "JAN", "FEB", "MAR", "APR", "MAY", "JUN", 
    "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
};
索引0处的结果按预期放置


为什么一个按日历月排序,另一个不按日历月排序?我只想让数组在我放置项目的地方维护它们。有没有办法把它作为一个常数

我不这么认为。当我读到这个问题时,我真的很震惊,但是一个快速的单元测试证明了一切都是好的

import org.junit.Assert;

public class Test {

    private static final String[] LEFT_DELIMITER = {
            "PUT", "CALL",
            "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
            "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
    };

    @org.junit.Test
    public void test() {
        String[] delim = {
                "PUT", "CALL",
                "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
                "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
        };

        for (int i = 0; i < LEFT_DELIMITER.length; i++) {
            Assert.assertEquals(LEFT_DELIMITER[i], delim[i]);
        }
    }
}
import org.junit.Assert;
公开课考试{
私有静态最终字符串[]左分隔符={
"放","叫",,
“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
};
@org.junit.Test
公开无效测试(){
字符串[]delim={
"放","叫",,
“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
};
for(int i=0;i

您是否100%确定您编写的代码最终会出现在编译的类文件中?我假设您认为您运行的是特定的代码,但实际上运行的是不同的代码—可能是旧版本?

无法重现该问题…发布整个循环。至少可以说,你所描述的是出乎意料的。^这里也一样。它对我来说很好,JDK1.7IntelliJ。数组不会自动排序。你对你所做的事情的描述一定是错的。发布代码。可能是因为数组的
final
比您预期的要少<代码>左分隔符[0]=“任意”不被禁止!这是一个很好的建议,让我检查一下。我想我发现了问题——代码的其他部分正在修改数组,因为数组不是最终的,所以它会被更改。这就是为什么本地副本保持有序,因为无法访问它。