`
yajie
  • 浏览: 210714 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java字符串的比较

阅读更多

      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());

              //字符串长度、内容都一致,算法也一样哈希值当然都一致了。

      

              //先把s1s2比较

              System.out.print("s1==s2:");

              System.out.println(s1==s2); //false

              //equals()方法比较

              System.out.println("s1.equals(s2):"+s1.equals(s2));     //true

              //s1s3比较

              System.out.print("s1==s3:");

              System.out.println(s1==s3); //false

              System.out.println("s1.equals(s3):"+s1.equals(s3));     //true

              //s2s3比较

              System.out.print("s2==s3:");

              System.out.println(s2==s3); //false

              System.out.println("s2.equals(s3):"+s2.equals(s3));     //true

              //s3s4比较

              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相同的对象,而s4StringPool中的一个对象

              //s4s5比较

              System.out.print("s4==s5:");

              System.out.println(s4==s5); //false

              System.out.println("s4.equals(s5):"+s4.equals(s5));     //true

              //s1s5比较

              //既然s1s5引用的是同一对象那么s1s5比较的结果是true!这就说明所引用对象的产生方式不同而不同

              System.out.print("s1==s5:");

              System.out.println(s1==s5); //true

              System.out.println("s1.equals(s5):"+s1.equals(s5));     //true

              //s6s5比较

              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字符串比较举例,了解如何去判断两个字符串是否相同。

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节;

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...

    JAVA字符串比较、提取子串等源码小合集.rar

    Java 字符串与文本相关实例源码,比如不可变字符串与限定字符串、字符串的比较、提取子串、修改缓冲区中的字符串、判断回文串、正则表达式、字符串匹配、正则表达式语法等,还一一些比如用于比较两个变量是否引用同...

    java 字符串工具类 java 字符串工具类

    java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java ...

    java字符串练习

    本文将围绕“java字符串练习”这一主题,深入探讨如何解析字符串、逆序输出字符串以及处理特定格式的字符串数据。 首先,我们要讨论的是字符串解析。在Java中,我们可以使用`String`类提供的方法或正则表达式来实现...

    java字符串处理取出括号内的字符串

    在Java编程语言中,字符串处理是一项常见的任务,特别是在解析、分析或操作文本数据时。本篇文章将深入探讨如何从字符串中提取括号内的内容,主要关注于基础的字符串操作、正则表达式以及如何利用这些工具来实现目标...

    java 字符串 正则表达式 详细实例代码

    通过运行和调试这些代码,你可以加深对Java字符串、正则表达式以及日期时间格式化的理解。 总之,理解和熟练掌握Java中的字符串操作、正则表达式以及日期时间格式化对于任何Java开发者来说都是必不可少的技能。通过...

    Java字符串转换为日期和时间比较大小[归类].pdf

    Java 字符串转换为日期和时间比较大小 Java 字符串转换为日期和时间比较大小是 Java 开发中常见的操作。下面我们将详细介绍两种方法来实现 Java 字符串转换为日期和时间比较大小。 方法一:使用 SimpleDateFormat ...

    java字符串的各种编码转换

    ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现...

    JAVA 字符串 操作

    在Java编程语言中,字符串...以上只是Java字符串操作的一小部分,实际开发中还有许多其他方法和特性,如国际化(I18N)、正则表达式等,都需要程序员灵活掌握。理解并熟练运用这些操作,能有效提高代码质量和效率。

    java压缩字符串

    java压缩字符串

    Java检索字符串中是否存在某字符

    在Java编程语言中,字符串处理是一项基础且重要的任务。标题提到的"Java检索字符串中是否存在某字符",实际上涉及到字符串的查找算法。这里主要讨论的是KMP(Knuth-Morris-Pratt)算法,这是一种高效的字符串匹配...

    java 字符串中文判断

    在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...

    JAVA的字符串拼接与性能

    JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大。不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码...

    java 字符串a-z排序

    在Java编程语言中,对字符串中的字符进行a到z排序是一项常见的操作,特别是在处理文本数据或需要对字母顺序排列的场景。本知识点将详细讲解如何实现这个功能。 首先,我们需要理解字符串在Java中的本质。在Java中,...

    JAVA日期与字符串的转换

    ### JAVA日期与字符串的转换 在Java编程中,经常需要将日期对象转化为字符串形式以便于存储或显示,或者反过来将字符串转化成日期对象来进行日期计算等操作。本文将详细介绍如何在Java中实现这两种转换。 #### 一...

    Java字符串长度不够前面或后面补0.txt

    ### Java字符串长度不够前面或后面补0 在Java编程中,有时我们需要确保字符串达到特定的长度,如果实际长度不足,则需要在字符串的前部或后部添加特定字符(如0)来填充,使得最终字符串满足预设长度的要求。本文将...

    Java字符串分隔方法split实践

    在Java编程语言中,字符串是极其重要且常用的数据类型。字符串处理是许多程序的核心部分,而`split()`方法就是处理字符串的一个关键工具。这个方法允许我们根据特定的分隔符将一个字符串分割成多个子字符串,这对于...

Global site tag (gtag.js) - Google Analytics