- 浏览: 1988874 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
java String的equals,intern方法
JAVA中的equals和==的区别 ==比较的是2个对象的地址,而equals比较的是2个对象的内容。 显然,当equals为true时,==不一定为true; 基础知识的重要性,希望引起大家的重视,包括自己在内 很多困惑和疑问而且均来自于最基础的知识 折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟 public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = "Monday"; } } 有什么问题呢? 1. 来自 String 的忧虑 上面这段程序中,到底有几个对象呢? 可能很多人脱口而出:两个,s1 和 s2 为什么? String 是 final 类,它的值不可变。 看起来似乎很有道理,那么来检测一下吧,稍微改动一下程序 就可以看到结果了: public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = "Monday"; if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); } } 呵呵,很多人都会说已经不止两个对象了 编译并运行程序,输出:s1 == s2 啊! 为什么 s1 == s2 ? == 分明是在说:s1 与 s2 引用同一个 String 对象 -- "Monday"! 2. 千变万化的 String 再稍微改动一下程序,会有更奇怪的发现: public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = new String("Monday"); if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); if (s1.equals(s2)) System.out.println("s1 equals s2"); else System.out.println("s1 not equals s2"); } } 我们将 s2 用 new 操作符创建 程序输出: s1 != s2 s1 equals s2 嗯,很明显嘛 s1 s2分别引用了两个"Monday"String对象 可是为什么两段程序不一样呢? 3. 在 String 的游泳池中游泳 哈哈,翻了翻书终于找到了答案: 原来,程序在运行的时候会创建一个字符串缓冲池 当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会 在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被 放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1 将 s2 引用 s1 所引用的对象"Monday" 第二段程序中,使用了 new 操作符,他明白的告诉程序: “我要一个新的!不要旧的!”与是一个新的"Monday"Sting对象被创 建在内存中。他们的值相同,但是位置不同,一个在池中游泳 一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢? 4. 继续潜水 再次更改程序: public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = new String("Monday"); s2 = s2.intern(); if (s1 == s2) System.out.println("s1 == s2"); else System.out.println("s1 != s2"); if (s1.equals(s2)) System.out.println("s1 equals s2"); else System.out.println("s1 not equals s2"); } } 这次加入:s2 = s2.intern(); 哇!程序输出: s1 == s2 s1 equals s2 原来,程序新建了 s2 之后,又用intern()把他打翻在了池里 哈哈,这次 s2 和 s1 有引用了同样的对象了 我们成功的减少了内存的占用 5. == 与 equals() 的争斗 String 是个对象,要对比两个不同的String对象的值是否相同 明显的要用到 equals() 这个方法 可是如果程序里面有那么多的String对象,有那么多次的要用到 equals , 哦,天哪,真慢啊 更好的办法: 把所有的String都intern()到缓冲池去吧 最好在用到new的时候就进行这个操作 String s2 = new String("Monday").intern(); 嗯,大家都在水池里泡着了吗?哈哈 现在我可以无所顾忌的用 == 来比较 String 对象的值了 真是爽啊,又快又方便! 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ameyume/archive/2010/08/16/5815756.aspx
发表评论
-
解决Java服务器端插入数据到Mysql中乱码问题--简单几步轻松解决乱码问题
2015-11-13 17:52 2413当写入数据到mysql数据库中发生乱码时.请检查以下几个地 ... -
设计模式之-代理模式-Proxy
2015-04-28 21:24 867使用代理模式之前需要知道代理模式能做什么? 能有哪些好处以及 ... -
构建高并发、服务化、低耦合企业级脚骨:springmvc+mybatis+restfull+webservice+bootstrap html5
2015-04-14 01:17 85SpringMVC + Mybatis + SpringS ... -
教您搭建大型互联网企业架构:springmvc+mybatis+restful+webservice+quartz+bootstrap
2015-04-13 21:54 99SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restful+webservice+quartz+bootstrap html5
2015-04-13 21:49 81SpringMVC + Mybatis + SpringSe ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:33 83SpringMVC + Mybatis + SpringS ... -
Maven构建大型互联网架构springmvc+mybatis+Restfull+Webservice+Bootstrap
2015-04-12 23:28 71SpringMVC + Mybatis + SpringS ... -
maven构建高大上开源架构:springmvc+mybatis+rest+bootstrap html5
2015-04-12 23:25 23SpringMVC + Mybatis + SpringS ... -
手机App后台架构:Springmvc+SpringSecurity+mybatis+Rest+Quartz+Bootstrap Html5( Maven构建)
2015-04-09 01:39 76APP后台架构Maven构建,模拟大型互联网架构,支持高并发 ... -
maven构建springmvc+mybatis+rest+webservice+bootstrap html5(cms开源项目)
2015-04-09 01:21 85SpringMVC + Mybatis + SpringS ... -
Java正则表达式
2014-11-26 21:03 1217Java正则表达式: package pack.ja ... -
Cannot convert value of type [org.springframework.cache.ehcache.EhCacheCache
2014-11-10 20:03 6243错误信息: [org.springframework.be ... -
Collections工具类中的frequency方法统计单词出现的次数
2013-11-05 21:30 2812最近发现了一个Collections中有一个很好用的方法: ... -
Java 压缩Excel文件生成.zip文件
2013-05-08 22:22 7948首先创建文件目录,然后生成Excel文件到创建的目录下, ... -
Java 解压缩zip文件
2013-05-08 13:14 8348不借助于其他的第三方 ... -
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度
2013-04-06 22:26 57699最近项目中需要用到导出Excel文件,以下是我写了一个通过j ... -
java获取字节的长度.
2012-05-17 22:00 6743我们经常要获取中文,数字,或者英文字符所占字节的长度,下面就列 ... -
StringBuffer-reverse()字符反转功能
2012-05-17 21:42 7091在书上看到一个这样的例子, 采用最简便的方式把一串字符串反转过 ... -
java 打开IE
2012-05-23 22:14 1298Runtime.getRuntime().exec(" ...
相关推荐
本篇复习将重点讨论String类中的`equals()`方法和`==`运算符的区别,这对于理解对象比较和字符串操作至关重要。 首先,`==`运算符在Java中用于比较基本类型(如int、char)的值,而在比较对象时,它实际上是检查两...
String.equals() 是 Java 中 String 类的方法,用于比较字符串的内容是否相等。该方法会比较字符串的每个字符是否相同,包括大小写。如果两个字符串的内容相同,那么 equals() 方法将返回 true,否则返回 false。 =...
如果我们想要让 s2 也引用同一个对象,可以使用 intern() 方法: public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = new String("Monday"); s2 = s2....
从程序的角度上看这个方法的作用是,当我们有两个字符串 s1,s2,且 s1.equals(s2) 时,s1.intern()==s2.intern(),也就是说这两个字符串在内存中使用的是同一个实例。Java 语言规范中定义了字符串文字以及更一般的...
使用 intern() 方法可以将 s2 的值加入缓冲池中,这样可以避免创建新的字符串对象。 equals 和 == 是两个不同的运算符,它们之间的区别是非常重要的。我们应该根据实际情况选择合适的运算符,以避免编程中的错误。
例如,在 Java 中,String 类的 equals 方法用于比较两个字符串的内容是否相同: ```java String s1 = "Monday"; String s2 = "Monday"; if (s1.equals(s2)) { System.out.println("s1 equals s2"); } else { ...
在Java编程语言中,`equals`方法和`==`操作符都是用来比较对象之间是否相等的重要工具。然而,它们在实现这一目标的方式上有着本质的区别。理解这些差异对于正确地进行对象比较至关重要。 #### 二、基本概念 1. **...
2. **使用equals()方法**:`String`类重写了`Object`类中的`equals()`方法,使其能够比较两个`String`对象的内容是否相同,而不是它们的引用。这意味着即使两个`String`对象在不同的位置存储,只要它们的内容相同,`...
在Java编程语言中,`equals`方法和`==`操作符都是用来比较对象之间是否相等的重要工具,但它们之间存在显著的区别。理解这些差异对于编写高效且无误的代码至关重要。 #### 二、基本概念 1. **==(双等号)**: - ...
`String`类的`intern()`方法返回池中字符串的引用。如果字符串不在池中,它会被添加到池中并返回其引用。这个方法在优化内存使用和避免重复对象时非常有用。 ### 8. 格式化输出 `String`类还提供了`format()`方法,...
在Java编程语言中,`equals()`方法和`==`运算符是两个经常用来比较对象的工具,但它们之间存在着显著的区别。理解这些区别对于编写健壮的Java代码至关重要。 首先,`==`运算符用于比较基本类型(如int、char等)的...
然而,很多类(如String、Integer等)都重写了`equals()`方法,使其比较对象的内容而不是引用。这意味着当调用`equals()`时,实际比较的是两个对象的内容是否相等,而非它们在内存中的位置。 3. 在String类中的特殊...
本文将深入探讨Java中的String类,包括其特性、构造方法、常用方法以及与其他数据类型的转换。 1. **字符串的创建与不可变性** - String对象在Java中是通过引用常量池中的常量来创建的,一旦创建就不能改变。例如...
在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象的两种不同方式,它们在处理不同类型的数据时有不同的行为。了解这两者的区别对于编写正确的代码至关重要。 `==`运算符: 1. `==`用于比较基本类型的...