目录
一、遍历字符串
二、统计各种字符的次数
三、拼接字符串
四、字符串反转
一、遍历字符串
public static void StringTest03(){
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
for (int i = 0; i < str.length(); i++){
System.out.println(str.charAt(i));
}
}
利用for循环遍历数组
利用length()方法获取字符串的长度
利用charAt(n)方法获取指定索引 n 处的的字符
二、统计各种字符的次数
public static void StringTest04(){
System.out.println("请输入一个字符串");
String str = sc.nextLine();
//定义三个统计变量
int bigCount = 0;
int smallCount = 0;
int numCount = 0;
int emCount = 0;
//遍历字符串,统计各种字符出现的次数
for(int i = 0; i < str.length(); i++){
if((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z')){
smallCount++;
}else if ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'z')){
bigCount++;
}else if ((str.charAt(i) >= '0') && (str.charAt(i) <= '9')){
numCount++;
}else{
emCount++;
}
}
System.out.println("小写字符: "+smallCount+"大写字符: "+bigCount+"数字: "+numCount+"空格: "+emCount);
}
从键盘录入字符串,设置统计变量,通过循环遍历。访问字符串中的每一个字符,判断字符属于哪种类型并完成数据统计,最后输出统计结果。
三、拼接字符串
需求:定义一个方法,把int数组中的数据按照指定得格式拼接成一个字符串返回。
public class Test {
public static void main(String[] args) {
//定义一个整型数组
int [] arr = {1, 2, 3};
String Str = arrayToString(arr);
System.out.println("由整型数组生成的字符串为: "+ Str);
}
/*
实现数组拼接成字符串的方法:
参数: int [] arr
返回值类型: String
*/
public static String arrayToString(int [] arr){
String str = new String();
str += "[";
for (int i = 0; i < arr.length; i++){
if(i == arr.length - 1){
str += arr[i];
}else{
str += arr[i] + ", ";
}
}
str += "]";
return str;
}
}
思路:定义一个整型数组,用静态初始化完成数组元素的初始化,在Test类内部设置一个arrayToString的方法,参数为整型数组,返回一个字符串,在方法内通过遍历数组完成自符串的拼接,此处采用 ‘+’ 来完成拼接。
进阶版:
Public class Test{
public static void main(String [] args){
//定义一个整型数组
int [] array = [1, 2, 3];
String s = arrayToString(array);
System.out.println("拼接后的字符串为: " + s);
}
public static String arrayToString(int [] arr){
//定义一个BufferBuilder型的字符串
StringBuilder str = new StringBuilder();
//通过for循环遍历数组
for(int i = 0; i < arr.length; i++){
str.append(arr[i]);
}
//定义一个String型的变量作为返回值
String s = str.toString();
return s;
}
}
思路:利用StringBuffer类创建一个可变的字符串对象,通过该类特有的方法append()完成字符串的拼接
PS:append(任意类型) 添加数据,并返回对象本身,重点在于理解返回对象本身
例如:
StringBuilder str1 = new StringBuilder();
StringBuilder str2 = str1.append("zbc");
System.out.println(str1 == str2);
输出的结果是true,因为通过append()方法添加数据返回的是对象本身,
所以str1与str2实际上是创建了一个对象。
PS:在java中 "==" 对引用数据比较的是数据的地址,因为引用数据在
栈内存中存储的是数据的地址,数据的值存储在堆内存中。
四、字符串反转
需求:从键盘输入一个字符串,通过一个方法完成字符串的反转
import java.util.Scanner;
public class Test {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
//从键盘录入一个字符串
System.out.println("请输入一个字符串");
String str1 = sc.nextLine();
//通过定义的方法完成字符串的反转
String str2 = reverse(str1);
System.out.println("反转后的字符串为: " + str2);
}
public static String reverse(String str){
//定义一个空的字符串
String str2 = "";
//通过for循环遍历传入的字符串
for (int i = str.length(); i > 0; i--){
str2 += str.charAt(i - 1);
}
return str2;
}
}
思路:反转字符串也是利用的字符串拼接原理,只不过是逆序遍历了字符串,用charAt()方法获取指定索引的字符。
进阶版:
public static void reverseUp() {
//提示用户输入一个字符串
System.out.println("请输入一个字符串: ");
String s = sc.nextLine();
//根据字符串s,创建一个StringBuilder类的可变字符串
StringBuilder str = new StringBuilder(s);
//利用reverse()方法完成反转
str.reverse();
/*
System.out.println("测试: " + str);
其实在此时可以直接输出反转后的字符串了,但为了
达到输出String类字符串的效果,还是创建了String
类的字符串变量,并完成数据的转换
*/
//将反转后的可变字符串转换成String类的字符串
s = str.toString();
System.out.println("反转后的字符串: " + s);
}
思路:利用StringBuilder类的reverse()方法来完成反转
java支持链式调用,所以完成字符串反转的方法可以写为:
public static String reverseUpp(String s){
return new StringBuilder(s).reverse().toString();
}
PS:在拼接进阶版里说明
StringBuilder to String : 利用toString()方法即可
String to StringBuilder : 利用StringBuilder的构造方法
//StringBuilder to String
StringBuilder str1 = new StringBuilder("abc");
String s = str1.toString();
//String to StringBuilder
String str2 = "zbc";
StringBuilder t = new StringBuilder(str2);