• JAVA学习之字符串对象的创建和比较


     


    字符串是在每个编程语言都都会使用到的一种对象,它几乎可以包括所有键盘可以输入的文字或者其他特殊字符,或者换行符,TAB符等,
    在JAVA中表示字符串的方法是一对英文半角双引号""之内,如"Hello World!"、"Hello World"、"Java"、"中文。"等,都是合法的字符串。

    在JAVA中提供了多种创建字符串对象的方法,这里介绍最简单的两种,
    第一种是直接赋值,
    第二种是使用String类的构造方法:
    如下所示:
    String str1=null;
    String str2="";
    String str3=new String();
    String str4="Hello world";
    String str5=new String("Hello world");

    第一行代码是说明的是变量str1是一个null(空值)。
    第二行代码是给这个str2赋值一个空的字符串""。
    第三行也是str3赋值一个空的字符串。
    第四行str4的字符串的值为"Hello world"。
    第五行str5的值也是"Hello world".

    需要注意的是
    1.空的字符串""和空值(null)是两个不同的概念,空字符串是说明这个字符串对象是存在的,但是不包含任何字符,而null的意思就是这个对象什么都没有,没有指向任何内存地址
    2.str4,str5分别是用直接赋值和使用String构造方法创建出来的带初始值"Hello world"的字符串变量,然而通过这两种方法创建的字符串却是不同的。
    直接赋值法,是先创建一个字符串的常量"Hello world",并将基赋值给变量str4,
    而使用构造方法创建出来的是先创建一个字符串常量"Hello world",然后再创建一个对象,然后该对象的内容指向这个字符串常量,再然后str5指向这个对象。

    在我们使用字符串的时候,经常要遇到比较两个字符串是否一样,是否相等的情况,如果能够区分str4和str5的不同之处,那么就比较容易好判断了。
    在比较的时候,使用比较运算符中的==号可以比较两个字符串(注意是字符串)是否相等,但是不能用==来判断两个字符串对象(注意是对象)是否相等。
    因为使用比较运算符==比较的是两个字符串对象的地址,即使两个字符串对象的内容完全相同,但是他们的内存地址是不同的,所以不能直接使用==这个运算符来进行比较。
    在JAVA中,String对象提供了一个判断两个字符串对象内容是否相等的方法equals()。
    使用方法如下:
    public boolean equals(String str){}
    将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
    如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。即,如果两个对象的内容相同,就返回true,否则false。比较的是内容
    在上面的变量,常量中


    "Hello world"=="Hello world";返回true,因为这两个是同一个字符串常量,
    str4==str5; 返回false,因为这两个字符串对象虽然内容相同,但是指向的内存地址不一样,
    str4.equals(str5);返回true,因为这两个字符串对象的内容是相同的,而equals()方法比较的就是内容,而不是对象。

    注:内容相同指的是区别字母大小写。如a和A就是不相同的。

    由于字符串比较的情况比较多,所以能够掌握字符串对象的实例化原理和比较的原理,用起来会更加得心应手。

  • 相关阅读:
    梦断代码第8章总结
    <<梦断代码>>读后感
    站立会议第四篇
    购买一批书的最低价格
    NABCD分析
    首尾相连的二维数组求最大字数组的和
    站立会议第三篇
    站立会议第二篇
    站立会议第一篇
    牛客算法周周练16D Rinne Loves Dynamic Graph(分层图最短路 + 堆优化dijkstra)
  • 原文地址:https://www.cnblogs.com/fylx/p/3960586.html
Copyright © 2020-2023  润新知