Java Arrays binarySearch

ab_*_*v86 2 java arrays binary-search

好的伙伴在这里是我的简单代码,我在其中构建一个String数组并尝试搜索此数组中的字符串:

String[] arr = new String[5];
arr[0] = "ccc";
arr[1] = "aaa";
arr[2] = "bbb";
arr[3] = "eee";
arr[4] = "ddd";

System.out.println(Arrays.binarySearch(arr,"eee"));
Run Code Online (Sandbox Code Playgroud)

直接来自Java 6 binarySearch文档:"在进行此调用之前必须对数组进行排序.如果未对其进行排序,则结果未定义"!

实际上我运行我的代码几次得到输出总是3这是我的NOT SORTED数组中的eee的位置,但结果似乎没有"未定义",如文档所述.

我错过了什么?

谢谢

Oli*_*rth 8

"未定义"并不意味着"肯定会给你错误的结果",或"肯定会崩溃".


Nay*_*uki 5

当我们谈论一段代码将如何表现时,术语"未定义"意味着程序执行可以执行以下任何操作:

  • 回答错误的答案
  • 永远循环
  • 马上崩溃
  • 损坏一些数据并导致崩溃
  • 做其他事情是无意的(例如擦除你的硬盘)
  • 幸运的是,回答正确的答案

作为程序员的建议,不要调用未定义的行为,因为现在或以后任何事情都可能发生,无论好坏.