• 课后作业:动手动脑之String.equals()方法、整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记发表到博客园。


    1、请运行以下示例代码StringPool.java,查看其输出结果。如何解释这样的输出结果?从中你能总结出什么?

       

           内容相同的字串常量,只保存一份以节约内存,在这段代码中s0,s1,s2实际上引用的是同一个对象。

           编译器在编译s2一句时,“+”号相当于字符串连接符,直接把两个字串连接起来得一个字串(“Hello”)。

           当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但储存的地址不同,所以仍然是两个独立的对象。

    2、为什么会有这样的输出结果?从中你又能总结出什么?

       

          给字串变量赋值就是两个变量s1,s2现在引用同一个字符串对象“a”,使用“+”修改s1变量的值,实际上起到了连接符的作用,实际上是得到了一个新的字符串对象,其内容为“ab”,但是它与原先s1所引用的对象”a”无关。

          所以,s1==s2返回false; 代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。

          String.equals()方法可以比较两个字符串的内容。

    3、请查看String.equals()方法的实现代码,注意学习其实现方法。

     1 public class StringEquals
     2 { 
     3     public static void main(String[] args)
     4     {
     5         String s1=new String("HelloWorld!"); 
     6         String s2=new String("HelloWorld!");
     7         System.out.println(s1==s2); 
     8         System.out.println(s1.equals(s2));
     9         String s3="HelloWorld!"; 
    10         String s4="HelloWorld!";
    11         System.out.println(s3==s4);
    12         System.out.println(s3.equals(s4)); 
    13     }
    14 }

    结果截图:

       

    分析:

          String类中的equals方法是对父类Object类中的equals方法的覆盖,它的判断方法是:

      ①若当前对象和比较的对象是同一个对象,即return true。也就是Object中的equals方法。

      ②若当前传入的对象是String类型,则比较两个字符串的长度,即value.length的长度。

      ③若长度不相同,则return false。

      ④若长度相同,则按照数组value中的每一位进行比较,不同,则返回false。若每一位都相同,则返回true。

      ⑤若当前传入的对象不是String类型,则直接返回false。

    4、动手动脑:String类的方法可以连续调用:

    1 String str=“abc”;
    2 String result=str.trim().toUpperCase().concat(“defg”);

      请阅读JDK中的String类上述方法的源码,模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性,其调用示例为:

    1 MyCounter counter1=new MyCounter(1);
    2 MyCounter counter2=counter1.increase(100).decrease(2).increase(3);
    3   ......
    1 public class Stringtest
    2 {
    3     public static void main(String[] args)
    4     {
    5         String str="abc";
    6         String result=str.trim().toUpperCase().concat("defg");
    7         System.out.println(result);
    8     }
    9 }    

    结果截图:

        

     1 class MyCounter
     2 {
     3       int data;
     4       public void set(int g)
     5       {
     6             data=g;
     7       }
     8       public MyCounter increase(int i)
     9       {
    10             MyCounter a=new MyCounter();
    11             a.data=data+i;
    12             return a;
    13       }
    14       public MyCounter decrease(int d)
    15       {
    16              MyCounter a=new MyCounter();
    17              a.data=data-d;
    18              return a;
    19       }
    20 }
    21 public class Counter
    22 {
    23       public static void main(String[] args)
    24       {
    25             MyCounter c1=new MyCounter();
    26             MyCounter c2=new MyCounter();
    27             c1.set(1);
    28             c2=c1.increase(100).decrease(2).increase(3);
    29             System.out.println(c2.data);
    30       }
    31 }

    结果截图:

       

    5、整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记发表到博客园。

      Length():获取字串长度, java中的length属性是针对数组和字符串String说的,如果想看这个数组或字符串的长度则用到length()这个方法.。

      charAt():获取指定位置的字符。

      getChars():获取从指定位置起的子串复制到字符数组中。

      replace():子串替换,str.replace(char o,char n)返回一个新的字符串,它是通过用n替换此字符串中出现的所有o而生成的。

      toUpperCase()、 toLowerCase():大小写转换,str.toUpperCase/()str.toLowerCase(),将所有在这个字符串的字符转换为大、小写。

      trim():去除头尾空格。

      toCharArray():将字符串对象转换为字符数组,str.toCharArray()   返回一个新分配的字符数组,它的长度是此字符串的长度,而且内容被初始化为包含此字符串表示的字符序列。

  • 相关阅读:
    WAS日常维护中的重启时机——总结
    利用Shell生成Zabbix监控的数字报表
    Zabbix version upgrade (1.8.3 to 1.8.12)
    xeyes命令
    centos系统调节屏幕亮度
    centos7 安装kchmviewer 软件
    ftp使用FileZilla工具传输文件
    搭建vsftpd服务并实现本地用户访问
    centos中创建服务和关闭防火墙的基本命令
    阿里云vsftpd登录失败:530 Permission Denied.
  • 原文地址:https://www.cnblogs.com/guobin-/p/7737778.html
Copyright © 2020-2023  润新知