String类

String类

概述

字符串是被final修饰的类,无法继承

字符串是常量

字符串可以被共享

字符串的拼接

public static void method() {
    String s1 = "ab";
    // s2是字面量,在编译期间已经变成了"ab"
    String s2 = "a" + "b";
    // 在编译到这一行时,知道s3是"a"
    String s3 = "a";
    // 在编译这一行时候,只知道s3是String类型,不能确定其值
        /*
        相当于
        StringBuilder stringBuilder = new StringBuilder("a");
        // 拼接字符串
        stringBuilder.append("b");
        String s = stringBuilder.toString();
        System.out.println(s);
         */
    s3 += "b";

    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s3);
    System.out.println(s1 == s2);// true
    System.out.println(s1 == s3);// false
}
public static void method() {
//        long startTime = new Date().getTime();
//        String str = "";
//        for (int i = 0; i < 100000; i++) {
//            str += "a";
//        }
//        long endTime = new Date().getTime();
//        System.out.println(endTime - startTime);

    long startTime = new Date().getTime();
    //记录开始时间
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < 10000000; i++) {
        stringBuilder.append("a");
    }
    String str = stringBuilder.toString();
    long endTime = new Date().getTime();
    //记录结束时间
    System.out.println(endTime - startTime);

}

3常用方法

1.根据索引获取对应的字符

public static void method() {
    //输出字符串中下标为1的字符
    String str = "abcd";
    char c1 = str.charAt(1);
    System.out.println(c1);
}
public static void method() {
    String str = "abcd";
    // 获取字符串的长度
    System.out.println(str.length());

    // 把字符串转换成字符数组
    char[] chars = str.toCharArray();
    System.out.println(chars);
}
 public static void method() {
    String str = "abcd";
    char c1 = str.charAt(1);//  ---> b
    System.out.println(c1);

    // 获取字符串的长度
    System.out.println(str.length());   //--->4
    // 把字符串转换成字符数组
    char[] chars = str.toCharArray();
    System.out.println(chars);      //--->abcd

    // 把字符数组转换成字符串
    char[] chs = {'h', 'e', 'l', 'l', 'o'};
//        String s = new String(chs);
    // 把字符数组的一部分转换成字符串
    // offset:表示截取字符数组的起始索引
    // count:截取的长度
    String s = new String(chs, 1, 3);// 新建字符串对象为数组,内容为原数组下标1-3指向的元素
    System.out.println(s);// --->ell
}

练习 1. 输入字符串和两个数字,按照输入的数字对字符串进行截取,并且要求包头不包尾

public static void method() {
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next();
    int start = scanner.nextInt();
    int end = scanner.nextInt();
    if (start < 0 || start > end || end > str.length() || end < 0) {
        System.out.println("输入不合法");
        return;
    }
    // 把字符串转换成数组
    char[] chars = str.toCharArray();
    // 把字符数组中被选取的部分转化为字符串
    String s = new String(chars, start, end - start);
    System.out.println(s);
}

练习2:统计字符串中英文大写 小写 数字和其他字符的个数

public static void method() {
    // 统计字符串中英文大写 小写 数字和其他字符的个数
    System.out.println("请输入字符串");
    String str = new Scanner(System.in).next();
    // 定义变量  统计大写 小写  数字 其他字符
    int upperNum = 0;
    int lowerNum = 0;
    int num = 0;
    int otherNum = 0;
    // 获取每一个字符判断
    for (int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        if (ch >= 'A' && ch <= 'Z') {
            upperNum++;
        } else if (ch >= 'a' && ch <= 'z') {
            lowerNum++;
        } else if (ch >= '0' && ch <= '9') {
            num++;
        } else {
            otherNum++;
        }
    }
    System.out.println("大写字母有" + upperNum + "个");
    System.out.println("小写字母有" + lowerNum + "个");
    System.out.println("数字字符有" + num + "个");
    System.out.println("其他字符有" + otherNum + "个");
}

练习3:输入一个字符串,求其中数字的和

public static void method() {
    String str = new Scanner(System.in).next();
    int sum = 0;
    char[] chars = str.toCharArray();
    for (char aChar : chars) {
        // 判断是否是数字
        if (aChar >= '0' && aChar <= '9') {
            sum += (aChar - '0');
        }
    }
    System.out.println(sum);
}

练习:输入一个字符串,统计字符出现的次数。

public static void method() {
    // 输入一个字符串,统计字符出现的次数
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next();
    // 定义数组,存放是否被统计过的标记
    boolean[] bs = new boolean[str.length()];
    // 遍历数组
    for (int i = 0; i < bs.length; i++) {
        // 判断是否被统计过
        if (bs[i]) continue;    //如果 bs[i] 为 true,则表示当前位置的字符已经统计过了,跳过本次循环,继续下一个字符。
        // 获取字符
        char ch = str.charAt(i);
        // 定义变量统计出现的次数
        int count = 0;
        for (int j = i; j < str.length(); j++) {
            if (str.charAt(j) == ch) {
                count++;
                bs[j] = true;
            }
        }
        System.out.println(ch + "出现了" + count + "次");
    }
}

