Java学习--day09--String类
一.String类常用方法(可以在API中查找)
public String(byte[] bytes) 把字节数组转换成一个字符串
public String(byte[] bytes,int index,int length) 把字节数组从index下标开始到length个元素转换成字符串
public String(char[] value) 把一个字符数组转换成一个字符串
public String(char[] value,int index,int count) 把一个字符数组从index下标处开始的count个字符转换成字符串
public String(String original) 把一个字符串转换成一个字符串
public boolean equals(Object obj) 比较字符串是否相等,比较的是内容,区分大小写
public boolean equalsIgnoreCase(String str) 比较字符串是否相等,比较的是内容,不去分大小写
public boolean contains(String str) 判断一个字符串是否包含Str字符串
public boolean startsWith(String str) 判断一个字符串是否一Str这个字符串开始
public boolean endsWith(String str) 判断一个字符串是否以Str这个字符串结尾
public boolean isEmpty() 判断一个字符串是否为空
public int length() 得到一个字符串的长度
public char charAt(int index) 获取下标为index的字符
public int indexOf(int ch) 获取字符为ch的下标值
public int indexOf(String str) 获取子字符串第一次出现的下标值
public int indexOf(int ch,int fromIndex) 获取从fromIndex开始的第一次出现ch字符的下标
public int indexOf(String str,int fromIndex) 获取从fromIndex开始的第一次出现子字符串的下标
public String substring(int start) 获取从start下标开始到结束的子字符串
public String substring(int start,int end) 获取从start下标开始到end下标的子字符串
public byte[] getBytes() 将字符串转化为byte数组
public char[] toCharArray() 将字符串转化为char数组
public static String valueOf(char[] chs) 将char数组转化为字符串
public static String valueOf(int i) 将int类型的数据转化为字符串
public String toLowerCase() 将字母全转化为小写
public String toUpperCase() 将字母全转化为大写
public String concat(String str) 比较两个字符串,如果一个是另一个的子字符串,则返回长度只差,两个字符串完全不同,返回长度较小的字符串的最后一个下标的值与另一个值的差
public String replace(char old,char new) 将旧的字符全部用新的字符代替
public String replace(String old,String new) 将旧的字符串全部用新的字符串代替
public String trim() 删除字符串开始和末尾的空格
public int compareTo(String str) 连接两个数组
public int compareToIgnoreCase(String str) 比较两个字符串不考虑大小写
二.String方法练习题
因为常用类这一块大部分都是记忆性东西,而且可以借用API文档和源码进行查看,所以可以不用过于详细讲解
eg1:请编写程序,校验键盘录入的用户名密码与已创建的用户信息是否一致,并测试
[code]import java.util.Scanner; public class Test { public static void main(String[] args) { String name = "admin"; String key = "123456"; Scanner scanner = new Scanner(System.in); System.out.print("请输入用户名:"); String userName = scanner.nextLine(); System.out.print("请输入密码:"); String userKey = scanner.nextLine(); if(name.equals(userName) && key.equals(userKey)) { System.out.println("登陆成功!"); } else { System.out.println("用户名或密码错误"); } } }
eg2.请编写程序,将键盘录入的字符串倒序打印,并测试
[code]import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入字符串:"); String string = scanner.nextLine(); char[] c1 = string.toCharArray(); System.out.print("倒叙打印字符串为: "); for(int i = c1.length - 1; i > 0; i--) { System.out.print(c1[i] + " "); } } }
eg3.请编写程序,统计键盘录入的字符串中包含大写字母、小写字母、数字的个数,并测试
[code]import java.util.Scanner; public class Test { public static void main(String[] args) { int smallCount = 0; int bigCount = 0; int numberCount = 0; Scanner scanner = new Scanner(System.in); System.out.print("请输入字符串:"); String string = scanner.nextLine(); for(int i = 0; i <string.length(); i++) { char ch = string.charAt(i); if(ch>='a' && ch <='z') { //小写字母字符 smallCount ++ ; }else if(ch >='A' && ch<='Z') { bigCount ++; }else if( ch >='0' && ch <='9') { numberCount ++; } } } }
eg4.、请编写程序,将键盘录入的字符串中敏感字符过滤掉,并测试。
例: 敏感字: 奥巴马、普京
键盘输入: 我喜欢奥巴马呀,还喜欢普京
打印输出: 我喜欢*呀,还喜欢*
[code]import java.util.Scanner; public class Test { public static void main(String[] args) { String name1 = "奥巴马"; String name2 = "普京"; Scanner scanner = new Scanner(System.in); System.out.print("请输入字符串:"); String string1 = scanner.nextLine(); if(string1.contains(name1)) { string1 = string1.replaceFirst(name1, "*"); } if(string1.contains(name2)) { string1 = string1.replaceFirst(name2, "*"); } System.out.println(string1); } }
eg5.请编写程序,统计键盘录入的字符串中出现了几次字符串”java”,并测试
例: 键盘输入:woyaoxuejava,xihuanjava,aijava,javajavawozuiai
[code]import java.util.Scanner; public class Test { public static void main(String[] args) { String name = "java"; int count = 0; Scanner scanner = new Scanner(System.in); System.out.print("请输入字符串:"); String string1 = scanner.nextLine(); for(int i = 0; i < string1.length(); string1 = string1.substring(i)) { if(string1.contains(name)) { count++; i = string1.indexOf(name) + 4; } } System.out.println(count); } }
三.String, StringBuffer和StringBuilder
String是不可变的字符序列,在方法区中开辟空间,比较占用内存
StringBuffer和StringBuilder是可变的字符序列,在内存中提供字符缓冲区,内存较优,且可以不断追加字符串
StringBuffer适用于多线程,是线程安全的,而StringBuilder则适用于单线程
StringBuffer的构造方法:
public StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
public StringBuffer(int capacity):指定容量大小
public StringBuffer(String str):构造一个字符串缓冲区:里面的容量(字符串内容英文)大小:字符串长度+16初始容量
StringBuffer的删除方法:
StringBuffer deleteCharAt(int index) :删除指定位置出的字符,返回字符串缓冲区本身
StringBuffer delete(int start, int end) :删除从指定位置开始到指定位置结束,返回值字符串缓冲区本身
StringBuffer的替换功能
public StringBuffer replace(int start,int end,String str) 从指定位置开始到指定位置结束,用给定的str字符串替换指定的字符内容
StringBuffer的反转功能 reverse();
StringBuffer的截取功能:
String substring(int start) :从指定位置默认截取到末尾,返回一个新的字符串
String substring(int start,int end):从指定位置开始截取到指定位置结束
eg:把数组拼接成一个字符串 int[] arr [11,22,33,44,55] ,方法改进使用StringBuffer
[code]public class StringBufferTest2 { public static void main(String[] args) { int[] arr = {11,22,33,44,55} ; String result = arrayToString(arr) ; System.out.println("result:"+result); } public static String arrayToString(int[] arr) { //创建一个字符串缓冲区对象 StringBuffer sb = new StringBuffer() ; sb.append("[") ; //遍历数组 for(int x = 0 ; x < arr.length ; x ++) { //判断是否最大值索引 if(x==arr.length-1) { sb.append(arr[x]).append("]") ; }else { sb.append(arr[x]).append(", ") ; } } return sb.toString(); } }
阅读更多
- JAVA学习【知】String类
- JAVA String类学习
- java中String类学习
- [原创]Java中String类的学习体会
- 黑马程序员 java学习笔记——String类(包含StringBuffer和StringBuilder)
- JAVA学习第二十九课(经常使用对象API)- String类
- java学习日记_60:String类的获取功能
- JAVA高级01_03 String类学习 2011-4-20
- 黑马程序员------java学习笔记之String类
- 黑马程序员 java学习笔记(day09)
- java学习之String类
- Java基础学习第十二天——String类
- 你不知道的Java学习笔记14--String类
- Java学习之string类练习
- JAVA学习笔记(4)--String类
- java 学习 String类 和 StringBuffer类的用法 暑假第九天
- 黑马程序员_JAVA学习日记_JAVA中API中对象String类的补充
- JAVA学习十八:String类、StrinBuffer类
- 黑马程序员_JAVA中String类学习笔记
- Java源码学习-String类的equals方法