您的位置:首页 > 编程语言 > Java开发

Java学习--day09--String类

2018-07-27 23:00 113 查看

  

 

一.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();
}
}

 

   

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: