您的位置:首页 > 其它

String类常用方法

2017-07-30 20:42 323 查看
String类

String表示字符串常量,一旦定义无法改变,

如String s = “hello”;

s = “world”;

java中默认字符串常量为String对象

hello和world存在于方法区的常量池中,s中存储的实际上是String对象的引用的地址

以上两句改变的不是s的值,而是s指向的String对象的引用的地址

构造器
String(byte[] bytes)
通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes, int offset, int length, Charset charset)
通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。
String(StringBuffer buffer)
分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。
String(StringBuilder builder)
分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。

方法
返回值类型   方法
char        charAt(int index)               /
9994
/返回指定索引处的char值,index从0开始
例:String s = "你好,很高兴ANBD见到你";
char c = s.charAt(3);
System.out.println(c);  //结果为  很

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

int         compareToIgnoreCase(String str) //不考虑大小写比较两个字符串
String      concat(String str)              //将指定字符串连接到此字符串的结尾,
例:str1.concat(str2)

boolean     contains(CharSequence s)        //当且仅当此字符串包含指定的 char 值序列时,返回 true,
例:char[] ch = {'a','b','c','d'};
String m = String.copyValueOf(ch);
结果 m="abcd"
boolean     startsWith(String prefix)       //测试此字符串是否以指定的前缀开始
boolean     endswith(String suffix)         //测试此字符串是否以指定的后缀结束
例:String s6 = "helloWorld.java";
System.out.println(s6.endsWith(".java"));
结果:true
boolean     equals(Object anObject)         //将此字符串与指定的对象比较
equals常用于字符串或是对象引用所指向的值的比较

boolean     equalsIgnoreCase(String anotherString)
//将此 String 与另一个 String 比较,不考虑大小写

int         hashCode()                          //返回此字符串的哈希码
int         indexOf(String str)                 //返回指定字符串在该字符串中第一次出现的位置索引
例:String s1 = "你好,很高兴ANBD见到你好";
System.out.println(s1.indexOf("你好"));
结果: 0

int         lastIndexOf(char ch)                //返回指定字符在该字符串中最后一次出现的索引
int         lastIndexOf(String str)             //返回指定字符串在该字符串中最后一次出现的索引

byte[]      getBytes()                          //将该字符串编码为byte序列,并存储到新的byte数组中
int         length()                            //返回此字符串的长度
boolean     isEmpty()                           //当且仅当length()为0时返回true
boolean     matches(String regex)               //判断此字符串是否匹配给定的正则表达式

String      replace(char oldChar,char newChar)  //返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的
char[]      toCharArray()                       //将该字符串转换为一个新的字符数组
String      toLowerCase()                       //将该字符串中的所有大写都转换成小写
String      toString()                          //返回该字符串本身
String      trim()                              //返回该字符串副本,去除开头的空白和字符串后面的空白

String      substring(int beginIndex)           //从beginIndex位置开始截取字符串
String[]    split(String regex)                 //根据给定的正则表达式来拆分此字符串,获得一个字符串数组

static String  valueOf(基本数据类型)          //返回该参数的字符串形式,
例:String.valueOf(20.5),结果为20.5(String)
参数中的"基本数据类型"指的是byte,short,int,long,float,
double,boolean,char,包括字    符数组char[]以及Object对象
其中byte,short会被默认为int型,需要时可以强转
该方法常和BigDecimal一起使用解决double类型计算数据精度丢失问题,保证数据的精确性


StringBuffer类

线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符

例:

String s = “你好,我好”;

StringBuffer sb = new StringBuffer(s);

sb.append(“,大家好”);

System.out.println(sb);

结果是 你好,我好,大家好

StringBuffer与StringBuilder在进行字符串拼接时,不会新创建引用变量,比String节约时间及内存

需要做大量字符串拼接使用 StringBuffer 较String效率高

在单线程时StringBuffer与StringBuilder效率相同, StringBuffer线程同步,StringBuilder线程不同步,在多线程时,StringBuilder效率高但是不安全。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: