字符串
java中没有内置的字符串类型,而是在java标准类库中提供了一个预定义类,每个用双引号括起来的字符串都是String类的一个实例:
String e = "";//一个空字符串
String greeting = "hello";
字符串的子串
String类的substring方法可以从一个较大的字符串中提取出一个子串。例如:
String greeting = "hello";
String s = greeting.substring(0,3);
创建了一个由字符"hel"组成的字符串s。
substring方法的第二个参数是不想复制的第一个位置。这里要复制位置为0,1,2的字符。在substring中从0开始计数,到3位置为止,但是不包含3.
substring方法的工作方式有一个优点,就是可以很容易的算出子串的长度,例如substring(a,b)表示的子串长度为b-a。
字符串的拼接
java语言可以使用"+"拼接两个字符串,例如:
String str1 = "hello";
String str2 = "world";
String str3 = str1 + str2;
上述代码就是把字符串"helloworld"赋值给变量str3,注意,当将一个字符串与一个非字符串拼接时,后者被转换为一个字符串。
不可变字符串
String没有提供修改字符串的方法。由于不能修改字符串中的字符,所以java文档中将String类的对象称为不可变字符串,如同数字3永远都是数字3一样,字符串“hello”永远都是包含h、e、l、l、o的代码单元序列,不能修改其中任何一个字符,当然,修改修改字符串变量,让他引用另外一个字符串。
字符与字符串
字符串就是一个字符数组,所以在String类中提供了字符数组转换为字符串以及字符串转换为字符的操作方法。
字符串转换字符:
String str = "hello";
System.out.println(str.charAt(0));//获取0号下标位置的字符
字符串和字符数组之间的转换是重点:
String str = new String("hello");
//将字符串转换为字符数组
char[] data = str.toCharArray();
for(char c : data){
System.out.print(" data :"+c);
}
//将字符数组转换为字符串
System.out.println(new String(data));
System.out.println(new String(data,2,3));
判断字符串是否由数字组成:
public static boolean isNumber(String str){
char[] data = str.toCharArray();
for(char c : data){
if(c<'0'||c>'9'){
return false;
}
}
return true;
}
字节与字符串
字节经常用于数据传输和编码转换的处理之中,在String类中提供了对字节的支持
byte[] bytes = str.getBytes();
for(int i = 0; i< bytes.length;i++){
bytes[i] -= 32;
System.out.print(bytes[i]+"、");
}
System.out.println(new String(bytes));
字节只适合处理二进制数据,并不适合处理中文。
字符串比较
String类提供了equals()方法来比较字符串,这是一种区分大小写的比较方法,String类同样提供了不区分大小写的比较方法equalsIgnoreCase()。
在String类中还有一个比较两个字符串大小关系的方法compareTo(),该方法返回一个整型,该数据会大小关系返回三类内容:
1.相等:返回0
2.小于:返回内容小于0
3.大于:返回内容大于0
字符串查找
从一个完整的字符串之中可以判定指定内容是否存在,对于查找方法有如下定义:
public boolean contains()//判断一个子串是否存在
public int indexOf(String str,)//从头开始查找指定字符串的位置,查到了返回位置的开始索引,如果查不到返回-1
public int indexOf(String str, int fromIndex)//从指定位置开始查找子串位置
public int lastIndexOf(String str)//由后向前查找子串位置
public int lastIndexOf(String str,int fronIndex)//从指定位置由后向前查找
public boolean startsWith(String prefix)//判断是否以指定字符串开头
public boolean startsWith(String prefix,int toffset)//从指定位置开始判断是否以给定字符串开头
public boolean endsWith(String suffix)//判断是否以指定字符串结尾
字符串替换
使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:
public String replaceAll(String regex(目标字符串),String replacement(新的字符串))//替换所有指定内容
public String replaceFirst(String regex,String replacement)//替换首个指定内容
字符串拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串
可用方法如下:
public String[] split(String regex)//将字符串全部拆分
public String[] split(String regex,int limit)//将字符串部分拆分,该数组长度就是limit极限
字符串截取
从一个完整字符串中截取出部分内容。可用方法如下:
public String substring(int beginIndex)//从指定位置截取到结尾
public String substring(int beginIndex,int endIndex)//截取部分内容
注意:索引从0开始