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]=“任意”代码>不被禁止!这是一个很好的建议,让我检查一下。我想我发现了问题——代码的其他部分正在修改数组,因为数组不是最终的,所以它会被更改。这就是为什么本地副本保持有序,因为无法访问它。