`

《JDK6学习笔记》中关于BinarySearchDemo的理解

    博客分类:
  • Java
阅读更多

《JDK6学习笔记》p524页的BinarySearchDemo有这么一句,System.out.printf("插入点 %d %n", (result + 1) * -1),第一次看到的时候没有理解,为什么插入点的位置就是(result+1)*-1呢,后来查阅JDK文档中关于binarySearch方法的使用,才知道,如果在涉及的有序数组中没有key,则返回-(insert point)-1,而insert point就是插入的位置,如果数组第一个元素的索引值大于key(比如key=-3),而且key如果比数组的每个元素值都大,则返回-1,或者如果数组的所有元素都比key小,则返回数组的length,那么(result + 1) * -1应该写成-(result)-1更好理解,那么根据林先生对数组索引的解释,即数组索引是对数组第一个元素位置的“offset”,比如a[0]的位置表示相对第一个元素位置偏移量为0,a[1]位置偏移量为1,而如果result为负值的话,result相对于0偏移则为result+1,比如-9相对于0偏移是8而不是9,因为数组是从0开始下标的,而不是从1开始下标的,理解了这点就不难理解林先生为什么要写成(result + 1) * -1了,BinarySearchDemo源代码如下:

package cn.edu.xbmu.lib.jfly.test;

import java.util.Arrays;

/**
 *
 * @author Administrator
 */
public class BinarySearchDemo {

    public static void main(String[] args) {
        int[] arr1 = {10, 20, 30, 40, 50, 60, 70, 80, 90};
        int result = Arrays.binarySearch(arr1, 6, 9, 85);

        if (result > -1) {
            System.out.printf("索引 %d 处找到数据%n", result);
        } else {
            System.out.printf("result的值为 %d %n", result);
            System.out.printf("插入点 %d %n", (result + 1) * -1);
            // binarySearch的JavaDoc中说,该方法返回的是key的位置,如果找不到到key,
        // 返回值为-(insert point)-1,这个值必定小于-1,那么找到的话必定大于-1,这就是用result > -1判断的原因
        }
    }
}

 

 

分享到:
评论

相关推荐

    JavaJDK6学习笔记(林信良著)

    《Java JDK6学习笔记》是由林信良编著的一本针对Java初学者和进阶者的学习资料,书中详细讲解了Java编程语言与JDK6版本的相关知识。这本笔记不仅包含传统的Java学习内容,还结合了作者独特的见解和实践经验,为读者...

    JAVA JDK6学习笔记

    Java JDK6学习笔记是针对Java编程语言初学者和进阶者的一份宝贵资源,它涵盖了Java的基础语法,并通过经典且易于理解的实例进行讲解。在本文中,我们将深入探讨Java JDK6中的关键概念和特性,以帮助你更好地理解和...

    Java+JDK6学习笔记

    本篇将围绕“Java+JDK6学习笔记”展开,探讨在JDK6环境下Java编程的核心知识点。 1. **JDK6概述**:JDK6是Oracle公司于2006年发布的Java平台标准版(Java SE)的一个重要版本,它的全称是Java SE 6,带来了许多新...

    Java JDK 7学习笔记 PDF

    Java JDK 7是Java开发工具包的一个重要版本,它的全称是Java Development Kit,是用于构建和运行Java应用程序的关键组件。...通过这份PDF学习笔记,读者将能深入理解JDK 7的新特性,并能将其应用到实际项目中。

    Java JDK 6学习笔记.zip

    这个压缩包“Java JDK 6学习笔记.zip”显然是一个包含有关Java JDK 6深入学习资源的集合,可能是PDF文档、笔记或者其他形式的教学材料。 在Java JDK 6中,有几个关键的特性值得我们关注: 1. **改进的性能**:JDK ...

    《Java JDK6学习笔记》

    Java、JDK6、良葛、林信良、Java学习笔记 我没看到实体书,不知是否相同, 近些日学习一下ruby方面的,顺便看看java方面的, 这个是Java JDK6的学习笔记电子版, 压缩包里包含两个文件, 一个是chm格式(这个还行吧)...

    Java JDK 7学习笔记.pdf

    Java JDK 7学习笔记 此学习笔记适合初学者完成学习总结,加深理解 Java JDK 7学习笔记 此学习笔记适合初学者完成学习总结,加深理解

    良葛格java jdk 5.0学习笔记

    良葛格java jdk 5.0学习笔记,良葛格java jdk 5.0学习笔记.zip,良葛格java jdk 5.0学习笔记.zip,良葛格java jdk 5.0学习笔记.zip,良葛格java jdk 5.0学习笔记.zip,良葛格java jdk 5.0学习笔记.zip。

    《Java JDK 6 学习笔记》配书示例

    《Java JDK 6 学习笔记》这本书很可能是为了帮助读者深入理解和掌握这个版本的Java编程语言及其开发环境。以下是一些关键知识点的详细说明: 1. **自动装箱与拆箱**:Java 6中引入了自动装箱和拆箱功能,使得基本...

    Java JDK 6学习笔记_pdf版(附课本代码)

    这份“Java JDK 6学习笔记”涵盖了从基础到高级的各种主题,是Java初学者和进阶者的重要参考资料。以下是笔记中可能包含的一些关键知识点: 1. **安装与配置**:介绍如何在不同操作系统(如Windows、Linux和Mac OS...

    Java+JDK6学习笔记.pdf

    ### Java+JDK6 学习笔记精要 #### 一、Java概览与起源 Java,由Sun Microsystems公司的James Gosling在Green Project项目中创建,最初命名来源于他窗户外的一棵橡树(Oak)。随着全球信息网的兴起,Java Applet成为...

    Java+JDK6学习笔记(PDF版书籍,免费下载)

    ### Java+JDK6学习笔记知识点详解 #### 一、Java简介 - **起源与历史:** - 最初由Sun公司的Green Project发起,旨在创建一个名为Star7的应用程序编程语言。 - 名称来源于创始人James Gosling窗外的一棵橡树...

    java jdk6学习笔记

    本书门槛很低,只要您了解Windows...基础,甚至没有接触过Java,都可以通过本书扎扎实实地学习Java。而对 于一些曾经学习过JaVa,但概念和基础仍不扎实的读者,本书也准备了一 些面向对象的观点与进阶的议题可供参考

    JAVA JDK6 学习笔记

    "Java JDK6 学习笔记"作为一份参考资料,可能包含了关于这些特性和改进的详细解释,以及如何在实际编程中应用它们的实例。通过这份笔记,你可以深入理解JDK6的核心概念,掌握如何利用新特性优化代码,提高开发效率。...

    Java JDK 6学习笔记(PPT)

    Java JDK 6学习笔记 配套简体PPT 包含热卖书籍《Java JDK 6学习笔记》的精华内容。 此课件在手,可以剩下买书的钱哦。 最新的JDK6的资料。一定要下来看看哦。 里面有21章PPT,内容充实,例子多。 ...

    java JDK 8学习笔记

    本学习笔记旨在深入解析JDK 8的关键特性,帮助初学者快速掌握这一版本的核心知识。 1. **lambda表达式**:JDK 8引入了lambda表达式,简化了函数式编程。它允许将匿名函数作为方法参数,或者用作方法返回值。Lambda...

    java学习笔记 JDK6 附代码

    本"java学习笔记 JDK6 附代码"资料包是针对初学者设计的,旨在帮助那些已经有C语言基础的学习者快速掌握Java编程。C语言的语法结构和基础概念与Java有共通之处,因此对于熟悉C的人来说,学习Java会相对容易一些。 ...

    林信良 jdk6 java学习笔记

    《林信良 jdk6 java学习笔记》是一本专注于Java编程语言的学习资料,特别针对Java Development Kit (JDK) 6版本进行了深入讲解。作者林信良是一位在Java领域有深厚造诣的专业人士,他的这部作品旨在帮助读者掌握Java...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记是为Java初学者量身定制的一份宝贵资料,它涵盖了Java编程的基础概念、语法以及核心特性。这份PPT简体版旨在帮助读者快速掌握Java开发的基本技能,逐步成为一名合格的Java程序员。 Java JDK...

    Java JDK 7学习笔记源代码

    《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

Global site tag (gtag.js) - Google Analytics