Java的String和StringBuilder
一.String
1.创建String对象的方法:
String s1="haha";
String s2=new String();
String s3=new String("haha");
2.String常用方法:
char |
charAt(int index) 返回指定索引处的 char 值。 |
int |
codePointAt(int index) 返回指定索引处的字符(Unicode 代码点)。 |
int |
codePointBefore(int index) 返回指定索引之前的字符(Unicode 代码点)。 |
int |
codePointCount(int beginIndex, int endIndex) 返回此 String 的指定文本范围中的 Unicode 代码点数。 |
int |
compareTo(String anotherString) 按字典顺序比较两个字符串。 |
int |
compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 |
String |
concat(String str) 将指定字符串连接到此字符串的结尾。 |
boolean |
contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。 |
boolean |
contentEquals(CharSequence cs) 将此字符串与指定的 CharSequence 比较。 |
boolean |
contentEquals(StringBuffer sb) 将此字符串与指定的 StringBuffer 比较。 |
static String |
copyValueOf(char[] data) 返回指定数组中表示该字符序列的 String。 |
static String |
copyValueOf(char[] data, int offset, int count) 返回指定数组中表示该字符序列的 String。 |
boolean |
endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 |
boolean |
equals(Object anObject) 将此字符串与指定的对象比较。 |
boolean |
equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。 |
static String |
format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。 |
static String |
format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。 |
byte[] |
getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
byte[] |
getBytes(Charset charset) 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。 |
void |
getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) 已过时。 该方法无法将字符正确转换为字节。从 JDK 1.1 起,完成该转换的首选方法是通过 getBytes() 方法,该方法使用平台的默认字符集。 |
byte[] |
getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
void |
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此字符串复制到目标字符数组。 |
int |
hashCode() 返回此字符串的哈希码。 |
int |
indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 |
int |
indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
int |
indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 |
int |
indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
String |
intern() 返回字符串对象的规范化表示形式。 |
boolean |
isEmpty() 当且仅当 length() 为 0 时返回 true。 |
int |
lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 |
int |
lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 |
int |
lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。 |
int |
lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 |
int |
length() 返回此字符串的长度。 |
boolean |
matches(String regex) 告知此字符串是否匹配给定的正则表达式。 |
int |
offsetByCodePoints(int index, int codePointOffset) 返回此 String 中从给定的 index 处偏移 codePointOffset 个代码点的索引。 |
boolean |
regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
boolean |
regionMatches(int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
String |
replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
String |
replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。 |
String |
replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
String |
replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
String[] |
split(String regex) 根据给定正则表达式的匹配拆分此字符串。 |
String[] |
split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。 |
boolean |
startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 |
boolean |
startsWith(String prefix, int toffset) 测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 |
CharSequence |
subSequence(int beginIndex, int endIndex) 返回一个新的字符序列,它是此序列的一个子序列。 |
String |
substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 |
String |
substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。 |
char[] |
toCharArray() 将此字符串转换为一个新的字符数组。 |
String |
toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
String |
toLowerCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 |
String |
toString() 返回此对象本身(它已经是一个字符串!)。 |
String |
toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
String |
toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 |
String |
trim() 返回字符串的副本,忽略前导空白和尾部空白。 |
static String |
valueOf(boolean b) 返回 boolean 参数的字符串表示形式。 |
package Strings; public class StringTest1 { public static void main(String[] args) { String str="I am a student!";
//求字符串长度
System.out.println("str长度为:"+str.length());
//求某个位置的字符
System.out.println("位置为7的字符为:"+str.charAt(7));
//求子字符串
System.out.println("第7到15个字符组成的子字符串为:"+str.substring(7, 14));
System.out.println("第7到15个字符组成的子字符串为:"+str.substring(7));
//求字符在字符串中第一次出现的位置
System.out.println("第一次出现a的位置:"+str.indexOf("a"));
//求字串am在字符串中第一次出现的位置
System.out.println("第一次出现am的位置:"+str.indexOf("am")); //求字符在字符串中最后一次出现的位置
System.out.println("最后次出现a的位置:"+str.lastIndexOf("a"));
//求字串am在字符串中最后一次出现的位置
System.out.println("最后一次出现am的位置:"+str.indexOf("am"));
//。。。。。。。。 } }
3.equals和==的区别:
equals是判断内容是不是相同,==是判断内存地址是不是相同的。(相当于Python中的==【equals】和is【is】)。
package Strings; public class StringTEst3 { public static void main(String[] args) { String str1="hello";
String str2="hello";
String str3=new String("hello");
System.out.println("str1和str2的内容相等:"+(str1.equals(str2)));
System.out.println("str1和str3的内容相等:"+(str1.equals(str3)));
/*在str1创建时,会在栈中生成一个变量str1,并在常量池中生成"hello"并将str1指向"hello"
,然后当str2创建时,会在栈中生成str2,然后发现“hello”已经存在变量池中,就会把str2也指向hello
所以str1和str2的地址是一样的
*/
System.out.println("str1和str2的内存地址相等:"+(str1==str2));
System.out.println("str1和str3的内存地址相等:"+(str1==str3)); } }
/*
* 输出:
* str1和str2的内容相等:true
str1和str3的内容相等:true
str1和str2的内存地址相等:true
str1和str3的内存地址相等:false
*/
4.字符串的不可变性:
String对象一旦创建,则不能修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的空间不变。
package Strings; public class StringTest4 {
public static void main(String[] args){
String str1="hello";
str1=str1+",haha";
//创建了新的对象,str1不在指向"hello",而是指向"hello,haha"
System.out.println(str1);
} }
二.StringBuilder
1.String和StringBuilder的区别:
String具有不可变性,而StringBuilder不具备。当频繁操作字符串时使用StringBuilder。
2.StringBuilder和StringBuffer:
两者基本相似,但StringBuffer是线程安全的,StringBuilder则没有,所以性能略高(推荐使用,因为大多数情况下处理字符串都是单线程的)。
3.StringBuilder:
构造方法摘要 | |
---|---|
StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 |
|
StringBuilder(CharSequence seq) 构造一个字符串生成器,它包含与指定的 CharSequence 相同的字符。 |
|
StringBuilder(int capacity) 构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。 |
|
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。 |
方法摘要 | |
---|---|
StringBuilder |
append(boolean b) 将 boolean 参数的字符串表示形式追加到序列。 |
StringBuilder |
append(char c) 将 char 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(char[] str) 将 char 数组参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(char[] str, int offset, int len) 将 char 数组参数的子数组的字符串表示形式追加到此序列。 |
StringBuilder |
append(CharSequence s) 向此 Appendable 追加到指定的字符序列。 |
StringBuilder |
append(CharSequence s, int start, int end) 将指定 CharSequence 的子序列追加到此序列。 |
StringBuilder |
append(double d) 将 double 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(float f) 将 float 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(int i) 将 int 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(long lng) 将 long 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(Object obj) 追加 Object 参数的字符串表示形式。 |
StringBuilder |
append(String str) 将指定的字符串追加到此字符序列。 |
StringBuilder |
append(StringBuffer sb) 将指定的 StringBuffer 追加到此序列。 |
StringBuilder |
appendCodePoint(int codePoint) 将 codePoint 参数的字符串表示形式追加到此序列。 |
int |
capacity() 返回当前容量。 |
char |
charAt(int index) 返回此序列中指定索引处的 char 值。 |
int |
codePointAt(int index) 返回指定索引处的字符(统一代码点)。 |
int |
codePointBefore(int index) 返回指定索引前的字符(统一代码点)。 |
int |
codePointCount(int beginIndex, int endIndex) 返回此序列指定文本范围内的统一代码点。 |
StringBuilder |
delete(int start, int end) 移除此序列的子字符串中的字符。 |
StringBuilder |
deleteCharAt(int index) 移除此序列指定位置上的 char 。 |
void |
ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。 |
void |
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst 。 |
int |
indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。 |
int |
indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 |
StringBuilder |
insert(int offset, boolean b) 将 boolean 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, char c) 将 char 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, char[] str) 将 char 数组参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int index, char[] str, int offset, int len) 将数组参数 str 子数组的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int dstOffset, CharSequence s) 将指定 CharSequence 插入此序列中。 |
StringBuilder |
insert(int dstOffset, CharSequence s, int start, int end) 将指定 CharSequence 的子序列插入此序列中。 |
StringBuilder |
insert(int offset, double d) 将 double 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, float f) 将 float 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, long l) 将 long 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, Object obj) 将 Object 参数的字符串表示形式插入此字符序列中。 |
StringBuilder |
insert(int offset, String str) 将字符串插入此字符序列中。 |
int |
lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。 |
int |
lastIndexOf(String str, int fromIndex) 返回最后一次出现的指定子字符串在此字符串中的索引。 |
int |
length() 返回长度(字符数)。 |
int |
offsetByCodePoints(int index, int codePointOffset) 返回此序列中的一个索引,该索引是从给定 index 偏移 codePointOffset 个代码点后得到的。 |
StringBuilder |
replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。 |
StringBuilder |
reverse() 将此字符序列用其反转形式取代。 |
void |
setCharAt(int index, char ch) 将给定索引处的字符设置为 ch 。 |
void |
setLength(int newLength) 设置字符序列的长度。 |
CharSequence |
subSequence(int start, int end) 返回一个新字符序列,该字符序列是此序列的子序列。 |
String |
substring(int start) 返回一个新的 String ,它包含此字符序列当前所包含字符的子序列。 |
String |
substring(int start, int end) 返回一个新的 String ,它包含此序列当前所包含字符的子序列。 |
String |
toString() 返回此序列中数据的字符串表示形式。 |
void |
trimToSize() 尝试减少用于字符序列的存储空间。 |
package Strings; public class StringTest5 { public static void main(String[] args) {
StringBuilder str=new StringBuilder("hello");
// str.append(",");
// str.append("world!");
// System.out.println("str="+str);
//添加字符串
System.out.println("str="+str.append(",").append("world!"));
//替换字符串
//1.先delete,后insert
System.out.println("str="+str.delete(6, 11).insert(6,"WORLD"));
//2.使用replece
System.out.println("str="+str.replace(6,11,"WORLD"));
//取出子字符串
System.out.println("str="+str.substring(0,2)); } }
Java的String和StringBuilder的更多相关文章
- 探秘Java中String、StringBuilder以及StringBuffer
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...
- java中String、StringBuilder、StringBuffer三者的区别
在Java项目开发中,字符串是最长使用的数据类型,而有关字符串的String.StringBuilder.StringBuffer三者又常常让人分不清楚什么时候该使用哪个. 特此整理一下. Strin ...
- Java中String、StringBuilder以及StringBuffer
原文出处: 海子 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffe ...
- Java基础 -- String,StringBuilder,StringBuffer三者的区别
结论 1-String,StringBuilder,StringBuffer 之间的区别主要是在两个方面,即运行速度和线程安全这两方面: 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:St ...
- java中String与StringBuilder的区别
相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天我在这里重新把这个概念给大家复习一下,顺便牵出 J2SE ...
- Java基础 String/StringBuff/StringBuilder 常用操作方法复习/内存分析/三者的效率比较
附:jdk1.8使用IDEA安装.创建.使用JUnit单元测试 笔记总结: /**String 复习 * 1.像C++这样的char arr[]="..." 的方式无法声明Java ...
- JAVA中String和StringBuilder类的特点及使用
转自:https://www.imooc.com/code/2202 仅做个人学习记录之用,侵删! 什么是 Java 中的字符串 在 Java 中,字符串被作为 String 类型的对象处理. Str ...
- java中 String StringBuffer StringBuilder的区别
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...
- Java基础-String和StringBuilder类型(11)
String类概述 字符串是由多个字符组成的一串数据字符串可以看成是字符数组 构造方法 public String(String original)public String(char[] value ...
随机推荐
- Sublime Text 3下载安装以及安装HTML-CSS-JS Prettify代码格式化插件
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Sublime Text的安装以及安装插件步骤. 下载Sublime Text 官网地址:http://www.sublimetex ...
- WebApiClient与Asp.net core DI的结合
1 WebApiClient 一款基于HttpClient封装,只需要定义c#接口并修饰相关特性,即可异步调用远程http接口的客户端库 WebApiClient WebApiClient.Exten ...
- Python generator和yield介绍
Python生成器(generator)并不是一个晦涩难懂的概念.相比于MetaClass和Closure等概念,其较为容易理解和掌握.但相对于程序结构:顺序.循环和分支而言其又不是特别的直观.无论学 ...
- 【Tomcat】Tomcat工作原理及简单模拟实现
Tomcat应该都不陌生,我们经常会把写好的代码打包放在Tomcat里并启动,然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了,那么Tomcat是如何工作的? 一.Tomcat工作原理 我们 ...
- MySQL 字符集和校对
字符集是指一种从二进制编码到某类字符符号的映射,校对是一组用于某个字符集的排序规则.每一类编码字符都有其对应的字符集和校对规则 MySQL 如何使用字符集 每种字符集都可能有多种校对规则,并且都有一个 ...
- arcgis api 3.x for js 入门开发系列十八风向流动图(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- K60用IRA通过j-link下载失败,解决方法
K60在用飞思卡尔原厂的例程时,例程编译时没有问题,但是烧写时不成功,出现以下提示,请问该如何解决这个问题?提示1.Miss or malformed flash loader specificati ...
- MyBatis Generator 生成器把其他数据库的同名表生成下来的问题
[问题] 使用MyBatis Generator生成器时,发现Mapper文件中出现字段与连接数据库不符,经过查找发现该表是其他数据库的同名表的字段. [解决问题] 在构造文件中,这里是generat ...
- Python 之网络式编程
一 客户端/服务器架构 即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件B/S架构(web服务) C/S架构与Socket的关系: 我们学习Socket就是为了完成C/S的开发 二 OSI七 ...
- Windows Cluster 在群集管理器下 集群或可用性组 都不显示的问题
作为一个IT成员,特别是偏支持的.很多时候就是和各种异常打交道,总会碰到一些奇奇怪怪的问题.很多时候,可能是一个小小的异常都需要花费很长时间去解决. SQL Server AlwaysOn 是建立在W ...