Java基础笔记_9_常用类_String_StringBuilder

一 String类

1 创建String对象的方式

// 先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放"张三"
// 如果没有,则将"张三"存放进栈,并令str指向"张三"
// 如果已经有"张三",则直接令str指向“张三”
String str1 = "张三";

// 用new()新建的对象会在存放于堆中。每调用一次new()就会创建一个新的对象。
String str2 = new String("张三");
String str3 = new String();
str3 = "张三";

 2 String对象的不变性

String 对象创建后则不能被修改,是不可变的。所谓的修改其实是创建了新的对象,所指向的内存空间不同

public class StringSample {
    public static void main(String[] args) {
        String str1 = "张三";
        String str2 = "张三";
        String str3 = new String("张三");
        String str4 = new String("张三");

        // 多次出现的字符串常量,java编译程序只创建1个
        System.out.println(str1 == str2); // true
        // new String(); 会创建一个新的实例,指向新的内存空间
        System.out.println(str1 == str3); // false
        System.out.println(str3 == str4); // false

        // equals只比较两个字符串的内容是不是相同
        boolean retVal = str1.equals(str3);
        System.out.println(retVal); // true

        // str1 被修改。其实际是指向了新的内存空间
        str1 = str1 + "李四";
    }
}

3 常用方法

更多可参考:https://www.runoob.com/java/java-string.html

int length()返回当前字符串的长度
int indexOf(int ch)查找ch字符在该字符串中第一次出现的位置
int indexOf(String str)查找str子字符串在该字符串中第一次出现的位置
int lastIndexOf(int ch)查找ch字符在该字符串中最后一次出现的位置
int lastIndexOf(String str)查找str子字符串在该字符串中最后一次出现的位置
String substring(int beginIndex)获取从beginIndex位置开始到结束的子字符串
String substring(int beginIndex, int endIndex) 获取从beginIndex位置开始到endIndex位置的子字符串
String trim()返回去除了前后空格的字符串
boolean equals(Object obj)将该字符串与制定对象比较,返回true或false
String toLowerCase()将字符串转换为小写
String toUpperCase()将字符串转换为大写
char charAt(int index)获取字符串中指定位置的字符
String[] split(String regex, int limit)将字符串分割为子字符串,返回字符串数组
byte[] getBytes()将该字符串转换为byte数组

4 实例

public class StringSample {
    public static void main(String[] args) {
        String str = "张三和李四是好兄弟";

        System.out.println("str的长度:"+str.length()); // 9
        System.out.println("[李]出现的位置:"+str.indexOf("李")); // 3
        System.out.println("[3,5]之间的字符串:"+str.substring(3,5)); // 李四
    }
}

二 StringBuilder

String 类具有是不可变性,当频繁操作字符串时,就会额外额外创建一个对象,产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。

StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。

 1 创建StringBuilder对象的方式

StringBuilder sb2 = new StringBuilder("张三");

2 常用方法

str.append("abc")追加字符串 abc
str.insert(num,"abc")在字符串num位置(从左到右数num个字符后,添加)添加 abc 内容
str.delete(int start,int end)删除字符串
str.toString()转换为string对象
str.length()获取字符的长度
str.reverse()将字符序列逆序

3 示例

public class StringSample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("张三");

        System.out.println(sb.append("李四")); // 张三李四
        System.out.println(sb.insert(0, "爱").insert(0, "我")); // 我爱张三李四
        System.out.println(sb.delete(0,1)); // 爱张三李四
        System.out.println(sb.reverse()); // 四李三张爱
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值