java基础-字符串
字符串常见的API
String
StringBuilder
StringJonier
StringBuffer
Pattern
Matcher
字符串的内容是不会发生改变的,它的对象被创建后不能被更改

字符串对象的创建,有两种方式:
1、直接赋值
2、使用new关键字构造方法

package com.jdL.day10classwork;public class Stringtest01 {public static void main(String[] args) {//使用new方式获取一个对象//使用空参构造String str=new String();System.out.println(str);//使用有参构造String str1=new String("abc");System.out.println(str1);//传递一个字符数组,根据字符数组再创建一个新的字符串对象char[] c={'a','b','c','d','e'};String str2=new String(c);System.out.println(str2);//传递一个字节数组,根据字节数组再创建一个新的字符串对象byte[] a={97,98,99,100};String str3=new String(a);System.out.println(str3);} }
字节数组是把对应的数字找到ACII码表中对应的字母,拼接成字符串
字符串的比较:
java提供了两种比较字符串的方式
一种是equals,另外一种是equalsIgnoreCase
这两种方式的区别在于,第二种是忽视大小写的,第一种意味着是两个字符串的内容要完全一样才可以
比较字符串的练习
账号/密码输错三次,提示锁定账号
package com.jdL.day10classwork;import java.util.Scanner;public class Stringtest02 {public static void main(String[] args) {String userName="lisi";String passWord="123456";int count1=0;for(int i=0;i<3;){System.out.println("请输入用户名");Scanner sc=new Scanner(System.in);String name=sc.next();if (name.equals(userName)){break;}else {System.out.println("用户名错误,您还剩下"+(2-i)+"次机会");i++;count1++;}}int count2=0;if(count1>=3) {System.out.println("用户名输入超过三次,账号锁定");}else {for (int i = 0; i < 3; ) {System.out.println("请输入用户密码");Scanner sc1 = new Scanner(System.in);String password = sc1.next();if (password.equals(passWord)) {System.out.println("登录成功");break;} else {System.out.println("密码错误,您还剩下"+(2-i)+"次机会");i++;count2++;}}}if(count2>=3){System.out.println("密码输错三次,账号锁定");}}
}字符串的遍历:
package com.jdL.day10classwork;public class Stringtest03 {public static void main(String[] args) {String str="abcdefg";for(int i=0;i<str.length();i++){System.out.print(str.charAt(i));}}
}练习:
键盘录入一个字符串,判断这个字符串中包含的大写字母的个数,小写字母的个数,数字的个数
package com.jdL.day10classwork;import java.util.Scanner;public class Stringtest04 {public static void main(String[] args) {System.out.println("请输入一个字符串");Scanner sc=new Scanner(System.in);String newStr=sc.next();int lowerCount=0;int upperCount=0;int number=0;for(int i=0;i<newStr.length();i++){if(newStr.charAt(i)>=65&&newStr.charAt(i)<=90){upperCount++;}else if(newStr.charAt(i)>=97&&newStr.charAt(i)<=122){lowerCount++;}else if(newStr.charAt(i)>=48&&newStr.charAt(i)<=57){number++;}}System.out.println("字符中包含的大写字母个数有:"+upperCount);System.out.println("字符中包含的小写字母个数有:"+lowerCount);System.out.println("字符中包含的小写字母个数有:"+number);}
}把int数组拼接成一个字符,比如
int[] arr={1,2,3},拼接成[1,2,3]
package com.jdL.day10classwork;public class Stringtest05 {public static void main(String[] args) {int[] array={1,2,3,4};String result="[";for(int i=0;i<array.length;i++){if(i==array.length-1){result=result+array[i]+"]";}else {result=result+array[i]+",";}}System.out.println(result);}
}字符串反转
package com.jdL.day10classwork;public class StringReversal {public static void main(String[] args) {String str1="abcdefg";String newStr=stringReversal(str1);for(int i=0;i<newStr.length();i++){System.out.print(newStr.charAt(i));}}public static String stringReversal(String str){String result="";for(int i=str.length()-1;i>=0;i--){char a=str.charAt(i);result=result+a;}return result;}
}字符串的互换位置,比如abcd,变成dcba,这样,再拨入abcde,就变成edcba
package com.jdL.day10classwork;public class Stringtest06 {public static void main(String[] args) {String str1="abcefgh";String newStr=stringback(str1);for(int i=0;i<newStr.length();i++){System.out.print(newStr.charAt(i));}}public static String stringback(String str){//将字符串转换为字符数组char[] arr=str.toCharArray();char temp=' ';for(int i=0,j=arr.length-1;i<arr.length;i++,j--){if (i<j){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}String newString=String.valueOf(arr);return newString;}
}

package com.jdL.day10classwork;public class Stringtest01 {public static void main(String[] args) {//使用new方式获取一个对象//使用空参构造String str=new String();System.out.println(str);//使用有参构造String str1=new String("abc");System.out.println(str1);//传递一个字符数组,根据字符数组再创建一个新的字符串对象char[] c={'a','b','c','d','e'};String str2=new String(c);System.out.println(str2);//传递一个字节数组,根据字节数组再创建一个新的字符串对象byte[] a={97,98,99,100};String str3=new String(a);System.out.println(str3);}
}