今天在公司主要熟悉表中字段的业务,鉴于暂时没有完全掌握,来说说在技术上对Java的一些补充。首先是Java中equals()和的区别,equals()和要分对象来比较。
第一,如果是基本数据类型byte,short,char,int,long,float,double,boolean,他们的比较只能有==来进行。

    public class Fengkuan1 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
    int int1=1;
    byte byte1=1;
    long long1=1;
    boolean boolean1=true;
    boolean boolean2=false;


	System.out.print(int1==byte1);

	System.out.print(int1==long1);
	
	System.out.print(boolean1==boolean2);
	

}

}

第二,如果比较的Object对象也是没有区别的,equals()和==都比较的是地址值。

     public class Fengkuan2 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
    Object obj1="ad";
    Object obj2="ad";


	System.out.print(obj1==obj2);
	
	System.out.print(obj1.equals(obj2));

	
}

}
既然比较的是地址值,那么为什么是相同的呢,以为在Java的JVM里面有一个缓冲池,只要没有新开辟内存空间,在缓冲池里面有的,那么他们的地址值都相同。

第三,如果是Sring类或者其他继承Object类,然后改写了里面equals()方法,那么情况就不同了。

    public class Fengkuan {
public static void main(String[] arg)
{
	String str1="Object";   //1
	String str2="Object"; //2
	String str3=new String("Object");   //3
	
	System.out.print(str1==str2);
	
	System.out.print(str1.equals(str2));
	
	System.out.print(str1==str3);
	
	System.out.print(str1.equals(str3));
	
}

}
结果是true true false ture。
第一个true很好理解,第二个true就不好理解了。为什么呢,因为String方法重写了equals(),那么比较的不再是地址值了,而是地址值里面的内容,地址值里面内容相同就行,第三个比较的是地址值,新开辟的地址值肯定不一样。第四个比较的是内容,内容一样就行了。