- 浏览: 140984 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
nishwd123:
受益匪浅,多谢楼主细心讲解.
Hibernate、Spring和Struts工作原理及使用理由 -
doublelcf:
写得真好。全面,流畅。清晰
Hibernate、Spring和Struts工作原理及使用理由
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。
如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
boolean equals(Object o){
return this==o;
}
这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。
如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
boolean equals(Object o){
return this==o;
}
这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
发表评论
-
Java中serialVersionUID
2012-11-26 13:27 866Java中serialVersionUID serialV ... -
ArrayList数组对象排序
2012-11-13 21:53 1448POJO package com.test.compara ... -
Java堆和栈的区别 equals 和 == 的区别
2012-11-07 12:10 830Java堆和栈的区别 equals ... -
Cookie,Session,Application用法及区别
2012-05-22 15:20 2844一.Cookie 首先,Cookie的作用域为 ... -
static 的用法
2012-05-22 13:58 913static 代码块应用 package com.ut ... -
finally解析
2012-05-22 13:47 967一.finally 中的语句什么 ... -
java 断言 assert 初步使用:断言开启、断言使用
2012-05-04 20:43 1556java 断言 assert 初步使用:断言开启、断言使用 ... -
java 定时任务实现
2012-04-05 22:41 3691java.util.Timer定时器,实际上是个线程,定时调度 ... -
Servlet上传文件,commons-fileupload
2012-03-02 11:17 4839Servlet上传文件,commons-fil ... -
堆与栈的区别
2012-02-24 11:58 960堆和栈的区别 全局,静态,new产生的变量都在堆中动态分 ... -
在Java中用单例模式有什么好处
2012-01-30 19:46 1340Java Singleton模式主要作 ... -
JAVA单例模式的几种实现方法
2012-01-30 19:41 9021 饿汉式单例类.在类初始化时,已经自行实例化 clas ... -
jsp中的注释<!-- -->内容中不能包含--
2011-11-23 17:45 920jsp中的注释<!-- -->内容中不能包含-- ... -
ibatis和hibernate的区别
2011-08-15 13:34 649ibatis和hibernate的区别 ... -
java中的重写与重载
2011-02-21 13:59 899方法的重写Overriding和重载Overloading是J ... -
MyEclipse生成WAR包并在Tomcat下部署发布
2011-02-18 22:56 2286右键选中项目,选择export。 然后选择J2EE-> ... -
JPA详解
2011-02-17 08:54 2036JPA全称Java Persistence API.JPA通过 ... -
comparable和comparator的区别
2011-02-16 17:59 1231两者区别: 1) Comparable接 ... -
Freemarker网站静态化实现
2011-02-15 14:26 1072转载自http://www.iteye.com/topic/4 ... -
jdk1.5之后新特性总结
2011-02-15 12:17 1021前两天 面试的时候面试官突然问我jdk1.5之后的 ...
相关推荐
1.“==”和Equals两个真的有关联吗? 对于“==”和Equals大多数网友都是这样总结的: “==” 是比较两个变量的值相等。 Equals是比较两个变量是否指向同一个对象。 public class Person { public ...
在C#编程语言中,`==`运算符和`Equals()`方法是两种常见的用于比较对象是否相等的方式,但它们之间存在重要的区别。本文将详细解释这两种比较方式的不同点。 首先,`==`运算符主要用于比较基本数据类型的值是否相等...
在Java中,正确实现`equals()`和`hashCode()`方法对于保证程序的逻辑正确性和性能至关重要。开发者需要确保这两个方法的一致性和效率,特别是在自定义类时,更要注意遵循上述提到的原则。只有这样,才能充分利用Java...
### JSP安全编程实例浅析 #### 一、引言 在现代Web开发中,JavaServer Pages (JSP)作为一种动态网页技术被广泛应用于构建复杂的企业级应用。然而,随着互联网的发展,各种针对Web应用程序的安全威胁也日益增多。...
### Java学习教程:Java中Number类浅析 #### 一、概述 在Java语言中,`Number`类是一个抽象类,所有的基本数据类型的包装类(如`Integer`、`Long`、`Byte`、`Double`、`Float`、`Short`等)都是它的子类。`Number`...
在C#编程语言中,Equality和Identity是两个重要的概念,它们用于判断对象之间的关系。 Equality关注的是对象的值,而...在处理自定义类型时,尤其需要注意提供正确的`Equals`和`==`实现,以确保代码的正确性和效率。
本文将深入浅析Spring AOP在权限管理中的应用,结合标签"源码"和"工具",我们将探讨如何利用Spring AOP实现精细的权限控制,并通过具体的代码示例来理解这一过程。 Spring AOP(Aspect Oriented Programming)是...
Spring Boot 自动配置之条件注解浅析 Spring Boot 提供了自动配置的机制,通过大量的条件注解来实现自动化配置。条件注解是指在特定条件下创建特定的Bean,例如,在某些系统变量下创建Bean,或者只有在某个Bean创建...
本篇文章将深入探讨两种常见的设计模式:单例模式和简单工厂模式。 首先,单例模式是一种限制类实例化的模式,确保在整个应用程序中只有一个实例存在。其核心动机是控制共享资源的访问,例如日志记录器或者数据库...
在本文中,我们将深入探讨几种不同的方法来完成这个任务,并分析它们的效率和适用场景。 首先,让我们来看看四种常见的方式来判断字符串是否为空: 1. 使用`str == null`: 这种方法检查字符串变量是否为`null`,...
6. **重写hashCode()和equals()**:当向HashSet中添加自定义类型的对象时,必须重写这两个方法,以确保对象的唯一性和比较逻辑。否则,HashSet可能无法正确识别重复的元素。 7. **线程安全性**:默认情况下,...
Java 类和数据结构是编程中不可或缺的基础,它们构成了程序的核心逻辑和数据管理方式。下面将详细解析Java中类、对象以及常用数据结构如List、Set、Map等的相关方法。 1. **Object类**是所有Java类的根类,它定义了...
if (result.equals(ticketFlag)) { System.out.println("订票失败"); } else { System.out.println("订票后的结果:" + result); // 退票 String b = buildTicket(ticketFlag.length(), beginStation, end...
众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8 中具体实现稍有不同。 Base 1.7 1.7 中的数据结构图: 先来看看 1.7 中的实现。 这是 HashMap 中比较核心的几个成员变量;看看分别是...
总的来说,Lambda表达式是Java 8中一个重要的新特性,它推动了Java向函数式编程的转变,提高了代码的简洁性和可读性,降低了处理回调和事件驱动编程的复杂度。在实际开发中,熟练掌握Lambda表达式能显著提升开发效率...
if (secSender.equals(sender)) { switch (body) { case "#*alarm*#": // 播放报警音乐 MediaPlayer mp = MediaPlayer.create(context, R.raw.alarm); mp.start(); abortBroadcast(); break; // 其他指令...