Java中字符串的使用
- 字符串是字符的序列,是许多程序设计语言的基本数据结构,有些语言的字符串是通过字符数组实现的,
- Java语言提供了3个字符串类:String,String Builder,String Buffer
- 其中String类是不变字符串,String Builder和String Buffer是可变字符串
- 这三种字符串都是16位的Unicode字符序列,并且三个类都被声明为final,因此不能被继承
- 下面给出一些String类字符串的基本操作
public class Main {
public static void main(String[] args) {
String s1 = "Java is cool" ;
String s2 = new String(" Hello world") ;
char [] c1 = {'A', 'B', 'C'} ;
int value = 10 ;
char [] c2 = {'中', '国', '牛', '逼'} ;
String s3 = new String(c1) ;
String s4 = new String(c2,0,2) ;
int length = s1.length() ;
String subString = s1.substring(5,7) ;
String upper = s1.toUpperCase() ;
String lower = s1.toLowerCase() ;
boolean isEmpty = s1.isEmpty() ;
String concat = s1.concat(s2) ;
String modify = s1.replace("cool","good") ;
char at = s1.charAt(0) ;
String number = String.valueOf(value) ;
System.out.println("s1 = " + s1) ;
System.out.println("s2 = " + s2) ;
System.out.println("s3 = " + s3) ;
System.out.println("s4 = " + s4) ;
System.out.println("length = " + length) ;
System.out.println("subString = " + subString) ;
System.out.println("upper = " + upper) ;
System.out.println("lower = " + lower) ;
System.out.println("isEmpty = " + isEmpty) ;
System.out.println("concat = " + concat) ;
System.out.println("modify = " + modify) ;
System.out.println("at = " + at) ;
System.out.println("number = " + number);
}
}
import java.util.Scanner;
public class Palindrome {
public static boolean isPalindrome(String s){
int low = 0 ;
int high = s.length() -1 ;
while(low < high){
if(s.charAt(low) != s.charAt(high)){
return false ;
}
low ++ ;
high -- ;
}
return true ;
}
public static void main(String[] args){
Scanner input = new Scanner(System.in) ;
String s = input.nextLine() ;
if(isPalindrome(s)){
System.out.println("是回文串") ;
}
else{
System.out.println("不是回文串") ;
}
}
}
- String类定义了从字符串中查找字符和字串的方法
public class SearchString {
public static void main(String[] args){
String s1 = new String("This is a Java String") ;
System.out.println(s1.length()) ;
System.out.println(s1.indexOf('a')) ;
System.out.println(s1.indexOf("is")) ;
System.out.println(s1.indexOf('a',0)) ;
System.out.println(s1.indexOf("is",0)) ;
System.out.println(s1.lastIndexOf('a')) ;
System.out.println(s1.lastIndexOf("is")) ;
System.out.println(s1.lastIndexOf('a',0)) ;
System.out.println(s1.lastIndexOf("is",0)) ;
}
}
- 字符串不是数组,但字符串能转化成字符数组或字节数组
- 下面是字符串转换成数组的方法
public class StringToArray {
public static void main(String[] args){
String s = new String("This is a Java String") ;
char [] c = s.toCharArray() ;
System.out.println(c) ;
char [] subs = new char[4] ;
s.getChars(10,14,subs,0) ;
System.out.println(subs) ;
}
}
- Java中经常需要比较两个字符串是否相等或者比较两个字符串的大小
- 下面是一些比较方法
public class CompareTo {
public static void main(String[] args){
String s1 = new String("Hello") ;
String s2 = new String("Hello") ;
System.out.println(s1.equals(s2)) ;
System.out.println(s1.equals("hello")) ;
System.out.println(s1.equalsIgnoreCase("hello")) ;
String [] str = {"China", "USA", "Russia", "France", "England"} ;
for(int i=str.length-1; i>=0; i--){
for(int j=0; j<i; j++){
if(str[j].compareTo(str[j+1]) > 0){
String temp = str[j] ;
str[j] = str[j+1] ;
str[j+1] = temp ;
}
}
}
for(String m : str){
System.out.print(m + " ") ;
}
System.out.println() ;
System.out.println(s1.startsWith("H"));
System.out.println(s1.endsWith("o")) ;
System.out.println(s1.contains("l")) ;
}
}
- 使用String类的split()方法可以拆分字符串,使用join()方法可以将String数组中的字符串连接起来
- 使用matches()方法返回字符串是否与正则表达式匹配
- 下面使用了这几个方法
public class SplitString {
public static void main(String[] args){
String ss = "one little, two little, three little" ;
String [] str = ss.split("[ ,.]") ;
for(String s : str){
System.out.print(s + " ") ;
}
System.out.println() ;
System.out.println(ss.matches(".*little.*")) ;
String joined = String.join("/", "usr","local","bin") ;
System.out.println(joined) ;
String [] seasons = {"春", "夏", "秋", "冬"} ;
String sss = String.join("-",seasons) ;
System.out.println(sss) ;
}
}
- 格式化输出
- Java提供了System.out.printf()方法在控制台显示格式化输出
- 格式符以%号开头,至少含有一个转义字符
- 常用的输出方式有:整数输出,小数输出,科学计数法输出,字符方式输出,字符串类型输出
- 下面是一些输出方法
public class PrintfDemo {
public static void main(String[] args){
double value = 10.05432 ;
char c = 'a' ;
System.out.printf("%d%n",(int)value) ;
System.out.printf("%.2f%n",value) ;
System.out.printf("%e%n",value) ;
System.out.printf("%c%n",c) ;
System.out.printf("%s%n",value) ;
}
}
- StringBuilder类是Java5新增加的,表示可变字符串
- 下面是一些String Builder对象的一些方法
public class StringBuilderDemo {
public static void main(String[] args){
StringBuilder ss = new StringBuilder("Hello") ;
System.out.println(ss.length()) ;
System.out.println(ss.capacity());
System.out.println(ss.append("Java")) ;
System.out.println(ss) ;
System.out.println(ss.insert(5,",")) ;
System.out.println(ss.replace(6,10,"world!")) ;
System.out.println(ss.substring(6,12)) ;
ss.deleteCharAt(5) ;
System.out.println(ss.reverse()) ;
}
}