JAVA String类简介

在JAVA编程中,String类是一种常用的数据类型,用于存储和操作字符串。它是不可变的,即一旦创建就不能被修改。

String类的特点

不可变性:String对象一旦创建,其值就不能被改变。这意味着对String对象进行任何修改操作都会创建一个新的String对象。

        String str1 = "Hello";
        System.out.println("原始字符串: " + str1);

        String str2 = str1.concat(" World");
        System.out.println("连接后的字符串: " + str2);

        System.out.println("原始字符串未改变: " + str1);


        输出结果:
        原始字符串: Hello
        连接后的字符串: Hello World
        原始字符串未改变: Hello

上面的代码中,我们创建了一个名为str1的字符串对象,并输出它的值为"Hello"。然后,我们使用concat()方法连接字符串" World"到str1上,得到一个新的字符串str2。最后,我们再次我们再次输出str1的值,可以看到它的值仍然为"Hello",没有改变。 

字符串池:为了提高性能,JAVA中的字符串字面量会被存储在字符串池中。当创建多个相同值的字符串时,它们会指向同一个字符串池中的对象,从而节省了内存空间。

        String a1 = "你好";
        String a2 = "你好";
        System.out.println(a1==a2);
        String b1 = new String("你好");
        String b2 = new String("你好");
        System.out.println(b1==b2);


        输出结果:
        true
        false

在上面代码中,我们使用字符串字面量方式创建了两个相同值的字符串对象a1和a2,然后使用==运算符比较它们的引用地址,结果为true。这是因为它们指向了字符串常量池中的同一个对象。

接着,我们使用new关键字创建了两个相同值的字符串对象b1和b2,然后再次使用==运算符比较它们的引用地址,结果为false。这是因为new关键字会创建一个新的字符串对象,不会使用字符串常量池中的对象。

字符串连接:String类提供了丰富的字符串连接方法,如使用"+"操作符或concat()方法。然而,频繁的字符串连接操作会导致性能下降,因为每次连接都会创建一个新的String对象。此时,可以使用StringBuilder或StringBuffer类来提高效率。

常用方法

length():返回字符串的长度。

String str = "Hello World";
int length = str.length();
System.out.println(length); // 输出 11

charAt(int index):返回指定位置的字符。(这里的位置是下标)

String str = "Hello World";
char ch = str.charAt(6);
System.out.println(ch); // 输出 'W'

substring(int beginIndex, int endIndex):返回指定范围内的子字符串。

String str = "Hello World";
String subStr = str.substring(6);
System.out.println(subStr); // 输出 "World"

equals(Object anObject):比较字符串的内容是否相等。

String str1 = "Hello";
String str2 = "hello";
System.out.println(str1.equals(str2)); // 输出 false

isEmpty():判断字符串是否为空。

String str1 = "";
boolean isEmpty1 = str1.isEmpty();
System.out.println(isEmpty1); // 输出 true

String str2 = "Hello";
boolean isEmpty2 = str2.isEmpty();
System.out.println(isEmpty2); // 输出 false

toLowerCase()和toUpperCase():将字符串转换为小写或大写。

String str = "Hello World";

String upperCase = str.toUpperCase();
System.out.println(upperCase); // 输出 "HELLO WORLD"


String lowerCase = str.toLowerCase();
System.out.println(lowerCase); // 输出 "hello world"

split(String regex):根据指定的分隔符将字符串拆分为字符串数组。

String str = "Hello,World,Java";
String[] splitArray = str.split(",");
for (String s : splitArray) {
    System.out.println(s);
}
输出内容:
Hello
World
Java

replace(CharSequence target, CharSequence replacement):将字符串中的指定字符或字符串替换为新的字符或字符串。(可以单个或多个修改)

String str = "Hello World";
String replacedStr = str.replace("o", "e").replace("l", "L");
System.out.println(replacedStr); // 输出 "HeLLe WorLd"

使用技巧

避免频繁的字符串连接操作,尽量使用StringBuilder或StringBuffer来处理大量字符串连接的情况。

使用equals()方法比较字符串的内容,而不是使用"=="操作符来比较对象的引用。

使用trim()方法去除字符串两端的空格。

String str = " Hello World ";
String trimmed = str.trim();
System.out.println(trimmed); // 输出 "Hello World"

使用String.format()或StringBuilder.append()来构建复杂的字符串。

String name = "小明";
int age = 25;
String country = "中国";
String message = String.format("我的名字是%s,我%d岁,我来自%s。", name, age, country);
System.out.println(message); // 输出 "我的名字是小明,我25岁,我来自中国。"

 在上面代码中,我们使用String.format()方法来构建一个包含变量的字符串。在格式化字符串中,我们使用%s表示字符串占位符,%d表示整数占位符。然后,使用变量name、age和country作为参数传递给String.format()方法,生成最终的字符串message。(这里和C语言的字符串创建很相似)

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String message = sb.toString();
System.out.println(message); // 输出 "Hello World"

在上面代码中,我们使用StringBuilder类创建一个可变的字符串对象。然后,使用append()方法将多个字符串逐个添加到StringBuilder对象中。最后,使用toString()方法将StringBuilder对象转换为不可变的字符串。 

总结

String类是JAVA中常用的字符串类型,具有不可变性和字符串池的特点。熟练掌握String类的常用方法和使用技巧,可以提高字符串处理的效率和准确性。在实际开发中,合理使用String类的相关方法,可以更好地处理和操作字符串数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿汤哥798

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值