`
firecym
  • 浏览: 46993 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

== 和 equals 到底有何不同 (一)

 
阅读更多

Java程序中测试两个变量是否相等,有两种方法,一种是“==”,一种是“equals”。

 

首先介绍一下“==”

 

当使用“==”来判断两个变量是否相等时,如果两个变量是基本类型的变量,那么只要两个变量的值相等,就返回true。

如果是两个引用类型的变量,那么这两个变量必须指向同一个对象时,才返回true,而且,“==”不能比较类型上没有父子关系的两个对象。这是理论知识,下面给个例子,来做进一步解释。

public static void main(String[] args) {
		int value1 = 65;
		float value2 = 65.0f;
		double value3 = 65.0d;
		char value4 = 'A';
		System.out.println(value1 == value2);
		System.out.println(value2 == value3);
		System.out.println(value1 == value3);
		System.out.println(value1 == value4);
		System.out.println(value2 == value4);
	}

 打印结果:

true
true
true
true
true

 

char也是基本数据类型,'A' 的ASCII码为65,所以int型和它比较值是相等的。这是很简单的例子,就不做进一步解释。

 

再看下面代码:

public static void main(String[] args) {
		Persion p1 = new Persion();
		Persion p2 = p1;
		Persion p3 = new Persion();

		System.out.println(p1 == p2);
		System.out.println(p1 == p3);
	}

 Persion是我自己建的一个类,先抛开它有哪些内容不管。上面打印的结果为:

true
false

 

p1是new出来的,所以会在内存开辟一段空间来存放它,而Persion p2 = p1 的意思是将p1指向的内存区地址赋值给了p2,实际上他们两个指向的是同一块内存区域,即同一个对象。所以他们两个是相等的,返回的是true。而p3也是new出来的,但是它在内存的其他地方存储它。所以它俩比较返回false。

 

下面做一个测试来证明p1和p2的相同性。

public static void main(String[] args) {
		Persion p1 = new Persion();
		p1.setFirstname("Fire");//用p1设置firstname
		System.out.println(p1.getFirstname());//第一次打印p1的firstname
		Persion p2 = p1;
		p2.setFirstname("Water");//用p2设置firstname
		System.out.println(p1.getFirstname());//第二次打印p1的firstname
	}

 打印结果为:

Fire
Water

 

明白了吧?

分享到:
评论
1 楼 colin1210 2010-08-11  
通俗易懂,理解!

相关推荐

    java 面对对象编程.pdf.zip

    对象实体与对象引用有何不同? 对象的相等和引用相等的区别 类的构造方法的作用是什么? 如果一个类没有声明构造方法,该程序能正确执行吗? 构造方法有哪些特点?是否可被 override? 面向对象三大特征 封装 继承 多态 ...

    Java问题宝典2012版

    11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....

    java 面试常问的问题 如何回答

    11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....

    基础Java面试题,适合校招的面试笔试环节.doc

    - **问题**: `==`操作符与`equals`方法有何不同? - **解答**: `==`操作符比较的是两个对象的引用是否相等,即它们是否指向内存中的同一地址。而`equals`方法用于比较两个对象的内容是否相等。默认情况下,`equals`...

    java面试宝典2012版.pdf

    11、"=="和equals方法究竟有什么区别? 12、静态变量和实例变量的区别? 13、是否可以从一个static方法内部发出对非static方法的调用? 14、Integer与int的区别 15、Math.round(11.5)等於多少? Math.round(-11.5)等...

    变态级JAVA程序员面试32问

     第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。  第四,&和&&的区别。  第五,HashMap和Hashtable的区别。  第六,Collection 和 Collections的区别。  第七,什么...

    优质资源汇总【更新ing...】

    应用程序和小程序的主类有何不同? Java 程序的主类是程序的入口点,应用程序和小程序的主类不同,在应用程序中,主类是程序的入口点,而在小程序中,主类是小程序的入口点。 Java 应用程序与小程序之间有哪些差别...

    Java面试宝典 Java面试宝典

    11. "=="和equals方法究竟有什么区别? 答:"=="比较的是对象的引用地址,而equals方法比较的是对象的实际值。 12. 静态变量和实例变量的区别? 答:静态变量属于类,实例变量属于对象。 13. 是否可以从一个static...

    java面试宝典

    180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出...

    net学习笔记及其他代码应用

    44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:不对,有相同的hash code。 45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答:switch(expr1...

    最新Java面试宝典pdf版

    17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...

    JAVA面试题 对JAVA面试有帮助!

     第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼统)。  第四,&和&&的区别。  这个问得很少。  第五,HashMap和Hashtable的区别。  常问。  第六,Collection和Collections...

    超级有影响力霸气的Java面试题大全文档

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception有什么区别?  error 表示恢复...

    JAVA程序员面试32问

    #### 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对? - 如果`x.equals(y)`为`true`,根据`equals()`和`hashCode()`的一致性原则,它们应当具有相同的哈希码。但是,...

    Java面试宝典-经典

    17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...

    java面试题大全(2012版)

    17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...

    Java面试宝典2012版

    17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个...

    java面试宝典2012

    17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 98 18、MVC的各个部分都有那些技术来实现?如何实现? 98 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...

Global site tag (gtag.js) - Google Analytics