• Java第四章课后整理


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

    在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象。 编译器在编译s2一句时,会去掉“+”号,直接把两个字串连接起来得一个字串(“Hello”)。这种优化工作由Java编译器自动完成。 当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但仍然是两个独立的对象。

    2.为什么会有上述的输出结果?从中你又能总结出什么?

    给字串变量赋值意味着:两个变量(s1,s2)现在引用同一个字符串对象“a”!

    String对象的内容是只读的,使用“+”修改s1变量的值,实际上是得到了一个新的字符串对象,其内容为“ab”,它与原先s1所引用的对象”a”无关,所以,s1==s2返回false;

    代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。 但是若"s1="ab"",再判断“s1=="ab"",结果为true。

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

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

    publicclass StringEquals { publicstaticvoid main(String[] args) { String s1=new String("Hello"); String s2=new String("Hello"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); String s3="Hello"; String s4="Hello"; System.out.println(s3==s4); System.out.println(s3.equals(s4)); } }

    equals()或equalsIgnoreCase()方法比较两字串内容是否相同,使用==比较两字串变量是否引用同一字串对象;
    compareTo:使用字典法进行比较,返回0表两字串相等,小于返回负值,大于返回正值;
    regionMatches:比较两字串中的某一部分是否相等。

    4.Length():获取字串长度

           1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.
           2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
           3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!

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

    str.charAt() :方法返回指定索引处的char值。索引范围是从0到length() - 1。对于数组索引,序列的第一个char值是在索引为0,索引1,依此类推。

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

    str.getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

    要复制的第一个字符在索引srcBegin处,被复制的最后一个字符是在的索引srcEnd1即要复制的字符总数是srcEnd srcBegin处。

    字符被复制到子数组的夏令时开始在指数dstBegin和结束于索引:dstbegin + (srcEnd-srcBegin) - 1

    replace():子串替换

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

    toUpperCase()、 toLowerCase():大小写转换

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

    trim():去除头尾空格:

    str.trim(),该方法返回一个该字符串的副本,但将该字符串的开头和结尾的白色空格去掉;如果这个字符串头尾没有空白,将返回一个字符串的副本。

    toCharArray():将字符串对象转换为字符数组

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

     

     

  • 相关阅读:
    软件工程第三次作业
    软件工程第二次实践
    软件工程第一次作业
    剑指offer-重新排序数组,倒置链表
    剑指offer-倒数第k个节点,镜像二叉树,O(1)时间删除链表节点,
    剑指offer-判断树1中是否有树2,合并有序链表,旋转打印二维数组
    matlab基本语法
    C/C++ 二维数组实参形参的总结
    剑指offer-实现power,打印1到n位最大数
    剑指offer-旋转数组,斐波那契数列,比特1的个数
  • 原文地址:https://www.cnblogs.com/as1165/p/7744104.html
Copyright © 2020-2023  润新知