常用方法

public static void method() {

    /*字符串是以字节数组形式存储
    在比较两个字符数组的时候,是进行逐位比较
            如果对应字符不相等返回的是字符之差
    如果字符相同,返回的是长度之差
    如果返回的是一个正数, 对象 > 参数
    如果返回的是一个负数,参数 > 对象
    System.out.println(str.compareTo(str1));
    */
    // 忽略大小写比较
    System.out.println(str.compareToIgnoreCase(str1));

    // 把字符串转换成大写
    System.out.println(str.toUpperCase());

    // 把字符串转换成小写
    System.out.println(str1.toLowerCase());

    // 字符串的拼接  本质上是将两个字节数组合并成一个字节数组再转换成字符串返回
    System.out.println(str.concat("abc"));

    // 拼接字符串
    System.out.println(String.join("-", "谷丰硕", "尚马教育", "30", "男"));

    // 判断是否包含某一个字符串
    System.out.println(str.contains("ad"));

    // 比较字符串是否相等
    System.out.println("ABCD".equals(str1));

    // 忽略大小写比较字符串
    System.out.println("abcd".equalsIgnoreCase(str1));

    // 把字符串转换成字节数组
    // utf-8一个汉字占3个字节
    byte[] bytes = str.getBytes();
    System.out.println(str.length());
    System.out.println(bytes.length);

    // 指定编码来将字符串转换成数组
    // gbk 一个汉字占两个字节
    byte[] gbks = str.getBytes("gbk");
    System.out.println(gbks.length);

    // 将字节数组转换成字符串
    String s = new String(bytes, "utf-8");
    System.out.println(s);

    // 指定编码转换
    String gbk = new String(gbks, "GBK");
}

关键字: instanceof

用于判断类/接口和对象的关系

格式:

        对象  instanceof 类/接口    只要这个对象的实际类型是后面类或者其子类,或者接口的实现类,那么就返回true

            interface A{}
            class B implements A{}
            class C extends B{}
            class D extends C{}

        C c = new D();
        c instanceOf A  -- true
        c instanceOf B  -- true
        c instanceOf C  -- true
        c instanceOf D  -- true

练习:输入一个字符串和一个数字,数字表示字节的个数,按照指定的字节个数截取字符串(不要出现乱码),编码用gbk

public static void method() {
    // 输入一个字符串和一个数字,数字表示字节的个数,按照指定的字节个数截取字符串(不要出现乱码),编码用gbk
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next();
    System.out.println("请输入要截取的字节");
    int n = scanner.nextInt();
    // 将字符串转换成字节数组
    byte[] bs = str.getBytes("gbk");

    // 按照用户指定的字节进行截取
    String sub = new String(bs, 0, n, "gbk");
    // 获取可能乱码的索引
    int index = sub.length() - 1;
    if (sub.charAt(index) != str.charAt(index)) {
        // 出现乱码
        sub = new String(bs, 0, n - 1, "gbk");
    }
    System.out.println(sub);
}

常用方法

public static void method() {

    String str = "D:\\img\\sifangzhao\\me.png";
    // 同一个字符串的哈希码值是固定不变的
    System.out.println(str.hashCode());

    // 获取指定元素首次出现的索引,如果找不到返回-1
    System.out.println(str.indexOf('a', 1));
    System.out.println(str.indexOf("k"));

    String str1 = new String("abc");

    // 获取字符串的字面量
    System.out.println(str == str1.intern());

    // 判断字符串是否是空  判断底层数组长度是否是0
    System.out.println(str.isEmpty());

    // 判断字符串是否是空字符串或者全是空格
    System.out.println(str.isBlank());

    // 寻找对应字符最后一次出现的索引
    int index = str.lastIndexOf("a");
    System.out.println(index);

    // 从fromIndex开始依次向前找
    int index1 = str.lastIndexOf("a", 7);
    System.out.println(index1);

    String repeat = str.repeat(3);
    System.out.println(repeat);
    System.out.println(str.replace('a', 'A'));

    // 截取字符串 从beginIndex截取到最后
    String substring = str.substring(3);

    // 截取一部分,包头不包尾
    String substring = str.substring(3, 6);
    System.out.println(substring);

    System.out.println(str.substring(str.lastIndexOf("\\") + 1));

    // 生成验证码
    String code = UUID.randomUUID().toString().substring(0, 6);
    System.out.println(code);

    // 去除字符串两端空格
    String str2 = "     hello  我是   ";
    System.out.println(str2.trim());

    System.out.println(new Object());

    // 将对应的类型转换成字符串
    String s = String.valueOf(10);
    System.out.println(s);
    String s1 = String.valueOf(new Object());
    System.out.println(s1);
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