JAVA-核心类-String相关

1 String概述:

String 是一个引用类型。在 java.lang 包中,无需手动导包。

字符串的内容在创建后存放在字符串常量池(StringTable)中,不会发生改变。直接拼接、更改字符串会产生新的字符串。

Java中所有字符串都是String类对象。

使用str.charAt()来获取单个字符。

使用str.toCharArray()来将字符串转变为字符数组

2 创建String对象:

共两种方法:

2.1 直接赋值:

String str = “abcd”;

2.2 new 构造:

不常用。

构造方法参数有:

  • 空参构造
  • 字符串
  • char数组
  • byte数组

3 字符串的比较:== 与 .equals()

  • “==”比较的是在串池中的地址;
  • strA.equals(string strB)比较的是两字符串的内容
  • strA.equalsIgnoreCase()比较两对象的内容,但忽略大小写,常用于验证码

常用.equals()。

4 字符串的截取:subString()方法

Java中的substring方法用于提取字符串的子字符串。这个方法有两个重载版本:

  • String substring(int beginIndex):返回从指定的 beginIndex 开始到字符串结尾的子字符串。
  • String substring(int beginIndex, int endIndex):返回从指定的 beginIndex 开始到 endIndex 结束的子字符串。注意,返回的子字符串包含 beginIndex 处的字符,但不包含 endIndex 处的字符。

例:电话号码的截取

    public static void main(String[] args) {
        String phoneNumber="12312312345";
        String begin=phoneNumber.substring(0,3);
        String last=phoneNumber.substring(7);
        String result=begin+"****"+last;
        System.out.println(result);
    }

5 字符串的替换:repalce()方法

Java中的replace方法用于替换字符串中的字符或子字符串。这个方法有两个常用的重载版本:

  • String replace(char oldChar, char newChar):返回一个新字符串,在这个字符串中,所有出现的 oldChar 都被替换为 newChar。
  • String replace(String oldstring,String newstring):返回一个新字符串,在这个字符串中,所有出现的 oldstring 都被替换为 newstring。

例:

public static void main(String[] args) {
        String talk="你玩的真TMD好,以后不要再玩了!cnm";
        talk=talk.replace("TMD","***").replace("cnm","***");
        System.out.println(talk);
    }

输出为:你玩的真***好,以后不要再玩了!***

6 字符串的分割 split:

在 Java 中,split 方法是 String 类的一个非常有用的方法,它用于根据指定的分隔符将字符串分割成子字符串,并返回一个字符串数组。这个方法可以接受一个正则表达式作为分隔符,使得字符串分割非常灵活。

使用 split 方法

基本用法

split 方法的基本语法如下:

public String[] split(String regex)
  • regex:一个正则表达式,用于指定分隔符。

示例

假设我们有一个字符串,包含用逗号分隔的数字,我们想要将这些数字分割成单独的字符串:

javaString numbers = "1,2,3,4,5";
String[] numberArray = numbers.split(","); // 使用逗号作为分隔符

在这个例子中,split 方法将字符串 "1,2,3,4,5" 分割成五个子字符串:["1", "2", "3", "4", "5"]

使用正则表达式

split 方法也支持使用正则表达式作为分隔符,这使得分割更加灵活。例如,如果我们想要根据一个或多个空格来分割字符串:

javaString text = "Hello World! How are you?";
String[] words = text.split("\\s+"); // \s+ 表示一个或多个空白字符

在这个例子中,split 方法将字符串 "Hello World! How are you?" 分割成多个子字符串,每个单词都是一个元素:["Hello", "World!", "How", "are", "you?"]

7 字符串的拼接与StringBuild:

Java编译器对String做了特殊处理,使得我们可以直接用 + 拼接字符串。

7.1 StringBuild概述:

由于字符串不可变,所以当拼接字符串的时候(尤其是使用+号操作符)的时候,就需要考量性能的问题,你不能毫无顾虑地生产太多 String 对象,对珍贵的内存造成不必要的压力。

于是 Java 就设计了一个专门用来解决此问题的 StringBuild 类。

StringBuild类的对象可以简单视作一个容器,可以改变它的内容。

7.2 方法:

构造方法:

  • StringBuilder()
    • 创建一个空的StringBuilder对象,初始容量为16个字符。
  • StringBuilder(int capacity)
    • 创建一个具有指定初始容量的StringBuilder对象。
    • 参数:
      • capacity:初始容量。
  • StringBuilder(String str)
    • 创建一个包含指定字符串内容的StringBuilder对象。
    • 参数:
      • str:初始化内容的字符串。

