目录
字符串的定义
public static void main(String[] args) {
//第一种:直接赋值字符串
String s1="abc";
System.out.println(s1);//abc
//第二种:创建一个新的字符串对象
String s2=new String("efg");
System.out.println(s2);//efg
//第三种:先创建一个字符数组,在创建一个字符串对象将字符数组放进去
char[] v={'h','i','j'};
String s3=new String(v);
System.out.println(s3);//hij
}
- 字符串类型:String ;
- 字符串中可以不是只有字母,也可以是数字和字符;
String s4="abc4*-#$";
System.out.println(s4);//abc4*-#$
字符串的比较
1.用等号(==)来比较地址
public static void main(String[] args) {
String s1="abc";
String s2="sbd";
String s3="abc";
//用==来比较地址,不可以用><来比较
System.out.println(s1==s2);//false
System.out.println(s1==s3);//true
}
- ==用来比较地址;
- 内容相同的字符串共用一个 地址;
2.用equals来比较内容是否相等
格式:
字符串名1.equals(字符串名2);
例:
字符串s1与字符串s2进行比较 s1.equals(s2);
public static void main(String[] args) {
String s1="abc";
String s2="sbd";
String s3="abc";
//equal判断内容是否相同
System.out.println(s1.equals(s2));//false
System.out.println(s1.equals(s3));//true
}
3.用compareTo比较值的大小
格式:
字符串名1.compareTo(字符串名2);
例:
s1.compareTo(s2);
- 哪个在前哪个减后面,字符串1减字符串2;
public static void main(String[] args) {
String s1="abc";
String s2="sbd";
String s3="abc";
//compareTo比较值的大小
System.out.println(s1.compareTo(s2));//-18
System.out.println(s1.compareTo(s3));//0
}
compareTO 的运算规则
public static void main(String[] args) {
String s1="abc";
String s4="abc";
String s2="abe";
String s3="abcg";
String s6="abcf";
String s5="bcd";
//"abc"与“abc”进行比较
System.out.println(s1.compareTo(s4));//0 大小相同,返回值为0
//"abc"与“abe”进行比较
// 前面两个字符相同,c与e进行比较,前面的减去后面,c与e相差2,返回值为-2;
System.out.println(s1.compareTo(s2));//-2
//"abc"与“abcg”、“abcf”进行比较
//如果前几个字符都相同,但另一个字符长度大于前一个字符,那么返回值为1或-1,看那个减哪个
System.out.println(s1.compareTo(s3));//-1
System.out.println(s1.compareTo(s6));//-1
System.out.println(s3.compareTo(s1));//1
System.out.println(s6.compareTo(s1));//1
//“abc”与“bcd”进行比较
//一个字符就不同,开始进行比较,a与b相差1
System.out.println(s1.compareTo(s5));//-1
}
compareTO比较规则:等于返回0,大于但会正整数,小于返回负整数
- 如果字符串相等,那么返回值为0;
- 字符串的比较,从第一个不相同的字符,两个进行相减的值作为其返回值
- 如果字符串包含另一个字符串中的所有字符且其长度大于另一个字符串,那么其返回值为1,如果位置相反则为-1.
用compareToIgnoreCase可以无视大小写进行比较
"abc"与“Abc”
System.out.println(s1.compareTo(s7));//32
System.out.println(s1.compareToIgnoreCase(s7));//0
字符串的转换
字符串与数字之间的转换
public static void main(String[] args) {
//数字转字符串
String s1=String.valueOf(123);
System.out.println(s1);//字符串类型:123
//字符串转数字
int a=Integer.parseInt("123");
double b=Double.parseDouble("123");
System.out.println(a);//123
System.out.println(b);//123.0
}
- 数字转字符串:String.value(数字);
- 字符串转数字:要转的数据包装类型.parse+类型(字符串);
字符串的字母大小写转换
public static void main(String[] args) {
//全部转为大写:toUpperCase
String s4=s3.toUpperCase();//ABC
System.out.println(s4);
//全部转为小写:toLowerCase
String s5=s3.toLowerCase();//abc
System.out.println(s5);
}
- 将字母全转为大写字母:toUpperCase;
- 将字母全转为小写字母:toLowerCase;
字符串中字符的查找
1.charAt
public static void main(String[] args) {
String s1="123456";
for (int i = 0; i < s1.length(); i++) {
char s2=s1.charAt(i);
System.out.print(s2);
}
System.out.println();//换行
int a[]={1,2,3,4};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
- 字符的查找:charAt(下标);
- 字符串的长度表示是length(),与数组长度不同,数组长度是length;
2.indexOf
public static void main(String[] args) {
String s3="1212341256";
//indexOf功能
//1.查找某个字符第一次出现的下标位置,没有返回-1
int a1=s3.indexOf('2');
System.out.println(a1);//1
//2.查找某个字符串第一次出现的下标位置,没有返回-1
int a2=s3.indexOf("21");
System.out.println(a2);//1
//3.从某一个下标开始寻找某一个字符第一次出现的位置,没有返回-1
int a3=s3.indexOf('1',2);
System.out.println(a3);//2
//4.从某一个下标开始寻找某一个字符串,没有返回-1
int a4=s3.indexOf("12",5);
System.out.println(a4);//6
}
3.lastIndexOf
public static void main(String[] args) {
String s1="ababccdccab";
//lastIndexOf功能
//1.从后往前开始,第一个出现的字符的下标,没有返回0
int a1=s1.lastIndexOf('a');
System.out.println(a1);//9
//2.从后往前开始,第一个出现的字符串的下标,没有返回0
int a2=s1.lastIndexOf("cc");
System.out.println(a2);//7
//3.从第某个下标开始从后往前找该字符第一个出现的下标,没有返回0
int a3=s1.lastIndexOf('a',1);
System.out.println(a3);//0
//4.从第某个下标开始从后往前找该字符第一个出现的下标,没有返回0
int a4=s1.lastIndexOf("ab",3);
System.out.println(a4);//2
}
字符串的替换:replace
public static void main(String[] args) {
String s1="abcababab";
//replace:1.将某一个字符全部用另一个字符替代
String s2=s1.replace('a','1');
System.out.println(s2);//1bc1b1b1b
//replace:2.将某一个字符串全部用另一个字符串替代
String s3=s1.replace("ca","2");
System.out.println(s3);//ab2babab
//replaceAll:将某一个字符串全部用另一个字符串替代
//只能是字符串,不能是字符
String s4=s1.replaceAll("a","3");
System.out.println(s4);//3bc3b3b3b
//replaceFirst:将某一个字符串用另一个字符串替代,只替换最开始的一次
//只能是字符串,不能是字符
String s5=s1.replaceFirst("b","4");
System.out.println(s5);//a4cababab
//这些值的替换都不是在s1的原地址上替换的
System.out.println(s1);//abcababab
}
- replaceAll和replaceFirst作用对象都是对字符串的替换,不能是对字符的替换;
- 这些字符串的替换都不是在字符串的原地址上替换的;
字符串的拆分:split
public static void main(String[] args) {
String s1="ab#12#3";
//split:1.字符串全部拆分
String[] s2=s1.split("#");
for (int i = 0; i < s2.length; i++) {
System.out.println(s2[i]);//ab 12 3
}
//split:2.字符串的部分拆分(限制拆几组)
String[] s3=s1.split("#",2);
for (int i = 0; i < s3.length; i++) {
System.out.println(s3[i]);//ab 12#3
}
String s4="123\\456\\789";
String[] s5=s4.split("\\\\");
for (int i = 0; i < s2.length; i++) {
System.out.println(s5[i]);
}
}
注意事项
1.如果字符是“|”,“*”,“+”前面要加上“\\”;
2.如果一个字符串有多个分隔符,可以用“|”转为连字符。
字符串的截取:substring
public static void main(String[] args) {
String s1="123412345";
//substring:1.从某一下标开始截取到结尾
String s2=s1.substring(4);//12345
System.out.println(s2);
//substring:2.从某一下标开始截取到某一下下标前一个
String s3=s1.substring(4,8);
System.out.println(s3);//1234
}
- 注意字符的部分截取:他最后的截取部分是到截取下标的前一个;
去掉字符串开头和结尾的空格:trim
public static void main(String[] args) {
String s1=" ab c d ";
//trim:只去掉开头和结尾的空格
String s2=s1.trim();
System.out.println(s2);//ab c d
}