String

来源:互联网 发布:程序员工作体会 编辑:程序博客网 时间:2024/06/01 09:35
一、String类
在Java语言中将字符串作为对象来处理,可以通过java.lang包中的String类来创建字符串对象。
创建字符串:在Java语言中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法,String类的常用构造方法如下:
1.String(char a[])方法:用一个字符数组a创建String对象。
char a[]={'b','o','w','e','n'};
String s=new String(a);等价于String s=new String("bowen");
2.String(char a[],int offset,int length)方法:提取字符数组a中的一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度。
char a[]={'b','o','w','e','n'};
String s=new String(a,2,3);等价于String s=new String("wen");
除通过以上几种使用String类的构造方法创建字符串变量外,还可通过字符串常量的引用赋值给一个字符串变量。
String str1,str2;
str1="bowen";
str2="bowen";
此时str1和str2引用相同的字符串常量,指向的是同一个对象,因此具有相同的实体。
String s1=“abc”与String s2=new String(“abc”)的区别:s1是一个类类型变量,“abc”是一个对象。s1在内存中有一个对象,s2在内存中有两个对象。
二、连接字符串
1.连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个字符串并产生一个新的String对象。
Java中一句相连的字符串不能直接分开在两行中写。如果一个字符串太长,为了便于阅读要将字符串分开在两行上书写时,应该使用“+”将两个字符串连起来,在加号之后换行。
2.连接其他数据类型
字符串也可以同其他基本数据类型进行连接。如果将字符串同这些数据类型数据进行连接,会将这些数据直接转换成字符串。其实就是当其他数据类型与字符串相连时会自动调用自己的toString方法,转换成字符串形式,然后参与连接。
三、获取字符串信息
1.获取字符串长度
使用String类的length()方法可获取声明的字符串对象的长度。
注意:length()方法返回的字符串的长度包括字符串中的空格。
2.字符串查找
String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。
(1)indexOf(String s):该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。如果没有检索到字符串s,该方法的返回值是-1。
(2)indexOf(int ch,int fromIndex):从fromIndex指定位置开始, 获取ch在字符串中出现的位置。
(3)lastIndexOf(String s):该方法用于返回参数字符串s在指定字符串中最后一次出现的索引位置。如果没有检索到字符串s,该方法的返回值是-1。
注意:如果lastIndexOf()方法中的参数是空字符串“”(注意没有空格),则返回的结果与调用该字符串length()方法的返回结果相同,为字符串的长度。
3.获取指定索引位置的字符
charAt(int index):将指定索引处的字符返回,返回类型为char类型。
四、字符串操作
1.获取子字符串
(1)substring(int beginIndex):该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
(2)substring(int beginIndex,int endIndex):该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串,包含头不包含尾。
2.去除空格
trim()方法返回字符串的副本,忽略前部空格和尾部空格(中间的空格保留)。
3.字符串替换
replace(char oldChar,char newChar):oldChar是要替换的字符或者字符串,newChar用于替换原来字符串的内容。replace()方法返回的结果是一个新的字符串。如果字符串oldChar不存在,则将原字符串返回。
注意:如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。
4.字符串判断
contains(String str):字符串中是否包含某一个子串。 特殊之处:indexOf(str)可以索引str第一次出现位置,如果返回-1 ,表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含 。
isEmpty():字符中是否有内容 ,原理就是判断长度是否为0。
  startsWith(String str):字符串是否是以指定内容开始 。
  endsWith(String str):字符串是否是以指定内容结尾 。
  equals(String str):判断字符串内容是否相同(两个字符串具有相同的字符和长度则返回true,复写了Object类中的equals()方法)。
equalsIgnoreCase(String str): 判断内容是否相同,并忽略大小写 。
5.按字典顺序比较两个字符串
compareTo(String str):compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。
6.转换
(1)将字符数组转成字符串
 构造函数:String(char a[]),String(char a[],int offset,int length) 
 静态方法: static String copyValueOf(char[])
  (2)将字符串转成字符数组
 char[] toCharArray() 
  (3) 将字节数组转成字符串 
 String(byte bytes[]), String(byte bytes[],int offset,int length)
  (4)将字符串转成字节数组 
 getBytes(); 
  (5) 将基本数据类型转成字符串
static String ValueOf(int),static String ValueOf(double)
(6)将String转换为大写或者小写
toUpperCase(),toLowerCase()
(7)字符串分隔
split(String sign):该方法可根据给定的分隔符对字符串进行拆分,sign为分隔字符串的分隔符,可以使用正则表达式(如果想定义多个分隔符可使用符号“|”。例如“,|=”表示分隔符为“,”和“=”)。
split(String sign.int limit):该方法可根据给定的分隔符对字符串进行拆分,并限定拆分的次数。
五、StringBuffer和StringBuilder
StringBuffer是字符串缓冲区,是一个容器。长度可以变化,可以操作多个数据类型,最终会通过toString()方法变成字符串。
1.存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处
StringBuffer insert(int index,数据):可以将数据插入到指定index位置
2.删除
StringBuffer delete(int start,int end):删除缓冲区中的数据,包含头不包含尾
StringBuffer deleteCharAt(index):删除指定位置的字符
3.获取
char CharAt(int index)
4.修改
StringBuffer replace(start,end,string)
void setCharAt(index,char)
5.反转
StringBuffer reverse()
6.将缓冲区中指定数据存储到指定数组中
void  getChars(start ,end,char[],index)
JDK1.5版本之后出现了StringBuilder。StringBuffer是线程同步,安全性高,效率低,适用于多线程; StringBuilder是线程不同步,安全性低,快捷,适用于单线程。如果用于多线程,自己加锁。 以后开发,建议适用StringBuilder 。
JDK升级的三个目的:简化书写,提高效率,提高安全性。
0 0
原创粉丝点击