- 浏览: 506164 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (191)
- Android学习 (3)
- jsp/servlet (2)
- java学习 (44)
- 数据库 (28)
- GWT开发学习 (8)
- 开发中问题 (15)
- JavaScript (48)
- 正则表达式 (1)
- svn配置 (1)
- C# (5)
- SSH (8)
- 找工作面试用 (5)
- DWR开发学习 (0)
- CSS学习 (4)
- AJAX学习 (1)
- Swing (1)
- Json (3)
- Jquery (4)
- Java 网络编程 (1)
- 管理相关 (2)
- Weblogic (1)
- 开发模式 (1)
- web前端 (6)
- 响应式设计 (1)
- Angular (5)
- 其它 (1)
- LESS (1)
- AngularJS (1)
- 负载并发、性能 (4)
- 数据结构与算法 (1)
最新评论
-
世界尽头没有你:
Java并发编程与高并发解决方案网盘地址:https://pa ...
java处理高并发高负载类网站的优化方法 -
叮咚可乐名:
Java并发编程与高并发解决方案网盘地址:https://pa ...
java处理高并发高负载类网站的优化方法 -
叮咚可乐名:
Java并发编程和高并发解决方案视频课程网盘地址:https: ...
java处理高并发高负载类网站的优化方法 -
putonyuer:
如果不是转载 , 要点总结的非常好 , 牛逼。
生产者消费者模式浅析 -
daxun1983:
爱得发疯
java判断是否为汉字和是否有汉字的方法
看例子:
例子A:
地球上有点Java基础的人都知道会输出false,因为==比较的是引用,equals比较的是内容。不是我忽悠大家,你们可以在自己的机子上运行一 下,结果是true!原因很简单,String对象被放进常量池里了,再次出现“java”字符串的时候,JVM很兴奋地把str2的引用也指向了 “java”对象,它认为自己节省了内存开销。不难理解吧 呵呵
例子B:
例子C:
例子D:
intern()是什么东东?反正结果是true。如果没用过这个方法,而且训练有素的程序员会去看JDK文档了。简单点说就是用intern()方法就 可以用“==”比较字符串的内容了。在我看到intern()方法到底有什么用之前,我认为它太多余了。其实我写的这一条也很多余,intern()方法 还存在诸多的问题,如效率、实现上的不统一……
例子E:
以上内容引用自:http://hi.baidu.com/dairywg/blog/item/495f81b11885fa500823027f.html
注意以下java代码中的 C2() 是上面文章中没有提到的。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/flyjimi/archive/2008/07/27/2645063.aspx
例子A:
String str1 = "java"; String str2 = "java"; System.out.print(str1==str2);
地球上有点Java基础的人都知道会输出false,因为==比较的是引用,equals比较的是内容。不是我忽悠大家,你们可以在自己的机子上运行一 下,结果是true!原因很简单,String对象被放进常量池里了,再次出现“java”字符串的时候,JVM很兴奋地把str2的引用也指向了 “java”对象,它认为自己节省了内存开销。不难理解吧 呵呵
例子B:
String str1 = new String("java"); String str2 = new String("java"); System.out.print(str1==str2);看过上例的都学聪明了,这次肯定会输出true!很不幸,JVM并没有这么做,结果是false。原因很简单,例子A中那种声明的方式确实是在 String常量池创建“java”对象,但是一旦看到new关键字,JVM会在堆中为String分配空间。两者声明方式貌合神离,这也是我把“如何创 建字符串对象”放到后面来讲的原因。大家要沉住气,还有一个例子。
例子C:
String str1 = "java"; String str2 = "blog"; String s = str1+str2; System.out.print(s=="javablog");再看这个例子,很多同志不敢妄言是true还是false了吧。爱玩脑筋急转弯的人会说是false吧……恭喜你,你会抢答了!把那个“吧”字去掉你就完 全正确。原因很简单,JVM确实会对型如String str1 = "java"; 的String对象放在字符串常量池里,但是它是在编译时刻那么做的,而String s = str1+str2; 是在运行时刻才能知道(我们当然一眼就看穿了,可是Java必须在运行时才知道的,人脑和电脑的结构不同),也就是说str1+str2是在堆里创建的, s引用当然不可能指向字符串常量池里的对象。没崩溃的人继续看例子D。
例子D:
String s1 = "java"; String s2 = new String("java"); System.out.print(s1.intern()==s2.intern());
intern()是什么东东?反正结果是true。如果没用过这个方法,而且训练有素的程序员会去看JDK文档了。简单点说就是用intern()方法就 可以用“==”比较字符串的内容了。在我看到intern()方法到底有什么用之前,我认为它太多余了。其实我写的这一条也很多余,intern()方法 还存在诸多的问题,如效率、实现上的不统一……
例子E:
String str1 = "java"; String str2 = new String("java"); System.out.print(str1.equals(str2));无论在常量池还是堆中的对象,用equals()方法比较的就是内容,就这么简单!
以上内容引用自:http://hi.baidu.com/dairywg/blog/item/495f81b11885fa500823027f.html
注意以下java代码中的 C2() 是上面文章中没有提到的。
public class StringCompare { public static void A() { String str1 = "java"; String str2 = "java"; System.out.println(str1 == str2); //true } public static void B() { String str1 = new String("java"); String str2 = new String("java"); System.out.println(str1 == str2); //false } public static void C() { String str1 = "java"; String str2 = "blog"; String s = str1 + str2; System.out.println(s == "javablog"); //false } public static void C2() { String str1 = "javablog"; String str2 = "java"+"blog"; //在编译时被优化成String str2 = "javablog"; System.out.println(str1 == str2); //true } public static void D() { String s1 = "java"; String s2 = new String("java"); System.out.println(s1.intern() == s2.intern()); //true } public static void E() { String str1 = "java"; String str2 = new String("java"); System.out.println(str1.equals(str2)); //true } public static void main(String[] args){ A(); B(); C(); C2(); D(); E(); } } 输出============ true false false true true true
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/flyjimi/archive/2008/07/27/2645063.aspx
发表评论
-
java synchronized详解
2015-05-18 07:55 958记下来,很重要。 Java语言的关键字,当它用来修饰一个方 ... -
用java数组实现BigInt超大整数设计
2015-04-18 14:04 3451中兴的一道笔试题:如果系统要使用超大整数(超过long长度范 ... -
JAVA学习路线
2015-01-23 08:10 1031分享个JAVA学习路线觉得不好的,大家可以提出来我补充。 ... -
java处理高并发高负载类网站的优化方法
2015-01-19 09:02 1759一:高并发高负载类网站关注点之数据库 没错,首先是数据 ... -
查找某个类所在jar包
2014-05-14 15:44 1141package com.test; impor ... -
java 多线程学习
2013-12-23 14:13 848线程的同步 由于同一进程的多个线程共享同一片存储空间,在 ... -
java的集合类【转】
2013-07-29 15:25 897在JDK API中专门设计了一组类,这组类的功能就是实 ... -
ssh框架搭建教程
2012-12-26 15:01 1090ssh框架搭建教程,详细参照附件,附件中,有部分是如果报错: ... -
java读取目录下所有文件,转换编码后输出
2012-09-21 17:18 2472import java.io.BufferedReader; ... -
JAVA 实现jpg/tif/bmp 等图片之间格式得互相转换
2012-09-20 09:39 3101. 刚刚工作中遇到 tif 图片的转换,开始以为只要 ... -
Java中对数字格式化
2012-09-13 14:06 926package formatnumber; import j ... -
java 获取绝对路径
2012-08-30 19:53 1055java 获取绝对路径 原文地址:http:// ... -
Java读取Properties文件的方法
2012-08-24 14:15 10862009-02-10 22:05 Java读取Prope ... -
enctype="multipart/form-data"中Form参数的获取
2012-08-22 17:40 3089enctype="multipar ... -
Java日期操作类(DateFormat、SimpleDateFormat)
2012-08-09 20:29 21542012-05-24 16:17 Java日期操作类(D ... -
Struts Tiles框架实例(转) tiles布局
2012-07-31 10:49 13581.在你的struts配置文件struts-config.xm ... -
拦截器配置错误:The content of element type "package" must match "(result-types?,interce
2012-06-01 00:27 965在编写后台登陆模块时,将许多默认的设置放在一个名为defaul ... -
用MyEciplse时 some character can not mapped using "iso-8859-1" character encoding
2012-02-02 15:27 869如果你常常用 Eclipse 或者 MyEclipse ,那你 ... -
java编译错误 找不到符号
2011-11-15 10:35 3264java编译错误 找不到符号 可以把classpat ... -
DWR开发之简单HelloWorld过程
2011-10-22 21:58 0一、
相关推荐
Java 中 String 类型转换方法 Java 中 String 类型转换方法是一种常见的编程操作,涉及到各种数据类型之间的转换,包括整型、浮点型、长整型、浮点型等。本文将详细介绍 Java 中 String 类型转换方法的各种形式。 ...
本文将深入探讨Java中String类型和int类型之间的比较方法以及相互转换的技术,这对于理解和优化代码逻辑、提升程序性能具有重要意义。 ### 一、String类型与int类型的基本概念 #### 1.1 String类型 String类型在...
83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中...
85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中...
86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点....
在 Java 中,可以使用 `equals()` 方法比较两个 String 对象的内容是否相等。如果两个 String 对象的内容相等,那么 `equals()` 方法将返回 `true`,否则返回 `false`。 String 对象的匿名对象 在 Java 中,可以...
根据提供的信息,我们可以总结出这份Java基础String类选择题练习题主要聚焦于String及StringBuffer类的使用。尽管具体的题目内容未给出,但从所展示的信息中可以推断出该练习题集涵盖了以下几方面的知识点: ### 一...
简单总结可以下Java中String类中的常用方法
分享在JAVA中Blob转换成String实例
java编程中对字符串的各种方式的处理,包括(空字符串处理、判断是否是空字符串 null和"" 都返回 true、 把string array or list用给定的符号symbol连接成一个字符串、 判定第一个字符串是否等于的第二个字符串中的某...
深入了解Java中的String类是至关重要的,因为String在Java编程中占据着极其重要的位置。下面将对给定的信息进行深入分析: ### 1. String 类是 final 的,不可被继承 在Java中,`String` 类被声明为 `final` 类型...
Java 中 String 和 int 类型的相互转换 Java 中 String 和 int 类型的相互转换是一个基本的数据类型转换操作。下面我们来详细介绍这两种类型的相互转换。 String 转换为 int 在 Java 中,将 String 类型转换为 ...
在Java编程中,字符串(String)是非常常见且重要的数据类型。本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。...
Java中的String类是编程中非常基础且重要的一个类,它代表不可变的字符序列,即一旦创建,其内容就不能更改。下面我们将详细讨论String类的一些主要特性、实例化方式以及常用方法。 1. **String类的实例创建**: -...
Java String 使用详解是 Java 编程语言中最基础也是最重要的一部分,对于 Java 程序员来说,了解 String 类的使用方法是必不可少的。本文将详细介绍 Java String 的使用方法,包括 String 对象的初始化、字符串的...
### Java中String、十六进制String与byte[]之间的相互转换 在Java开发中,字符串(String)、十六进制表示的字符串以及字节数组(byte[])之间的转换是非常常见的需求,尤其是在处理网络通信、文件读写等场景下。...
在Java编程中,`String`类是最常用的数据类型之一,用于处理文本数据。它是一个不可变类,意味着一旦创建了一个`String`对象,其内容就不能更改。这使得`String`类在多线程环境中非常安全,同时也带来了一些性能上的...
Java 中颜色的 String 和 Color 对象之间的互相转换 在 Java 中,颜色的表示形式有多种,包括字符串形式和 Color 对象形式。这两种形式可以互相转换,本文将介绍 Java 中颜色的 String 和 Color 对象之间的互相转换...
在Java编程语言中,String类型扮演着至关重要的角色。它被广泛用于表示和操作文本,因为它是不可变的,这确保了字符串的安全性和效率。本文将深入探讨Java中的String类,包括其特性、构造方法、常用方法以及与其他...