常用方法:

  • StringBuilder append(Object obj)
    • 将指定对象的字符串表示形式追加到此序列。
    • 参数:
      • obj:要追加的对象。
    • 返回值:StringBuilder对象本身。
  • StringBuilder insert(int offset, Object obj)
    • 在指定位置插入对象的字符串表示形式。
    • 参数:
      • offset:插入位置的偏移量。
      • obj:要插入的对象。
    • 返回值:StringBuilder对象本身。
  • StringBuilder delete(int start, int end)
    • 删除从指定开始索引到结束索引(不包括)的子字符串。
    • 参数:
      • start:开始索引(包含)。
      • end:结束索引(不包含)。
    • 返回值:StringBuilder对象本身。
  • int capacity()
    • 返回当前StringBuilder对象的容量。
    • 返回值:容量。
  • String toString()
    • 返回此序列的字符串表示形式。
    • 返回值:字符串表示形式。
  • StringBuilder reverse()
    • 将此字符序列用其反转形式取代。
    • 返回值:StringBuilder对象本身。

其他如subString、replace与String类的一样。

注意:对于普通的字符串+操作,并不需要我们将其改写为StringBuilder,因为Java编译器在编译时就自动把多个连续的+操作编码为StringConcatFactory的操作。在运行期,StringConcatFactory会自动把字符串连接操作优化为数组复制或者StringBuilder操作。

StringBuffer

StringBuffer,这是Java早期的一个StringBuilder的线程安全版本,它通过同步来保证多个线程操作StringBuffer也是安全的,但是同步会带来执行速度的下降。

StringBuilderStringBuffer接口完全相同,

8 StringJoiner:

要高效拼接字符串,应该使用StringBuilder

StringJoiner是Java 8引入的新类,用于生成由分隔符分隔的字符串序列。它简化了字符串连接的过程,尤其是在处理集合或数组时。StringJoiner提供了可选的前缀和后缀,可以在生成的字符串之前和之后添加内容。

构造方法:

  • StringJoiner(CharSequence delimiter)
    • 创建一个没有前缀和后缀的StringJoiner对象。
    • 参数:
      • delimiter:分隔符。
  • StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
    • 创建一个带有指定前缀和后缀的StringJoiner对象。
    • 参数:
      • delimiter:分隔符。
      • prefix:前缀。
      • suffix:后缀。

常用方法:

常用方法

  • StringJoiner add(CharSequence newElement)
    • 将指定的内容添加到StringJoiner中。
    • 参数:
      • newElement:要添加的内容。
    • 返回值:此StringJoiner对象。
  • StringJoiner merge(StringJoiner other)
    • 将另一个StringJoiner的内容合并到此StringJoiner中。
    • 参数:
      • other:要合并的StringJoiner对象。
    • 返回值:此StringJoiner对象。

例:

public static void main(String[] args) {
StringJoiner sj1 =new StringJoiner(", ","[","]");
sj1.add("aaa").add("bbb").add("ccc").add("ddd");
System.out.println(sj1);
StringJoiner sj2 =new StringJoiner(", ","[","]");
sj2.add("11").add("22").add("33").add("44");
System.out.println(sj2);
sj1.merge(sj2);
System.out.println(sj1);
}

9 其他案例:

9.1 金额数字转大写:

public class Stringdemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int cash=sc.nextInt();
        toLargecash(cash);
    }

    public static void toLargecash(int cash){
        char[] Large={'零','壹','贰','叁','肆','伍','陆','柒','扒','玖'};
        int[] arr_cash={0,0,0,0,0,0,0};
        for (int i = 0; i < 7; i++) {
            int digit=cash%10;
            cash/=10;
            if (digit==0)
                continue;
            else {
                arr_cash[i]=digit;
            }
        }
        System.out.print(Large[arr_cash[6]]+"佰");
        System.out.print(Large[arr_cash[5]]+"拾");
        System.out.print(Large[arr_cash[4]]+"万");
        System.out.print(Large[arr_cash[3]]+"仟");
        System.out.print(Large[arr_cash[2]]+"佰");
        System.out.print(Large[arr_cash[1]]+"拾");
        System.out.println(Large[arr_cash[0]]+"元");

    }
}

暂无评论

发送评论 编辑评论


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