字符与字符串:
字符串内包含一个字符数组,String可以和char[]相互转换
1.将字符数组中的内容变为字符串
char arr[] = {'a','b','c','d'};
String str = new String(arr);
System.out.println(str);
输出
abcd
2.将字符数组中的部分内容转换为字符串
char arr[] = {'a','b','c','d'};
String str = new String(arr,1,3);//起始位置~偏移位置 前闭后开
System.out.println(str);
输出结果
bcd
3.取得指定位置索引的字符串,索引起始位置从0开始
System.out.println(str.charAt(3));
4.将字符串变为字符数组返回
String str = "hello"
char[] arr = str.toCharArray();
for (char a : arr){
System.out.println(a);
}
例题:给定字符串一个字符串, 判断其是否全部由数字所组成.
思路是:把字符串转成字符数组,再判断每一位字符是不是0~9的内容
public class Test {
public static void main(String[] args) {
String str = "565992s";
System.out.println(isNumber(str)? "全由数字组成" : "有非数字成员");
}
public static boolean isNumber(String str){
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
if(arr[i] < '0' || arr[i] > '9'){
return false;
}
}
return true;
}
}
字节与字符串相互转换
字节常用于数据传输以及编码转换的处理之中,String也能方便的和byte[]相互转换。
String str = "helloworld" ;
// String 转 byte[]
byte[] data = str.getBytes() ;
for (int i = 0; i < data.length; i++) {
System.out.print(data[i]+" ");
}
//// byte[] 转 String
byte[] date = {'a','c','d','e'};
String str = new String(date);
System.out.println(str);
小结:那么何时使用byte[],何时使用date[]
- byte[]是把String按照一个字节一个字节的方式处理,适合再网络传输和数据存储这样的场景下使用,更适合针对二进制数据来操作
- char[]是把String按照一个字符一个字符的方式来处理,更适合文本数据来操作,尤其是包含中文的时候。
3.字符串常见操作
3.1字符串比较
这里有三种方法
1.equals:区分大小写的比较
2.equalsIgnoreCase:不区分大小写的比较
String str1 = "hehe";
String str2 = "Hehe";
System.out.println(str1.equals(str2));//false
System.out.println(str1.equalsIgnoreCase(str2));//true
3.compareTo:比较大小,相等返回0,小于:返回内容小于0,大于:返回内容大于0(根据字典序的规则)
3.2:字符串查找
1.contains(返回一个布尔类型的值)
String str1 = "hehe";
String str2 = "ehe";
System.out.println(str1.contains(str2));
2.indexOf(寻找是否包含子集,如果找到了返回找到的起始索引位置下标,没找到返回-1)
String str1 = "hehe";
String str2 = "ehe";
System.out.println(str1.indexOf(str2));//返回1
System.out.println(str1.indexOf(str2,1));//从指定位置开始找,1代表从下标为1开始往后找
3.lastIndexOf(从后向前查找字符串位置)
String str1 = "hehehehe";
String str2 = "he";
System.out.println(str1.lastIndexOf("he"));
4.startsWith(判断是否为指定字符串开头)
String str1 = "hehehehe";
String str2 = "he";
System.out.println(str1.startsWith(str2));
System.out.println(str1.startsWith(str2,2));//从指定位置开始判断,
//是否以str2字符串开头
5.endWith(判断是否以指定字符串结尾)
System.out.println(str1.endsWith(str2));
字符串替换
1.replaceAll,替换所有的指定内容
String str1 = "hehehehe";
String str3 = str1.replaceAll("e","a and ");
System.out.println(str3);
输出:
ha and ha and ha and ha and
2.replaceFirst(替换首个内容)
String str1 = "hehehehe";
String str3 = str1.replaceFirst("e","a and ");
System.out.println(str3);
输出结果
ha and hehehe
6.4字符串拆分
1.split拆分字符串
String str = "sing dance rap basketball";
String[] result = str.split(" ");//按空格拆分成四个字符串,放入一个数组
for(String s : result){
System.out.println(s);
}
结果
sing
dance
rap
basketball
String str = "sing dance rap basketball";
String[] result = str.split(" ",2);
//这里的2,是limit极限,是这个result数组的长度,为2
for(String s : result){
System.out.println(s);
}
limit为2时如下
sing
dance rap basketball
limit为3如下
sing
dance
rap basketball
拆分IP地址
String str = "192.168.1.1";
String[] result = str.split("\\.");
for(String s : result){
System.out.println(s);
}
}
注意
- 字符"|","*","+“都得加上转义字符,前面加上”".
- 而如果是"",那么就得写成"\".
- 如果一个字符串中有多个分隔符,可以用"|"作为连字符.
多次拆分
String str = "sing dance&rap basketball";
String[] result = str.split("&");
for(int i = 0;i <result.length;i++){
String[] tmp = result[i].split(" ");
for(String s : tmp){
System.out.println(s);
}
}
字符串截取:
substring:从指定位置开始截取
String str = "sing dance&rap basketball";
String str2 = str.substring(5);//5是d,前闭后开,把d后面的都截取了
System.out.println(str2);
String str3 = str.substring(5,10);//截取下标为5~10的字符串
System.out.println(str3);
dance&rap basketball
dance
其他方法
trim()方法的使用:去掉左右空格保留中间空格
public class Test {
public static void main(String[] args){
String str = " sing dance rap basketball \t";
System.out.println("[" + str + "]");
System.out.println("[" + str.trim() + "]");
}
}
输出结果
[ sing dance rap basketball ]
[sing dance rap basketball]
大小写的转换
String str = "sing dAnce rap Basketball";
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());
输出结果
SING DANCE RAP BASKETBALL
sing dance rap basketball
取得字符串长度
.length()方法
注意:数组长度使用数组名称.length属性,而String中使用的是length()方法
String类并没有提供首字母大写操作,需要自己实现。
public class Test {
public static void main(String[] args){
System.out.println(firstUp(""));
System.out.println(firstUp("a"));
System.out.println(firstUp("sing dance rap"));
}
public static String firstUp(String s){
if("".equals(s) || s == null){
return s;
}
if(s.length() > 1){
return s.substring(0,1).toUpperCase() + s.substring(1);
}
else{
return s.toUpperCase();
}
}
}