`
文章列表

Double Integer

                    Double d=2.0; Double d1=2.0; Double d2=3.0; Double d3=1111.0; System.out.println(d==d1);//false Integer i=1; Integer i1=1; Integer i2=new Integer(1111);// System.out.println(i==i1);//true 要搞清为什么这么输出,得看字节码 ...
字符串是Java程序中最常用的一种数据结构之一。在Java中的String类已经重载的"+"。也就是说,字符串可以直接使用"+"进行连接,如下面代码所示: String s = "abc" + "ddd"; 但这样做真的好吗?当然,这个问题不能简单地回答yes or no。要根据具体情况来定。在Java中提供了一个StringBuilder类(这个类只在J2SE5及以上版本提供,以前的版本使用StringBuffer类),这个类也可以起到"+"的作用。那么我们应该用哪个呢? 下面让 ...
   凡是需要被序列化的对象,均需要 直接或间接地 实现java.io.Serializable接口; 并且,该对象所持有的其他对象也需要 直接或间接地 实现java.io.Serializable接口; 否则将引起异常或不能正确地反序列化。 ArrayList也实现了序列化 public static void main(String[] args) { // TODO Auto-generated method stub File f=new File("d:\\user.tmp"); if(f.exists()){ ...
浅clone复制的是栈的内容,如果你复制对象中存在对其他对象的引用,它只是复制那个引用,而不会去复制引用指向的对象。 也就是如果a是b的浅clone对象,那么你修改a之内的对象的引用,就会造成b的变化,因为他们都指向同一个对象。 深clone就是彻彻底底的做了一个新对象,a,b完全独立。 /** * @(#)DeepClone.java * * * @author leo * @version 1.00 2008/3/10 */ import java.io.Serializable; import java.io.IOException; import jav ...
先看下基础知识 public class Variable{ static int allClicks=0;//类变量 String str="hello world";//实例变量\个人认为 当创建实例时 初始化之前进行初始化赋值!然后初始化如果有明文赋值,进行赋值!! public void method ...
Class c = Class.forName(args[0],true,off.getClass();.getClassLoader(););; 可查看API............... Class.for(str,true...) 是在装载的时候也进行连接和初始化!! 这时装载的类,其实也进行了初始化! 而Static静态初始化语句是在初始化的时候执行 ...
Java内存分配: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 3. 堆:存放用new产生的数据 4. 静态域:存放在对象中用static定义的静态成员 5. 常量池:存 ...
简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相等 注意,如果要把一个对象放入HashSet中,重写该对象对应类的equals方法,也应该重写其hashCode()方法。其规则是如果两个对象通过equals方法比较返回true时,其hashCode也应该相同。另外,对象中用作equals比较标准的属性,都应该用来计算hashCode的值。 看下面的例子! hashSetSorted hss3=new hashSetSorted(3,"a"); ...
    一列键值对数据,存储在一个table中,如何通过数据的关键字快速查找相应值呢?不要告诉我一个个拿出来比较key啊。     大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的。     具体如何做呢?大家是否有注意到前面说的话:“数组可以通过下标直接定位到相应的空间”,对就是这句,哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储 ...
public class TestJoin { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Thread t1=new Thread(){public void run(){System.out.println("t1 is running");thread2();}}; t1.start(); try { t1.join(); } catch ( ...
引用先看一个程序 package Thread; import java.util.LinkedList; import java.util.List; public abstract class Workquery { private final List<Object> query=new LinkedList<Object>(); private boolean stopped=false; protected Workquery() { System.out.println("workquery。。 ...
作用域       当前类       同一package       子孙类       其他package           public         √               √                           √               √           protected   √               √             ...
java中内存分配策略及堆和栈的比较 java中内存分配策略及堆和栈的比较 2.1 内存分配策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求. 栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的 ...

关于hashcode

在帖子上搜了下,发现 String类的hashcode很特殊! String类中的hashCode实现: // s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] public int hashCode() { int h = hash; if (h == 0) { int off = offset; char val[] = value ...
public class student { private String name; private int age; public student(String name,int age) { this.name=name; this.age=age; } public int hashCode() { //这里随便写,只要是按属性生成的即可 ...
Global site tag (gtag.js) - Google Analytics