JAVA程序设计 第5章 深入理解JAVA语言----补充
5.7 相等还是不等 == 简单地说,基本类型是值相等,引用类型是引用相等 但有不少的具体情况具体分析: 基本类型 数值类型:转换后比较 浮点数,最好不直接用== Double.NAN==Double.NAN 结果为false boolean型无法与int相比较
装箱对象 注意缓存 If the value p being boxed is true, false, a byte, or a char in the range \u0000 to \u007f, or an int or short number between -128 and 127 (inclusive), then let r1 and r2 be the results of any two boxing conversions of p. It is always the case that r1 == r2. Integer i = new Integer(10); Integer j = new Integer(10); System.out.println(i==j); //false,因为对象是两个 Integer m = 10; Integer n = 10; System.out.println(m==n); //true,因为对象有缓存 Integer p = 200; Integer q = 200; System.out.println(p==q); //false,因为对象是两个
枚举类型 引用对象 String对象 内部进行了惟一实例化,所以可以直接判断 是直接看两个引用是否一样 如果要判断内容是否一样,则要重写equals方法 如果重写equals方法,则最好重写 hashCode()方法 String对象 判断相等,一定不要用==,要用equals 但是字符串常量( String literal)及字符串常量会进行内部化(interned),相同的字符串常量是==的
5.8 没有指针的java语言 引用实质就是指针,只是受控、安全而已 比如 不能访问没有引用到的内存 会检查空指引 没有指针运算 *(p+5) 不能访问没有引用到的内存 自动回收垃圾
C语言指针的应用在Java中的体现 (1)传地址 对象 (2)指针运算 数组 (3)函数指针 接口 (1)传地址 对象 引用类型,引用本身就相当于指针 可以用来修改对象的属性、调用对象的方法 基本类型:没用对应的 如交换两个整数 一种变通的办法,传出一个有两个分量x,y的对象 (2)指针运算 数组 *(p+5) 则可以用 args[5] (3)函数指针 接口 例:求积分,线程 、回调函数、事件处理
(3)指向结点的指针 对象的引用 例List.java实现链表 class Node { } Object data; (3)指向结点的指针 对象的引用 class Node { Object data; Node next; } 例List.java实现链表