java 常用类库:String ; StringBuilder和StringBuffer类

1. String 

1、String对象是不可变的

String类的value属性是用来存放字符串里面的值的。这个属性是被final修饰的。final修饰的变量不能够被第二次赋值,所以字符串是不可变的。

 

 2、java9 以后的String更节约空间,每个字符占用1个字节

String类型在java9之前采用的是char[]来保存对应的值,因此每个字符串占用2个字节。但是到了java9之后,采用byte[]数组加一个encode-flag字段来保存,字符串的每个字符只占用1个字节。所以java9的字符串会更加节约空间。

字符串常用方法

1、charAt() 获取某个下标的字符,从下标0开始

        String string = "大哥好帅";
        System.out.println(string.charAt(3));
//

2、concat()字符串拼接,返回新的字符串

        String string1 = string.concat(", 真的好帅");
        System.out.println(string1);

3、contentEquals() 盘窜一个String和StringBuffer,包含的值是否相同,返回布尔值

        String string2 = "中国";
        StringBuffer sb = new StringBuffer("中国");
        System.out.println(string2.contentEquals(sb));

4、endsWith、 startsWith 判断以什么字符串结尾或者开头

        System.out.println(string1.endsWith("好帅"));
        System.out.println(string1.startsWith("大"));

5、equals 判断两个字符串对象的内容是否相等

        String string = "大哥好帅";
        String string3 = "大哥好帅";
        System.out.println(string.equals(string3));
//true

6、equalsIgnoreCase 忽略大小写判断两个字符串是否相等

        //忽略大小写判断是否相等
        String string4Case = "HaHa 我想你";
        String string4 = "HAHA 我想你";
        System.out.println(string4Case.equalsIgnoreCase(string4));
        //true

7、getBytes() 获取字符串对应的数组

        //获取字符串对应的bytes 数组
        byte[] bytes = string4.getBytes();
        for(byte b :bytes) {
            System.out.println(b);
        }

8、indexOf 获取子串在字符串中出现的起始位置

        //获取子串出现的位置
        String subStringTest = "大哥说大哥好帅";
        System.out.println(subStringTest.indexOf("大哥"));//子串第一次出现的位置
        System.out.println(subStringTest.indexOf("大哥",1));//从指定起始位置后第一次出现的位置

9、startsWith('substr', indexNum)从某个位置开始判断是否以指定字符串开始

        //判断子串出现位置是否为指定位置,返回true/false
        String subStringTest = "大哥说大哥好帅";
        System.out.println(subStringTest.startsWith("帅",6));

10、.substring获取子字符串

        String subStringTest = "大哥说大哥好帅";
        System.out.println(subStringTest.substring(3));
//大哥好帅

11、toCharArray()将String类型的字符串转化成为char数组

        //toCharArray()将String类型的字符串转化成为char数组
        char[] chars = subStringTest.toCharArray();
        for(char c : chars){
            System.out.println(c);
        }

12、toUpperCase、toLowerCase把字符串所有字母都转化为大写:

        String love = "I Want Make Love";
        System.out.println(love.toUpperCase());
        System.out.println(love.toLowerCase());
//I WANT MAKE LOVE
//i want make love

13、.length获取字符串长度

System.out.println(love.length());

 

2.  StringBuilder和StringBuffer类

String对象是不可变的,我们在操作String的时候也会产生大量的垃圾临时变量。
如果是大量的字符串拼接操作是非常耗内存。StringBuilder和StringBuffer可以解决这个问题。
StringBuilder是线程不安全的,而StringBuffer是线程安全的,尽量使用StringBuffer。
复制代码
        //测试StringBuffer 适用大量的字符串拼接,节省内存
        StringBuffer stringBuffer = new StringBuffer("LANGUAGES:");
        stringBuffer.append("JAVA");
        stringBuffer.append(",PHP");
        stringBuffer.append(",PYTHON");
        stringBuffer.append(",GOLANG");
        stringBuffer.append(",RUBY");
        stringBuffer.append(",javascript");
        System.out.println(stringBuffer);
        System.out.println(stringBuffer.length());
复制代码

 

 

posted on   zhangmingda  阅读(116)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示