1.Java中String的常规用法

String c_str;

字符串连接(注意事项):

使用 “+”,会将所有的变量转成String

例子:

  String  c_str = "abc";

  char  ch = 'A';  //ascii 为 65

  int  x  =  1;

  System.out.println(c_str + ch  + x); // "abcA1"

  System.out.println(x  + ch  + c_str ); // "66abc"

  System.out.println(x  + c_str  +  ch); // "1abcA"

低会转成高输出,Java中基础类型为int,byte + char 最后结果为int

字符串内容判断:

boolean  c_str.isEmpty();

  如果字符串为空返回true,否则为false

字符串长度:

int  c_str.length();//返回字符串的长度

字符串的比较(包含字符大小写)(int):

  c_str.compareTo(String x_ctr );

  //如果x_ctr == c_str 返回0,x_ctr 为空,返回c_str长度

  //如果x_ctr < c_str返回正数,否则返回负数

  返回的值是从开头后的不匹配的第一个字符的差值

例子:

  String c_str = "ABC123"; //A的ascii码65

  String x_ctr = "AAC";

  int  i  =  c_str.compare(x_ctr);

  System.out.println("差值:" + i);

  输出:1(字符串不相等,'B' - 'A' = 1)

字符串的比较(与字符大小写无关):

  c_str.compareToIgnoreCase(String x_ctr);

字符串的连接:

(1)c_str  “+”  x_str

(2)c_str.concat(String x_str)

  将String x_str连接到c_str的后面,返回String

字符包含另外字符串:

boolean  c_str.contains(String x_str);

  如果字符串c_str包含x_str,返回true,否则为false

字符串相等(匹配)判断:

 boolean  c_str.content_Equals(String  x_str);

boolean  c_str.matches(String  x_str);

  如果字符串c_str字符和x_str字符一样,返回ture,否则为false

判断字符串的末尾:

boolean  c_str.endsWith(String  x_str);

  如果字符串c_str的末尾是以x_str结尾,则返回true,否则false(有字符大小写之分)

字符串的比较(boolean):

boolean  c_str.equals(String  x_str); 

boolean  c_str.equalsIgnoreCase(String  x_str); //忽略字符大小写

  若c_str中的字符与x_str相同,返回true,否则为false

equals比较的是对象中的字符,不包含对象

而  "=="  则是比较对象是否引用的是两个实例

String  X1 = "test";//创建一个“test”对象,并将"test”放置在StringPool中

String  X2 = "test";//检查StringPool中是否存在"test",因为已经存在,所以X2引用相同的String,指向同一位置

String  s  =  new  String("hello world");//创建了两个对象

“hello world”已经是String类型,相当于“hello world”本来创建了一个对象放置在StingPool中,然后又new String创建另一个对象(多余)

首先在StringPool中创建"hello world"的字符串(第一个对象),通过字符串构造函数new  String()在堆上创建String对象(第二个对象),s将会引用这个String

String  S1  =  new  String("hello");  //创建一个对象

String  S2  =  new  String("hello");  //再创建一个对象

S1和S2属于不同对象,在不同的堆上,S1 == S2 返回false ,S1.equals(S2)返回true

String转byte数组:

byte[]  c_str.getBytes();

  将String c_str转成byte数组

例子:

  c_str = "0123";

  byte[]  B;

  B = c_str.getBytes();

  System.out.println("B[0]的字节:" + B[0]);

  输出:B[0]的字节:48(0的Ascii为48)

byte数组转String:

String c_str = new String(byte[]);

   将byte[]数组转成String

例子:

  byte[] b = new byte[]{'1','2','a','b'};

  String  c_str = new String(b);

  System.out.println("转换后字符串为:" + c_str);

  输出:转换后字符串为:12ab

附加(统计数组中元素个数):

  int[] A;//声明整型数组

  int[] A = new int[count];//创建不初始化数组,需要指定大小

  int[] a = new int[]{1,2,3,4,5};//创建并初始化数组

  int len = a.length;//没有()

   输出:len = 5

字符串中提取单个字节:

  c_str.charAt(int index); //获取的是c_str中第index的字符(下标从0开始)

字符串中设置单个字节:

  c_str.setCharAt(int index,char  ch); //设置c_str中第index的字符(下标从0开始)

字符串的截取(多个字节,返回字符数组):

void  c_str.getChars(int start_source,int end_source,char x[],int start_target);

  start_source为原字符串的截取启始位置

  end_source为原字符串的截取结束位置

  char x[]为存放截取字符串的字符数组

  start_target为截取后字符从字符数组下标开始存放

