在JAVA字符串比较时最好用equals()方法,否则会出现一些错误。首先来看JAVA中字符串对象产生的方式:1调用String的构造函数,/*String str = new String(“yajie”);*/;2.使用双引号:String str1 = “yajie”;3、使用赋值方式:String str2 = str1;
我们最好写一下程序更容易理解:
public class Strcmp{
public static void main(String args[]){
String s1 = new String("yajie"); //构造函数new()后产生不同的独立空间来放置对象
String s2 = new String("yajie");
String s3 = "yajie"; //为了加快运行速度,放到StringPool中
String s4 = "yajie";
String s5 = s1; //将s1的值赋给s5
String s6 = s3; //将s3的值赋给s6
System.out.println("s1="+s1);
System.out.println("s2="+s2);
System.out.println("s3="+s3);
System.out.println("s4="+s4);
System.out.println("s5="+s5);
//都一致,打印后是yajie
System.out.println("s1 hashcode:"+s1.hashCode()); //打印hashcode
System.out.println("s2 hashcode:"+s2.hashCode());
System.out.println("s3 hashcode:"+s3.hashCode());
System.out.println("s4 hashcode:"+s4.hashCode()); //它们都有相同的哈希值
System.out.println("s5 hashcode:"+s5.hashCode());
//字符串长度、内容都一致,算法也一样哈希值当然都一致了。
//先把s1和s2比较
System.out.print("s1==s2:");
System.out.println(s1==s2); //false
//用equals()方法比较
System.out.println("s1.equals(s2):"+s1.equals(s2)); //true
//s1和s3比较
System.out.print("s1==s3:");
System.out.println(s1==s3); //false
System.out.println("s1.equals(s3):"+s1.equals(s3)); //true
//s2和s3比较
System.out.print("s2==s3:");
System.out.println(s2==s3); //false
System.out.println("s2.equals(s3):"+s2.equals(s3)); //true
//s3和s4比较
System.out.print("s3==s4:");
System.out.println(s3==s4); //内存中同一地址 所以为true
System.out.println("s3.equals(s4):"+s3.equals(s4)); //true
//s5是从s1赋值过来的,它和s4比较地址的结果是false。原因是s5引用的是s1相同的对象,而s4是StringPool中的一个对象
//s4和s5比较
System.out.print("s4==s5:");
System.out.println(s4==s5); //false
System.out.println("s4.equals(s5):"+s4.equals(s5)); //true
//s1和s5比较
//既然s1和s5引用的是同一对象那么s1和s5比较的结果是true!这就说明所引用对象的产生方式不同而不同
System.out.print("s1==s5:");
System.out.println(s1==s5); //true
System.out.println("s1.equals(s5):"+s1.equals(s5)); //true
//s6和s5比较
System.out.print("s6==s5:");
System.out.println(s6==s5); //false
System.out.println("s6.equals(s5):"+s6.equals(s5)); //true
/*
equals()在API中的描述是:
将此字符串与指定的对象比较。(比较内容是否相等)
当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
==
比较操作符 比较的是两个对象的内存地址
*/
}
}
//:~杨亚杰 4/16/2008 10:53 PM
结果如下:
C:\NewJava\字符串研究>javac *.java
C:\NewJava\字符串研究>java Strcmp
s1=yajie
s2=yajie
s3=yajie
s4=yajie
s5=yajie
s1 hashcode:114740990
s2 hashcode:114740990
s3 hashcode:114740990
s4 hashcode:114740990
s5 hashcode:114740990
s1==s2:false
s1.equals(s2):true
s1==s3:false
s1.equals(s3):true
s2==s3:false
s2.equals(s3):true
s3==s4:true
s3.equals(s4):true
s4==s5:false
s4.equals(s5):true
s1==s5:true
s1.equals(s5):true
s6==s5:false
s6.equals(s5):true
分享到:
相关推荐
java字符串比较举例,了解如何去判断两个字符串是否相同。
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
Java 字符串与文本相关实例源码,比如不可变字符串与限定字符串、字符串的比较、提取子串、修改缓冲区中的字符串、判断回文串、正则表达式、字符串匹配、正则表达式语法等,还一一些比如用于比较两个变量是否引用同...
java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java ...
本文将围绕“java字符串练习”这一主题,深入探讨如何解析字符串、逆序输出字符串以及处理特定格式的字符串数据。 首先,我们要讨论的是字符串解析。在Java中,我们可以使用`String`类提供的方法或正则表达式来实现...
在Java编程语言中,字符串处理是一项常见的任务,特别是在解析、分析或操作文本数据时。本篇文章将深入探讨如何从字符串中提取括号内的内容,主要关注于基础的字符串操作、正则表达式以及如何利用这些工具来实现目标...
通过运行和调试这些代码,你可以加深对Java字符串、正则表达式以及日期时间格式化的理解。 总之,理解和熟练掌握Java中的字符串操作、正则表达式以及日期时间格式化对于任何Java开发者来说都是必不可少的技能。通过...
Java 字符串转换为日期和时间比较大小 Java 字符串转换为日期和时间比较大小是 Java 开发中常见的操作。下面我们将详细介绍两种方法来实现 Java 字符串转换为日期和时间比较大小。 方法一:使用 SimpleDateFormat ...
### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现...
在Java编程语言中,字符串...以上只是Java字符串操作的一小部分,实际开发中还有许多其他方法和特性,如国际化(I18N)、正则表达式等,都需要程序员灵活掌握。理解并熟练运用这些操作,能有效提高代码质量和效率。
java压缩字符串
在Java编程语言中,字符串处理是一项基础且重要的任务。标题提到的"Java检索字符串中是否存在某字符",实际上涉及到字符串的查找算法。这里主要讨论的是KMP(Knuth-Morris-Pratt)算法,这是一种高效的字符串匹配...
在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大。不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码...
在Java编程语言中,对字符串中的字符进行a到z排序是一项常见的操作,特别是在处理文本数据或需要对字母顺序排列的场景。本知识点将详细讲解如何实现这个功能。 首先,我们需要理解字符串在Java中的本质。在Java中,...
### JAVA日期与字符串的转换 在Java编程中,经常需要将日期对象转化为字符串形式以便于存储或显示,或者反过来将字符串转化成日期对象来进行日期计算等操作。本文将详细介绍如何在Java中实现这两种转换。 #### 一...
### Java字符串长度不够前面或后面补0 在Java编程中,有时我们需要确保字符串达到特定的长度,如果实际长度不足,则需要在字符串的前部或后部添加特定字符(如0)来填充,使得最终字符串满足预设长度的要求。本文将...
在Java编程语言中,字符串是极其重要且常用的数据类型。字符串处理是许多程序的核心部分,而`split()`方法就是处理字符串的一个关键工具。这个方法允许我们根据特定的分隔符将一个字符串分割成多个子字符串,这对于...