解决方案 »
- jxl.jar创建Excel的问题,Validation list exceeds maximum number characters - truncating
- java调用打印机打印问题求解
- jmf 播放web音乐问题
- 请问大家个共通方法问题
- 到底 TOMCAT 与 WEBLOGIC 有什么不同? TOMCAT 难道不能用来做 EJB 服务吗?
- 有人想来上海吗?
- 一个消息驱动bean客户端程序的问题。急!!
- jsp连接SQLserver2000出错!
- hibernate懒加载问题
- 谁有cvs(for NT)与jb配合的版本控制详细使用说明???
- eclipse无法连接oracle
- IOException: Async IO operation failed (1), reason: RC: 32
Integer i = new Integer(1);
Integer j = i;
j++;
System.out.println("Integer i is: " + i);
打印的结果仍然是1,而不是2
j和i指向的是同一块内存吧,通过j++的操作为什么不能把i的值加1呢
private final int value; public Integer(int value) {
this.value = value;
} public int hashCode() {
return value;
}
其它类的hashcode方法,例如HashMap中的:
public int hashCode() {
int h = 0;
Iterator<Entry<K,V>> i = entrySet().iterator();
while (i.hasNext())
h += i.next().hashCode();
return h;
}
Thread类中的hashcode方法:
public native int hashCode();ok,hashcode是经过计算后的所谓地址,有些可以可以看得见,有些看不见,但是要知道的是Integer里面就是返回的value的值!
Integer确实是返回了value的值,不过我把Integer向上转型为Object后,它调用的不是Object的hashCode()吗?还是说,仍然调用了Integer的hashCode()?
Integer i = new Integer(1);
Integer j = i;
j++;
System.out.println("Integer i is: " + i);
打印的结果仍然是1,而不是2
j和i指向的是同一块内存吧,通过j++的操作为什么不能把i的值加1呢
j和i指向的根本就不是同一块内存,Integer j = i;表示用i的值去构造j,而不是生命了另一个引用,包装器类跟普通的类在这点上是有本质区别的。
Integer i = new Integer(1);
Integer j = i;
j++;
System.out.println("Integer i is: " + i);
打印的结果仍然是1,而不是2
j和i指向的是同一块内存吧,通过j++的操作为什么不能把i的值加1呢
j和i指向的根本就不是同一块内存,Integer j = i;表示用i的值去构造j,而不是生命了另一个引用,包装器类跟普通的类在这点上是有本质区别的。
哦,这样的话就理解了,还没有完整的明白外覆类的各种特质。谢谢指教~
Integer确实是返回了value的值,不过我把Integer向上转型为Object后,它调用的不是Object的hashCode()吗?还是说,仍然调用了Integer的hashCode()?
对比!
参考一下:http://blog.sina.com.cn/s/blog_4fdb887b0101479q.html
Integer确实是返回了value的值,不过我把Integer向上转型为Object后,它调用的不是Object的hashCode()吗?还是说,仍然调用了Integer的hashCode()?
对比!明白!
谢ganshenml~ 调用Object的hashCode()是我自以为的,实践出真知!
Integer确实是返回了value的值,不过我把Integer向上转型为Object后,它调用的不是Object的hashCode()吗?还是说,仍然调用了Integer的hashCode()?
对比!明白!
谢ganshenml~ 调用Object的hashCode()是我自以为的,实践出真知!嗯嗯!