java中string工具类_Java 常用工具类之 String 类

String 类的特点:

字符串对象一旦被初始化就不会被改变.

//以下代码的区别:

String s = "abc"; // 在常量池中创建一个字符串对象, 池中没有就建立, 池中有,直接用.

String s1 = new String("abc"); // 在堆内存中创建两个对象, 一个为 new 对象, 一个为字符串对象 "abc"

System.out.println(s==s1); // false

System.out.println(s.equals(s1)); // String 类中的equals()方法复写了 Object 类中的 equals()方法

// 比较的是字符串的内容, 不是地址

字符串的常见操作方法:

构造函数

转换

// 将数组(整体或部分)转换为字符串

byte[] arr = {65,66,67};

String s = new String(arr); // s=abc;

char[] arr1 = {'a','b','c'};

String s1 = new String(arr1); // s=abc

一般方法

查找对象中的方法,需要确定两点: 返回值类型和参数类型

获取:

// 1.1 获取字符串中字符的个数(长度), 数组中长度为属性, 直接 array.length 获取即可

int length();

// 1.2 根据位置获取字符

char charAt(int index);

// 1.3 根据字符获取在字符串中第一次出现的位置. 另外, 可以根据 -1,来判断该字符或字符串是否存在

int indexOf(int ch); // 参数为 int, 表示支持 ASCII 码数值

int indexOf(int ch, int fromIndex); // 从指定位置进行查找 ch 第一次出现的位置

int indexOf(String str); // 查找字符串

int indexOf(String str, int fromIndex); // 从指定位置进行查找 str 第一次出现的位置

int lastIndexOf(int ch); //从后往前找

// 1.4 获取字符串中的一部分字符串, 包含 begin, 不包含 end, 返回子字符串对象

String substring(int beginIndex, int endIndex);

String substring(int beginIndex);

转换

// 2.1 将字符串转成字符串数组(字符串的切割)

String[] split(String regex); // 传递的是切割规则

// 2.2 将字符串转成字符数组

char[] toCharArray();

// 2.3 将字符串转成字节数组

byte[] getBytes();

// 2.4 将字符串中的字母转成大小写, 返回一个新字符串

String toUpperCase();

String toLowerCase();

// 2.5 将字符串中的内容进行替换

String replace(char oldchar, char newchar()); // 返回一个新的字符串.如果 oldchar 不存在于字符串中, 返回原字符串

String replace(String s1, String s2); // 替换字符串

// 2.6 去除字符串两边空格, 返回一个新的字符串

String trim();

// 2.7 将字符串进行连接

String concat(string);

判断

// 3.1 两个字符串内容是否相同

boolean equals(Object obj);

boolean equalsIgnoreCase(String str); // 忽略大写比较字符串内容

// 3.2 字符串中是否包含指定字符串

boolean contains(String str);

// 3.3 字符串是否以指定字符串开头, 是否以指定字符串结尾

boolean startsWith(String prefix);

boolean endsWith(String suffix);

比较

// 两个字符串的比较, 返回值为 整数类型

int compareTo(String anotherString);

求两个字符串中最大相同的子串

6acfbd537619f3fdec56d7b0c7494443.png

// "qwerabcdtyuiop" 和 "xcabcdvbn" 中最大相同的子串

// 思路:

// 1. 既然取得是最大子串, 先看短的那个字符串是否在长的那个字符串中.

// 如果存在, 短的那个字符串就是最大子串.

// 2. 如果不是, 那么就将短的那个子串进行长度递减的方式取子串, 去长串中判断是否存在,

// 如果存在就已找到, 就不用在找了.

public static String getMaxSubstring(String s1, String s2){

for(int i = 0; i < s2.length(); i++){

for(int a = 0, b = s2.length()-i; b != s2.length()+1; a++,b++){

String sub = s2.substring(a, b);

if(s1.contains(sub))

return sub;

}

}

return null;

}

StringBuffer 类

StringBuffer 就是字符串缓冲区

用于存储数据的容器

相比于数组, StringBuffer 的特点:

长度是可变的

可以存储不同类型的数据

存储的数据最终要转成字符串进行使用

可以对字符串进行修改

具备的功能,如下:

添加:

StringBuffer append(data); // 在末尾添加数据

StringBuffer insert(int offset, data); // 指定位置插入任意数据

删除, 操作容器删除, 方法不外乎: delete, 或者 remove

StringBuffer delete(int start, int end); // 包含头, 不包含尾

StringBuffer deleteCharAt(int index); // 删除指定位置的元素

查找

char charAt(index);

int indexOf(String str);

int lastIndexOf(String str);

修改

StringBuffer replace(start, end, string); // 替换一段字符, 包含头, 包含尾

void setCharAt(index, char); // 根据指定位置, 替换一个字符

void setLength(); // 设置字符缓冲区长度, StringBuffer 的默认长度为 16 个字符

StringBuffer reverse(); // 反转

可变数组的原理:

2fe0ea868964f0f4b1cdb2567b9db2a5.png

StringBuilder 类

JDK 1.5 以后出现了功能和 StringBuffer 一模一样的对象, 就是 StringBuilder

两者的不同之处:

StringBuffer 是线程同步的, 安全.通常用于多线程

StringBuilder 是线程不同步的, 不安全. 通常用于单线程, 它的出现是为了提高效率, 因为不需要判断锁.

JDK 升级, 注重以下三点:

简化书写

提高效率

增加安全性

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值