
String a="123456789";//直接赋值
String b=new String("123456");//利用构造方法
char array={'1','2','3','4','5'};
String c=new String(array);//利用字符数组
String d=new String(array,3,2);//从索引3的位置截取2个字符 d="45";
字符串连接
String a="CR7 "; String b="is "; a+=b; System.out.println(a+"a legend!");
利用"+"、"+="即可实现拼接,输出“CR7 is a legend!”
String a="CR7 "; String b="is "; a=a.concat(b); System.out.println(a+"a legend!");
还可以利用String自带的concat()方法实现将b拼接到a结尾的功能,同样输出“CR7 is a legend!”
连接其他数据类型只要"+"运算符的一个操作数是字符串,编译器就会将另一个操作数转换成字符串形式。
int champions=5;
float age=36.5f;
System.out.println("CR7 is "+age+" years old,has "+champions+" European Champions");
输出“CR7 is 36.5 years old,has 5 European Champions”.
字符串在计算公式的先后顺序影响计算结果:
String a="1"+2+3+4;
String b=1+2+3+"4";
String c="1"+(2+3+4);
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
输出:a=1234
b=64
c=19
str.length(); 获取字符串长度
str.charAt(index)获取index位置的字符
a.indexOf('substr')返回搜索的字符或字符串在字符串中首次出现的位置,没有检索到返回-1
String a="Cristiano Ronaldo";
System.out.println("a的长度是"+a.length());
System.out.println("a的第二个字符是"+a.charAt(2));
System.out.println("o R首次出现的位置是:"+a.indexOf("o R"));
System.out.println("iii首次出现的位置是:"+a.indexOf("iii"));
输出:a的长度是17
a的第二个字符是i
o R首次出现的位置是:8
iii首次出现的位置是:-1
str.startsWith("prefix")判断字符串是否以指定的前缀开始
str.endsWith("suffix")判断字符串是否以指定后缀结束
两个函数的返回值都是boolean类型
String str[]={"iphone5s","Mi8","Mi10","iphone8","SumSung 10","iphoneX"};
int Mi=0;
nt iphone5s=0;
for(int i=0;i
输出:the number of Mi is 2
the number of iphone5s is 1
获取字符数组
str.toCharArray();toCharArray()方法可以将字符串转换为一个字符数组。
String a="Ronnie";
int[] c=new int[] {};
char[] ch=a.toCharArray();
for(int i=0;i
输出:字符数组第1个元素为R
字符数组第2个元素为o
字符数组第3个元素为n
字符数组第4个元素为n
字符数组第5个元素为i
字符数组第6个元素为e
判断子字符串是否存在
str.contains(string);判断字符串中是否包含指定内容。
String a="The best football players in the world:C.Ronaldo,Messi,Lewandowski,De Bruyne and van Dijk.";
System.out.println(a);
boolean is=a.contains("C.Ronaldo");
System.out.println("C.Ronaldo是世界最佳之一吗?"+is);
is=a.contains("Griezmann");
System.out.println("Griezmann是世界最佳之一?"+is);
输出:The best football players in the world:C.Ronaldo,Messi,Lewandowski,De Bruyne and van Dijk.
C.Ronaldo是世界最佳之一吗?true
Griezmann是世界最佳之一?false
字符串操作
截取字符串
str.substring(begin);
str.substring(begin,end);substring方法返回一个新字符串,截取从begin到end-1处的字符。
String a="The best football players in the world:C.Ronaldo,Messi,Lewandowski,De Bruyne and van Dijk.";
String str=a.substring(4);
System.out.println(str);
str=a.substring(4,25);
System.out.println(str);
输出:best football players in the world:C.Ronaldo,Messi,Lewandowski,De Bruyne and van Dijk.
best football players
字符串替换
str.replace("oldstr", "newstr");replace()方法将指定的字符序列替换成新的字符序列。
String str="鹤丁凫渚,穷岛屿之萦回";
String restr=str.replace("丁", "汀");
System.out.println("修改前:"+str);
System.out.println("修改后:"+restr);
输出:修改前:鹤丁凫渚,穷岛屿之萦回
修改后:鹤汀凫渚,穷岛屿之萦回
字符串分割
str.split(regex);split()方法根据给定的分隔符拆分字符串,返回一个字符串数组。
String str="蒸羊羔、蒸熊掌、蒸鹿尾、烧花鸭、烧雏鸡、烧子鹅、炉猪、炉鸭、酱鸡、腊肉、松花小肚";
String[] devide=str.split("、");
for(int i=0;i
输出:第0组是;蒸羊羔
第1组是;蒸熊掌
第2组是;蒸鹿尾
第3组是;烧花鸭
第4组是;烧雏鸡
第5组是;烧子鹅
第6组是;炉猪
第7组是;炉鸭
第8组是;酱鸡
第9组是;腊肉
第10组是;松花小肚
大小写转换
toLowerCase():将字符串中所有字符转换为小写;
toUpperCase():将字符串中所有字符转换为大写。
String s="abc DEF";
System.out.println(s.toLowerCase());
System.out.println(s.toUpperCase());
输出:abc def
ABC DEF
去处空白内容
str.trim():trim()方法将字符串首尾处的空白内容都删除。
String s=" abcdefg ";
String alter=s.trim();
System.out.println("s=["+s+']');
System.out.println("alter=["+alter+']');
输出:s=[ abcdefg ]
alter=[abcdefg]
比较字符串是否相等
a.equals(str):比较两个字符串对象内容是否相等,当且仅当进行比较的字符串str不为null,且与a内容相同时,结果才为true。
String str1="Java";
String str2=new String("Java");
String str3=new String("C++");
String str4=str2;
System.out.println("str1==str2:"+(str1==str2));
System.out.println("str1==str3:"+(str1==str3));
System.out.println("str1==str4:"+(str1==str4));
System.out.println("str1.equals(str2):"+str1.equals(str2));
System.out.println("str1.equals(str3):"+str1.equals(str3));
System.out.println("str1.equals(str4):"+str1.equals(str4));
输出:str1== str2:false
str1== str3:false
str1==str4:false
str1.equals(str2):true
str1.equals(str3):false
str1.equals(str4):true
注意:虽然str1和str2内容一样,但堆中已经有str1指向的内容为“Java”的字符串,str2实际指向“Java”字符串在堆中的一个副本,副本有自己的地址,所以我们需要利用方法比较字符串内容。