常用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.statrsWith("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)
;//返回用s1替换所有s2后的字符串
replaceFirst(String s1,String s2)
;//返回用s1替换第一个s2后的字符串
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 s = String.valueOf(a);
System.out.print(s); // 10
输出:
10
StringBulider
一个可变的字符序列。
构造方法
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
输出:
删除
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)
;//同上,从指定位置查找
字符串反转
reverse()
;//将此字符串反转
字符串截取
substring(int start)
;//返回此字符串从start开始至length-1结束的String
substring(int start, int end)
;//返回此字符串从start开始至end-1结束的String
toString()
;//返回此序列中的String表示形式。
(注意以上方法的返回值都是String而不是StringBuilder)
常用JAVA API :String 、StringBuilder、StringBuffer的常用方法和区别的更多相关文章
- java中String StringBuilder StringBuffer比较和效率(性能)测试
string stringbuilder stringbuffer三者的区别 从JDK源码看,String.StringBuilder.StringBuffer都是存放在char[] 数组字符串. 简 ...
- java中string stringbuilder stringbuffer 的区别
1. String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间. String a = "a&qu ...
- JAVA记录-String/StringBuilder/StringBuffer区别
- 7.算法竞赛中的常用JAVA API :String 、StringBuilder、StringBuffer常用方法和区别(转载)
7.算法竞赛中的常用JAVA API :String .StringBuilder.StringBuffer常用方法和区别 摘要 本文将介绍String.StringBuilder类的常用方法. 在j ...
- Java学习——String,StringBuffer和StringBuilder
Java学习——String,StringBuffer和StringBuilder 摘要:本文主要介绍了String字符串在内存中的存储情况,以及StringBuffer和StringBuilder的 ...
- java中String、StringBuffer、StringBuilder的区别
java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...
- 常用类:String,StringBuffer,StringBuilder
String String类被final修饰符修饰,所以不能将其进行继承,所有对它的改变都要重新创建一个新的地址 1.String的构造器 String() String(byte []bytes)/ ...
- Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)
java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...
- Java基础——java中String、StringBuffer、StringBuilder的区别
(转自:http://www.cnblogs.com/xudong-bupt/p/3961159.html) java中String.StringBuffer.StringBuilder是编程中经常使 ...
- JDK源码分析系列---String,StringBuilder,StringBuffer
JDK源码分析系列---String,StringBuilder,StringBuffer 1.String public final class String implements java.io. ...
随机推荐
- vue中的watch
1.第一种 watch:{ total:{ // total:要检测的数据 handler:(val,oldVal)=>{ // handler方法自动执行 }, deep:true / ...
- 洛谷P1449——后缀表达式(栈模拟)
题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...
- 学习PHP中好玩的Gmagick图像操作扩展的使用
在 PHP 的图像处理领域,要说最出名的 GD 库为什么好,那就是因为它不需要额外安装的别的什么图像处理工具,而且是随 PHP 源码一起发布的,只需要在安装 PHP 的时候添加上编译参数就可以了. G ...
- Python项目生成requirements.txt文件之pipreqs的使用
生成requirements.txt时使用pip freeze > requirements.txt会将环境下所有的安装包都进行生成,再进行安装的时候会全部安装很多没有的包.耗时耗力其实是不可取 ...
- [转载]Nginx负载均衡配置实例详解
负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...
- P7443-加边【博弈论】
正题 题目链接:https://www.luogu.com.cn/problem/P7443?contestId=41429 题目大意 \(n\)个点的一棵有根树,两个人从一号点开始进行有向图博弈. ...
- Filter和Interceptor
Filter的使用 拦截user下的所有请求 @WebFilter("/user/*") public class UserFilter implements Filter { @ ...
- AOJ/高等排序习题集
ALDS1_5_B-MergeSort. Description: Write a program of a Merge Sort algorithm implemented by the follo ...
- Java中的引用类型和使用场景
作者:Grey 原文地址:Java中的引用类型和使用场景 Java中的引用类型有哪几种? Java中的引用类型分成强引用, 软引用, 弱引用, 虚引用. 强引用 没有引用指向这个对象,垃圾回收会回收 ...
- 运用shapefile.js解析Shp文件
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...