7.算法竞赛中的常用JAVA API :String 、StringBuilder、StringBuffer常用方法和区别

摘要

本文将介绍String、StringBuilder类的常用方法。

在java中String类不可变的,创建一个String对象后不能更改它的值。所以如果需要对原字符串进行一些改动操作,就需要用StringBuilder类或者StringBuffer类,StringBuilder比StringBuffer更快一些,缺点是StringBuilder不是线程安全的,但在算法竞赛中一般我们用不到多线程。所以,主要推荐使用StringBuilder类。

String:

方法概述

String 类包括的方法可用于检查序列的单个字符比较字符串搜索字符串提取子字符串创建字符串副本并将所有字符全部转换为大写或小写

String的遍历

String有两种遍历方式,第一种charAt()方法

第二种是先转化为字符数组,再挨个遍历

charAt(int i);//返回索引i处的字符

length();//返回此字符串的长度

isEmpty();//判空 当length()为0时返回true

String s = "123456";
for(int i = 0; i < s.length(); i++)
System.out.println(s.charAt(i)+" ");// 1 2 3 4 5 6

输出:

toCharArray();//返回此字符串的字符数组

String s = "123456";
char[] s1 = new char[10];
s1 = s.toCharArray();
for(int i = 0; i < s1.length; i++){
System.out.print(s1[i]+" ");// 1 2 3 4 5 6

输出:

String的比较

compareTo(String anotherString)//按字典顺序比较两个字符串

compareToIgnoreCase(String anotherString)//按字典顺序且不区分大小写比较两个字符串

equals(String anotherString)//判断两个字符串是否相等,相等返回true否则返回false

equalsIgnoreCase(String str)//同上,不区分大小写。

String s = "abcde";
String s1 = "Abcde"; int f = s.compareTo(s1);
int f1 = s1.compareToIgnoreCase(s);
Boolean f2 = s.equals(s1);
Boolean f3 = s.equalsIgnoreCase(s1); System.out.println(f);// 32
System.out.println(f1); // 0
System.out.println(f2); // false
System.out.println(f3); // true

输出:

compareTo()和compareToIgnoreCase()方法的返回值:

a.compareTo(b)

如果a > b 返回大于0的整数

如果a == b 返回0

如果a < b 返回小于0的整数

其实是返回a和b第一个不同字符的差值。

搜索子字符串

indexOf(int ch);// 返回指定字符在此字符串中第一次出现的索引

indexOf(int ch, int fromindex); // 同上, 从指定索引开始搜索

indexOf(String str);//返回子串在此字符串中第一次出现的索引

indexOf(String str, int fromindex);同上,从指定索引开始搜索

lastIndexOf(int ch);//返回指定字符在此字符串最后一次出现的索引

lastIndexOf(int ch, int fromindex);//同上, 从指定索引开始搜索

lastIndexOf(String str);//返回子串在此字符串最后一次出现的索引

lastIndexOf(String str, int fromindex);//同上, 从指定索引开始搜索

startsWith(String prefix);// 检查是否以某一前缀开始

(以上如果不存在,均返回 -1,如果要判断某个字符,应传入字符的Unicode编码)

String s = "12345346";
String s1 = "34";
int f = s.indexOf(s1); // 从索引0开始搜索
int f1 = s.indexOf(s1, 6); // 从索引6开始搜索
int f2 = s.lastIndexOf(s1);
Boolean f3 = s.startsWith("12");
System.out.println(f); // 2
System.out.println(f1);// -1
System.out.println(f2);// 5
System.out.println(f3);// true

输出:

字符串拆分

split(String regex); // 根据正则表达式拆分

String s = "ABC DEF";
String s1[] = s.split(" ");//根据空格拆分
System.out.println(s1[0]);// ABC
System.out.println(s1[1]);// DEF

输出:

提取子字符串

substring(int beginIndex, int endIndex);//返回从begin开始到end-1结束的子串

String s = "123456";
String s1 = s.substring(0,3);// 123
System.out.println(s1);

输出:

子串的替换

replaceAll(String s1,String s2);//用s2替换目标字符串中出现的所有s1

replaceFirst(String s1,String s2);//用s2替换目标字符串中出现的第一个s1

String s = "11123456";
String s1 = s.replaceAll("1", "a");
String s2 = s.replaceFirst("1","a");
System.out.println(s1);///aaa23456
System.out.println(s2);///a1123456

输出:

转换大小写

toUpperCase(); //将此字符串中的所有字母都换为大写
toLowerCase()//将此字符串中的所有字母都换为小写

将其他类型的数据转化为字符串

valueOf(char[] data);//返回 char数组的字符串表示形式

valueOf(char[] data,int offset, int count)//返回 char 数组参数的特定子数组的字符串表示形式。

valueOf(int i);//返回 int 参数的字符串表示形式。

		int a = 10;
String aa = "10";
System.out.println(aa.equals(a));//false
System.out.println(aa.equals(String.valueOf(a)));//true

valueOf(char[] data,int offset, int count),截取的字符包括offset,但是不包括count例子如下️

		char[] chs = {'a','b','c','d'};
String chss = String.valueOf(chs, 0, 2);
for (int i = 0; i < chss.length(); i++) {
System.out.println(chss.charAt(i));
}

输出:

a
b

StringBuilder

一个可变的字符序列。

构造方法

StringBuilder();//构建一个空的可变字符串。

StringBuilder(String str);//构建一个值为str的可变字符串。

StringBuilder s = new StringBuilder();//
StringBuilder s1 = new StringBuilder("123456");//123456

遍历

charAt(int i);// 返回索引i位置的字符

length();//返回此字符串的长度

StringBuilder s = new StringBuilder("123");
for(int i = 0; i < s.length(); i++)
System.out.println(s.charAt(i)+" ");// 1 2 3

增加

append(String str);//在此字符串追加str。

append(StringBuilder str);//在此字符串追加str。

append(char[] str, int offset, int len);//将char的子数组追加到此字符串

StringBuilder s = new StringBuilder("123");
StringBuilder s1 = new StringBuilder("456");
s.append(s1);
System.out.print(s);// 123456

也可以添加其他类型的数据

		sb.append(456);
sb.append("aaa");
char ch [] = {'1','1'};
sb.append(ch);
for (int i = 0; i < sb.length(); i++) {
System.out.print(sb.charAt(i));
}

输出:

123456aaa11

删除

delete(int start, int end);//移除此序列从start到end-1的字符串

deleteCharAt(int index);//移除指定索引上的char

		StringBuilder s = new StringBuilder("123");
StringBuilder s1 = new StringBuilder("456");
s.delete(0, 1);
s1.deleteCharAt(1);
System.out.println(s);// 23
System.out.println(s1);// 46

修改

setCharAt(int index, char ch);//将指定索引处的字符替换为ch

注意:只能用字符串替换而不能用字符串替换

查找

indexOf(String str);//返回子字符串第一次出现的索引

indexOf(String str, int fromIndex);//同上,从指定位置查找

lastIndexOf(String str);//返回子字符串最后一次出现的索引

lastIndexOf(String str, int fromIndex);//同上,从指定位置查找

		StringBuilder sb3 = new StringBuilder();
sb3.append(0);
sb3.append(1);
sb3.append(2);
sb3.append(3);
sb3.append(3);//3
System.out.println(sb3.indexOf("3",4));//4
System.out.println(sb3.lastIndexOf("3"));//5

字符串反转

reverse();//将此字符串反转

上面sb3

System.out.println(sb3.reverse().toString());//333210

字符串截取

substring(int start);//返回此字符串从start开始至length-1结束的String
substring(int start, int end);//返回此字符串从start开始至end-1结束的String
toString();//返回此序列中的String表示形式。
(注意以上方法的返回值都是String而不是StringBuilder)

上面sb3reverse之后的

		System.out.println(sb3.substring(2).toString());//3210
System.out.println(sb3.substring(0,3).toString());//333

注:转载于 https://blog.csdn.net/GD_ONE/article/details/104055164

7.算法竞赛中的常用JAVA API :String 、StringBuilder、StringBuffer常用方法和区别(转载)的更多相关文章

  1. 算法竞赛中的常用JAVA API:PriorityQueue(优先队列)(转载)

    算法竞赛中的常用JAVA API:PriorityQueue(优先队列) PriorityQueue 翻译过来就是优先队列,本质是一个堆, 默认情况下堆顶每次都保留最小值,每插入一个元素,仍动态维护堆 ...

  2. 算法竞赛中的常用JAVA API :HashSet 和 TreeSet(转载)

    算法竞赛中的常用JAVA API :HashSet 和 TreeSet set set容器的特点是不包含重复元素,也就是说自动去重. HashSet HashSet基于哈希表实现,无序. add(E ...

  3. 算法竞赛中的常用JAVA API :HashMap 和 TreeMap(转载)

    算法竞赛中的常用JAVA API :HashMap 和 TreeMap 摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实 ...

  4. 8.算法竞赛中的常用JAVA API :Calendar日期类

    8.算法竞赛中的常用JAVA API :Calendar日期类 摘要 在蓝桥杯中有关于日期计算的问题,正好java中的Date类和Calendar类提供了对日期处理的一些方法.Date类大部分方法已经 ...

  5. 6.算法竞赛中的常用JAVA API :Math类(转载)

    6.算法竞赛中的常用JAVA API :Math类 求最值 最小值 Math.min(int a, int b) Math.min(float a, float b) Math.min(double ...

  6. 算法竞赛中的常用JAVA API :大数类(转载)

    5.算法竞赛中的常用JAVA API :大数类 摘要 java中的基础数据类型能存储的最大的二进制数是 2 ^ 63 - 1 对应的十进制数是9223372036854775807(long类型的最大 ...

  7. JAVA记录-String/StringBuilder/StringBuffer区别

  8. java中String StringBuilder StringBuffer比较和效率(性能)测试

    string stringbuilder stringbuffer三者的区别 从JDK源码看,String.StringBuilder.StringBuffer都是存放在char[] 数组字符串. 简 ...

  9. 常用JAVA API :String 、StringBuilder、StringBuffer的常用方法和区别

    摘要 本文将介绍String.StringBuilder类的常用方法. 在java中String类不可变的,创建一个String对象后不能更改它的值.所以如果需要对原字符串进行一些改动操作,就需要用S ...

随机推荐

  1. Vue style与css的var()

    vue绑定style直接给css的var变量传递一个值,然后结合css的var()函数使用这个值. 在data里面定义一个变量然后给定一个值,后期修改这个值之后,所有依赖这个变量的css样式都会被响应 ...

  2. 重新整理 .net core 实践篇————配置中心[四十三]

    前言 简单整理一下配置中心. 正文 什么时候需要配置中心? 多项目组并行协作 运维开发分工职责明确 对风险控制有更高诉求 对线上配置热更新有诉求 其实上面都是套话,如果觉得项目不方便的时候就需要用配置 ...

  3. ClouderaManager安装时mysql信息问题

    在安装ClouderaManager5.7时,需要输入mysql信息,如下所示: 记录在此,以防忘记: database host name:localhost database type:MySQL ...

  4. mongodb数据的导出导入

    1.[导出]mongoexport -h (主机名) -d (库) -c (集合名) -o (路径) -u (账号) -p (密码)示例:mongoexport -h localhost -d jav ...

  5. 淘宝的sign参数js逆向

    前言:现在网站都有很强的反爬机制,都是非常常见的是用js前端加密参数,所以不得不去分析和逆向js混淆后的代码 一. 打开天猫或淘宝,shift+ctrl+F12全局搜索sign参数. 这里发现很多地方 ...

  6. 160crackme002

    一.查壳 结果:vb写的,并且无壳 二.运行程序 发现了这个程度调用了vb调用窗口的api.这时有两种方式: 1.再重新调试,运行到有窗口的时候,F12暂停,按ctrl+K,查看dll调用,再数据窗口 ...

  7. java基础---类和对象(1)

    一. 类和对象 面向对象:以属性和行为的观点去分析现实生活中的事物,将功能封装进对象, 强调具备了功能的对象,以类/对象为最小单位,考虑谁来做 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做 ...

  8. Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组

    Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 思路 这道题,两个数组原本就有序.于是我们采用双指针 ...

  9. 开源协同办公平台部署教程:O2OA PAAS平台部署

    一.镜像制作1.将安装介质o2server-5.0.3-linux.zip上传至镜像制作服务器上.(上传目录为/paas/xxhpaas/moka/o2oa)2.使用unzip命令解压安装包,参考命令 ...

  10. 什么是EL表达式,以及作用

    1.概念 EL(Expression Language) 是为了使JSP写起来更加简单.减少java代码,便于开发和维护. 2.语法 格式都是以"${}"表示. 3.与运算符 EL ...