概述:
str是一个类类型变量,“abc”是一个对象。
str有一个对象,str2中有两个对象。
功能:String类适用于描述字符串事物。提供了多个方法对字符串进行操作。
操作有哪些:
1.获取。
2.判断。
public static void main(String[] args) {
method_get();
method_is();
}
public static void method_is() {
String str = "ArrayDemo.java";
//判断文件名称是否是Array单词开头。
sop(str.startsWith("Array"));
//判断文件名称是否是.java的文件。
sop(str.endsWith(".java"));
//判断文件中是否包含Demo。
sop(str.contains("Demo"));
}
public static void sop(Object obj) {
System.out.println(obj);
}
public static void method_get() {
String str = "abcdef";
sop(str.length());
sop(str.charAt(2));
//获取角标为2的元素值,访问字符中不存在的角标是会出现角标越界异常
sop(str.indexOf('a'));
//a所在字符串中角标是多少('a',3)的意思是从角标为3的元素往后找a,找不到则返回-1.
sop(str.lastIndexOf('e'));
//反向查找角标还是从左边数。
}
}
转换:
public static void method_trans() {
char [] arr = {'a','b','c','d','e'};
String s = new String(arr,1,3);//打印字符数组中角标为1后边的三个元素。
sop("s="+s);
String s1 = "zxcvbnm";
char [] cha = s1.toCharArray();
for(int x=0;x<cha.length;x++) {
sop("cha="+cha[x]);
}
}
替换:
public static void main(String[] args) {
//method_get();
//method_is();
//method_trans();
method_replace();
}
public static void method_replace() {//替换
String s = "hello world";
String s1 = s.replace('e', 'n');//如果替换的不存在,返回的还是原串
//String s1 = s.replace("wrold","java");
sop("s="+s);
sop("s1="+s1);
}
public static void main(String[] args) {
//method_get();
//method_is();
//method_trans();
//method_replace();
method_split();
}
public static void method_split() {//切割
String s = "zhangsan,lisi,wangwu";
String [] arr = s.split(",");
for(int x = 0;x < arr.length;x++) {
sop(arr[x]);
}
}
s.substring(0,s.length);获取整个串。如果获取的字符超出会出现越界。
public static void main(String[] args) {
//method_get();
//method_is();
//method_trans();
//method_replace();
//method_split();
method_sub();
}
public static void method_sub() {//获取子串
String s = "abcde";
sop(s.substring(2, 4));//包含头不包含尾
sop(s.substring(2));//从指定开始到结尾
}
public static void main(String[] args) {
//method_get();
//method_is();
//method_trans();
//method_replace();
//method_split();
//method_sub();
method_7();
}
public static void method_7() {
String s = " heLLo wolld";
sop(s.toUpperCase());
sop(s.toLowerCase());
sop(s.trim());//去除字符串两端的空格
String s1 = "acc";
String s2 = "aaa";
sop(s1.compareTo(s2));
}
常见功能String添加:
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("abc").append(true);
sb.insert(1, "qq");//在指定位置添加
sop(sb.toString());
}
public static void sop(String str) {
System.out.println(str);
}
}
public static void main(String[] args) {
//method_add();
method_del();
}
public static void method_del() {
StringBuffer sb = new StringBuffer("abcde");
sb.delete(1, 3);
sb.delete(0,sb.length());//清空缓冲区
sop(sb.toString());
}
public static void main(String[] args) {
//method_add();
//method_del();
method_updata();
}
public static void method_updata() {
StringBuffer sb = new StringBuffer("abcde");
//sb.replace(1, 3, "qq");
sb.setCharAt(1, 'q');
sop(sb.toString());
}
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("abcdef");
char [] chs = new char[4];
sb.getChars(1, 4, chs, 1);
for(int x=0;x < chs.length;x++) {
sop("chs["+x+"]="+chs[x]+":");
练习:
去除字符串两端的空格练习:
public static void main(String[] args) {
String s = " abc de ";
sop("("+s+")");
s = myTrim(s);
sop("("+s+")");
}
public static String myTrim(String str) {
int start = 0,end=str.length()-1;
while(start<=end && str.charAt(start)==' ')
start++;
while(start<=end && str.charAt(end)==' ')
end--;
return str.substring(start, end+1);//因为substring不包含尾所以要加1
}
public static void sop(String str) {
System.out.println(str);
}
}
将字符串反转:
public static void main(String[] args) {
String s = " abc de ";
sop("("+s+")");
// s = myTrim(s);
// sop("("+s+")");
sop("("+reverseString(s)+")");
}
public static String reverseString(String s) {
//第一步将字符串变成数组。
char chr[] = s.toCharArray();
//反转数组
reverse(chr);
//将数组变成字符串
return new String(chr);
}
private static void reverse(char[] arr) {//反转
for(int start=0,end=arr.length-1;start<end;start++,end--) {
swap(arr,start,end);
}
}
private static void swap(char[] arr,int x,int y) {//反转后赋值
char temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
public static void main(String[] args) { //反转单个元素和反转字符结合
String s = " abc de ";
sop("("+s+")");
// s = myTrim(s);
// sop("("+s+")");
//sop("("+reverseString(s)+")");
sop("("+reverseString(s)+")");
}
public static String reverseString(String s,int start,int end) {
//第一步将字符串变成数组。
char chr[] = s.toCharArray();
//反转数组
reverse(chr,start,end);
//将数组变成字符串
return new String(chr);
}
public static String reverseString(String s) {
return reverseString(s,0,s.length());
}
private static void reverse(char[] arr,int x,int y) {//反转
for(int start=x,end=y-1;start<end;start++,end--) {
swap(arr,start,end);
}
}
private static void swap(char[] arr,int x,int y) {//反转后赋值
char temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
获取一个字符串在另一个字符串中出现的次数。
public static void main(String[] args) {
String str = "kkabkkcdkkef";
sop("count="+getSubCount(str,"kk"));//复杂因为要获取字符串
sop("count="+getSubCount_2(str,"kk"));//简单只获取key在字符串中的位置
sop("count====="+str.split("kk").length);//不建议会出现次数加1
}
public static int getSubCount_2(String str,String key) {
int count = 0;
int index = 0;
while((index=str.indexOf(key,index))!=-1) {
sop("index="+index);
index = index+key.length();
count++;
}
return count;
}
public static int getSubCount(String str,String key) {
int count = 0;
int index = 0;
while((index=str.indexOf(key))!=-1) {
sop("str="+str);
str=str.substring(index+key.length());
count++;
}
return count;
}
public static void sop(String str) {
System.out.println(str);
}
}
字符串练习查找两个字符中相同的字符:
public static void main(String[] args) {
String s1 = "qwqeqeqehelloqwqeq";
String s2 = "xfhelloxs";
sop(getMaxSubString(s1,s2));
}
public static String getMaxSubString(String s1,String s2) {
String max="",min="";
max = (s1.length() > s2.length())?s1:s2;
min = (max==s1)?s2:s1;
for(int x = 0;x < min.length();x++) {
for(int y = 0,z=min.length()-x;z!=min.length()+1;y++,z++) {
String temp=min.substring(y,z);
if(max.contains(temp))
return temp;
}
}
return"";
}
public static void sop(String str) {
System.out.println(str);
}
}