1、字符串不属于基本数据类型(基本数据类型有【byte,int,char,float,double,boolean,short,long】),字符串由单个或多个字符组成,本质上是字符数组,Java中提供两种实现字符串的类,分别是String、StringBuffer类。
String类
字符串的声明:
1、常量声明方式
String sName="Bob";
2、对象声明方式
String sName=new String("Bob");
3、由字符数组初始化
String sName=new String(char[] ch);
4、由字符数组指定元素个数
String sName=new String(char[] ch,int index,int length);
4、指定字符数组的起始位置
String sName=new String(char[] ch,int begin,int end);
测试用例:
public static void main(String []args)
{
//常量声明方式
String sName="Bob";
System.out.println(sName); //输出Bob
// 对象声明
String sName1=new String("Bob");
System.out.println(sName); //输出Bob
// 由字符数组声明
char [] ch=new char []{'a','b','c','d'};
String sNum=new String(ch);
System.out.println(sNum); //输出abcd
// 指定字符数据的起位置和长度,
String sNum1=new String(ch,1,2);
System.out.println(sNum1); //输出bc
// 指定起始位置
String sNum2=new String(ch,1,3);
System.out.println(sNum2); //输出bcd
System.out.println("数组的长度:" + ch.length); //输出4
int iLen=sNum.length();
System.out.println("对应字符串长度:" + iLen); //输出4
}
字符串的操作:
public static void main(String []args)
{
String sUpper="WELCOME TO CHINA";
String sLow="Welcome to china";
String sSame="WELCOME TO CHINA";
String sLow1="xelcome to china";
if(sUpper.equals(sSame)){
System.out.println("使用equlas比较结果:True");
}
else{
System.out.println("使用equals比较结果:False");
}
if(sUpper.equalsIgnoreCase(sLow)){
System.out.println("使用equalsIgnoreCase比较结果:True");
}
else{
System.out.println("使用equalsIgnoreCase比较结果:False");
}
int j=sLow1.compareTo(sUpper);
System.out.println(j); //输出为32
int i=sLow1.compareTo(sUpper);
System.out.println(i); //输出为33,由此得知compareTo输出ASIIC码值差值。
}
public static void main(String []args)
{
String sUpper="WELCOME TO CHINA";
String sLow="Welcome to china";
String sConcat=sUpper.concat(sLow);
System.out.println(sConcat); //输出WELCOME TO CHINAWelcome to china
String sConcatMore=sUpper.concat(sLow).concat("多个concat");
System.out.println(sConcatMore);
}
3、字符串的复制,主要有copyValueOf()方法实现,它有两个重载方法,分别提供部分复制和全部复制。
copyValueOf(char[] ,int offset,int length)
copyValueOf(char [])
public static void main(String []args)
{
String sLow="Welcome to china";
char [] ch=new char[sLow.length()]; //开辟字符串数组大小
for(int i=0;i
public static void main(String []args)
{
String sLow="Welcome to china";
String sReplaceChar=sLow.replace('W','H');
System.out.println(sReplaceChar); //输出替换字符的结果:Helcome to china
String sReplaceAll=sLow.replaceAll("china","nanjing");
System.out.println(sReplaceAll); //输出替换字符的结果:Welcome to nanjing
String sReplaceFirst=sLow.replaceFirst("c","HJK");
System.out.println(sReplaceFirst); //输出替换字符的结果:WelHJKome to china
}
5、分割字符串,分割字符串返回的是字符串数组,采用split()方法
/*
split函数的参数要求必须是字符串类型,不能使字符类型,以字符串来分割
*/
public static void main(String []args)
{
String sLow="Welcome to china";
System.out.println("原句:"+sLow);
String [] sPlitArray=sLow.split(" ");
for(int i=0;i
StringBuffer
public static void main(String []args)
{
StringBuffer sb = new StringBuffer();
System.out.println("原:" + sb);
sb.append("welcome to china");
System.out.println("append:" + sb);
sb.insert(7,"KK");
System.out.println("insert:" + sb);
int iCapacity = sb.capacity();
System.out.println("capacity:" + iCapacity);
int iLen = sb.length();
System.out.println("length:" + iLen);
char ch = sb.charAt(2);
System.out.println("charAt:" + ch);
int iIndex = sb.indexOf("e");
System.out.println("indexOf:" + iIndex);
String sSubstring = sb.substring(5,15);
System.out.println("substring:" + sSubstring);
System.out.println("reverse:" + sb.reverse());
}
/*
---------- 运行 ----------
原:
append:welcome to china
insert:welcomeKK to china
capacity:34
length:18
charAt:l
indexOf:1
substring:meKK to ch
reverse:anihc ot KKemoclew
输出完成 (耗时 0 秒) - 正常终止
*/