第四周笔记整理(1)

一、包装类

1. 基本数据类型

boolean,byte,char,short,int,long,float,double

2. 对应包装类

Boolean,Byte,Character,Short,Integer,Long,Float,Double

3. 装箱与拆箱

  • 装箱:将一个字面常量赋值给一个包装类型,编译时会被解读为valueOf
  • 拆箱:当与基本数据类型做比较或者发生运算时会调用xxxValue方法,xxx为对应的基本数据类型

4. 缓存机制

整数类型数据均有缓存机制,如果在该范围内从缓存数组取出,不会实例化新的对象,默认范围-128~127

  • Integer缓存上限可变
  • Character缓存范围:0~127

二、字符串

1. 字符串类型

公共接口:CharSequence

img

2. 效率比较

String < StringBuffer < StringBuilder

  • String通过定长字符数组实现
  • StringBuffer和StringBuilder在缓冲区操作

3. 字符串拼接

  • 使用加号拼接

效率最低,相当于调用StringBuilder的append方法,返回一个新的对象,在进行字符串比较时,不会相等

  • valueOf方法

传入参数,返回一个字符串类型

4. 字符串常用方法

  • 字符查找-封装查找所有字符位置的方法
    /**
     * 递归查找字符串中出现某一个字符的所有位置
     * @param s 原字符串
     * @param c 待查找字符
     * @param fromIndex 起始查找位置
     */
    public static void find(String s,char c,int fromIndex) {
        // 找到->继续向后搜索
        // 找不到->搜索结束
        int index = s.indexOf(c, fromIndex);
        // 第一次查找并且没有找到
        if (fromIndex == 0 && index == -1) {
            System.out.println("该字符串中没有该字符");
            return;
        }
        if (index == -1) {
            System.out.println("查找结束");
        }else {
            if (fromIndex == 0) {
                System.out.println("开始查找");
            }
            System.out.println(index);
            // 递归调用,继续下一次查找
            find(s, c, index + 1);
        }
    }
  • 字符串分割-嵌套结构
    // 分割句子,得到每一个单词
    String s1 = "good good study,day day up";
    // s1.split(",") -> 将字符串以逗号分割,得到两个子句
    // sentence -> 每次循环取出的数组中的元素(分割得到的子句)
    for (String sentence : s1.split(",")) {
        // sentence.split(" ") -> 对于每个句子再次通过空格分割
        for (String word : sentence.split(" ")) {
            // word -> 循环取出分割后得到的单词
            System.out.println(word);
        }
    }
  • 字符串比较-注意事项

通常为避免空指针异常,会将字面常量放在前面的位置,并且对判断结果不会产生影响

猜你喜欢

转载自blog.csdn.net/weixin_42691733/article/details/81412038