1、集合
当向集合Set中增加对象时,首先集合计算要增加对象的hashcode,根据该值得到一个位置用来存放当前的对象,当在该位置没有一个对象存在的时候,集合set认为该对象在集合中不存在,直接增加进去。如果在该位置有一个对象存在,接着将准备增加到集合中的的对象与该位置上的对象进行equals比较,若返回false,在进行一次散列,将该对象放到散列后计算出的新地址。若返回true,不会再将该对象增加到集合中
2、当重写equals方法时,必须要重写hashcode方法
如果一个类的两个对象,使用equa...
分类:
编程语言 时间:
2014-06-04 21:49:17
阅读次数:
313
【1】以下关于 JVM 的叙述,哪些项正确?
A.JVM 运行于操作系统之上,它依赖于操作系统
B.JVM 运行于操作系统之上,它与操作系统无关
C.JVM 支持 Java 程序运行,它能够直接运行 Java 字节码文件
D.JVM 支持 Java 程序运行,它能够直接运行 Java 源代码文件
扩展名为.java的是源代码文件(文本文件):开发时编写代码的文件
扩展名为.cla...
分类:
编程语言 时间:
2014-06-04 21:43:32
阅读次数:
398
静态的属性、方法等属于类而不是对象。
静态的方法可以由类直接调用,不需要将类实例化。
本篇主要说明:静态的代码、成员变量要比构造方法先执行。
子类的构造方法会默认去调用父类的不带参数的构造方法,如果父类不提供不带参数的构造方法,则子类的构造方法要显示使用super(param),去调用父类的带参数的构造方法...
分类:
编程语言 时间:
2014-06-03 05:58:51
阅读次数:
331
请问ArrayList、LinkedList、Vector的区别
①ArrayList底层实际上是采用数组实现的(并且该数组的类型的Object类型的)
②如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度时候)
③List list = newArrayList()时,底层会生成一个长度为10的数组来存放对象
④ArrayList、Vector底层都是采用数组实现的
⑤对于ArrayLis...
分类:
编程语言 时间:
2014-06-03 04:20:31
阅读次数:
304
最近需要测试一个长连接服务器,数据上需要达到100W的长连接,测试的客户端,一个线程保持一个连接,发现linux服务器默认创建到3200多个线程的时候,就会报错这个错误“java.lang.OutOfMemoryError: unable to create new native thread。而且,此时整个系统都不能创新新的线程了,不能连接终端,不能执行任何命令。
貌似是内存不足,但实际内存尚...
分类:
编程语言 时间:
2014-06-03 03:30:58
阅读次数:
285
代码编译器:代码:编译就是讲一种代码编译成计算机可以理解的指令。 =====================================================================================================java的重排序:(JVM通过偏...
分类:
编程语言 时间:
2014-06-02 20:59:57
阅读次数:
278
JDK(Java Development
Kit)是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK作为JAVA开发的环境,不管是做JAVA开发还是做安卓开发,都必须在电脑上安装JDK。在安装完jdk后,还需要对jdk的环境变量进行配置才能正常使用。
分类:
其他好文 时间:
2014-06-02 20:36:49
阅读次数:
264
JavaLearningPath(一)、工具篇一、JDK(JavaDevelopmentKit)JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的J...
分类:
编程语言 时间:
2014-06-02 13:42:22
阅读次数:
325
首先说一下我个人的认识吧,我觉得高手应该是这样的:
(1)精通Java基础知识与基础理论,熟悉JDK的发展史。
(2)熟悉JVM,熟悉内存调试
(3)深刻理解Java的线程与并发包,以及背后的内存实现原理
(4)精通eclipse的使用,明白其中的插件的开发原理。深刻理解findbugs的缺陷模式。
(5)熟悉SSH框架,并对源代码有足够的兴趣和研究。
(6)熟悉数据缓存的原理与实现,...
分类:
编程语言 时间:
2014-06-01 17:19:11
阅读次数:
332
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerExcept...
分类:
编程语言 时间:
2014-06-01 09:13:59
阅读次数:
324