例子:

  String c_str = "abcdef123"; //字符长度为9

  char[]  x  =   new  char[c_str.length()];

  c_str.getChars(1,5,x,0);

  字符数组x中:x[0] = 'b',x[1] = 'c',x[2] = 'd',x[3] = 'e',x[4] = '';

  从原String中取4个字符,下标1,2,3,4(b,c,d,e)

字符串的截取(多个字节,返回String):

String  c_str.substring(int begin,int  end);

  截取字符串c_str中从begin下标到end下标的字符

例子:

  String  c_str = "abcdef123";

  String  x = c_str.substring(1,4);

  结果:x = “bcd”

获取字符串的哈希码:

int  c_str.hashCode(); 

  返回c_str的哈希码

字符串查找位置

int  c_str.indexOf(String  x_str);//可以传递char字符char  x_char

  查找x_str在c_str的首次出现的位置下标,找不到就返回-1

例子:

  String c_str = "abcdefg";

  String x_str = "cd";

  int index = c_str.indexOf(x_str);

  System.out.println("x_str第一次出现在c_str的位置:" + index);

  输出:x_str第一次出现在c_str的位置:2

int c_str.indexOf(String x_str,int index);//可以传递char字符char  x_char

  从index下标开始搜索并返回x_str在c_str出现的位置(下标不变,搜索启始位置从0变成index)

int c_str.lastIndexOf(String x_str);//返回字符x_str在c_str最后出现的位置

int c_str.lastIndexOf(String x_str,int index);//从下标index找x_str在c_str出现的最后位置

字符串联重复:

String c_str.repeat(int count);

  String x = c_str.repeat(2);//将c_str重复2次组成一个String

字符串中字符的替换:

String  c_str.replace(char  oldchar,char  newchar);//可以传递String和char

  将字符串中某个字符用新字符全部替换

String c_str.replaceAll(String  old,String  new);//只能传递String,支持正则表达式

  将字符串中某个子字符串用新字符串全部替换

String  c_str.replaceFirst(String old,String  new);

  将字符串中第一次出现的字符串替换

String c_str = "ABCDEA";

  String x = c_str.replace('A','a');// x = "aBCDEa";

  String x = c_str.replace("AB",“ab”);// x = "abCDEA";

常用正则表达式:

  "\\d"    匹配所有的整数

  "<.*>"  匹配字符串中从"<"开始到最后一个">"结束之间的内容

  "<.*?>"匹配字符串中从"<"开始到最近">"结束之间的内容,如果有两个<>,则将两个分别替换成对应的字符串

  “[A-Z]”替换字符串中大写字母

  “\\w”替换A-Z,a-z,0-9的字符

  一般字符替换最好使用replce(),性能更优

字符串开头判断:

boolean  c_str.startWith(String  x_str);

  如果c_str的开始以x_str字符串开始,返回true,否则为false

boolean  c_str.startWith(String  x_str,int  index);

  如果从Index下标开始,c_str以x_str开始则返回true

字符串字符大小写转换:

String  c_str.toLowerCase();//字符串转小写

String  c_str.toUpperCase();//字符串转大写

字符串去除前面和末尾空格:

String  c_str.trim();//删除字符串前面和末尾的空格

字符串之间用特定字符串连接:

String  join(String connetstr,String  str1,String str2);

例子:String  c_str = "";//与c_str的字符串无关

   c_str = c_str.join("---","abc","def");

   System.out.println("c_str字符串:" + c_str);

   输出:c_str字符串:“abc---def”;

备注:与c_str无关,且如果只有一个字符“abc”和连接字符,只会输出字符“abc”  

字符串截取多个字符串:

String[]   split(String  x);

  以字符串x作为划分,分成多个字符串

例子:

  String  c_str = "ABC;123;DEF;456";

  String[]  end_str;  //字符串数组存放结果

  String  x  = ";" ;//以;作为分隔字符串

  end_str = c_str.split(x);

  输出:end_str [0]  = "ABC";

     end_str [1]  = "123";

     end_str [2]  = "DEF";

     end_str [3]  = "456";

备注:可以通过c_str.indexOf(";",index) != -1找到c_str中有count个";",new String[count+1]

字符串反转:

 StringBuffer   StringBuffer(c_str).reverse();

  StringBuffer转String可以通过toString()的方式

例子:

  String c_str  = "hello";

  c_str = new StringBuffer(c_str).reverse().toString();

  新建一个StringBuffer,将c_str转成StringBuffer,再调用反转reverse(),最后通过toString()转成String

  输出:c_str = "olleh"

字符串的插入:

StringBuffer  StringBuffer(c_str).insert(int index,String x_str);//也可插入字符char  ch

  index需要插入的下标位置,x_str或者ch是插入的字符串或者字符

例子:

  String c_str = "ABC";

  c_str = new StringBuffer(c_str).insert(1,"12").toString();

  输出:c_str  =  "A12BC"