在项目中String是不可避免使用,包括数据之间的相互传值,在处理id时,经常用到string的一些方法,现在总结一下:
认识String:
String 默认使用final修饰,不能被继承;java字符串在内存中采用nunicode编码方式,任何一个字符对应两个字节的定长编码;
String是放在常量池中,并尽量使用同一对象,重用静态字符串;
IndexOf
使用indexOf实现检索;
Int indexOf(String str) 在字符串中检索到str,返回第一次出现的位置,如果检索不到,那就返回-1;此方法尝尝用来检验字符串中有没有包含某个字符串;
Int indexOf(String str,int fromIndex) 从字符串的指定位置开始检索
Int lastIndexOf(String str,int from) str在字符串中多次出现时,将返回最后一个出现的位置
Substring
使用substring获取子字符串
String substring(int beginIndex,int endIndex) 返回字符串中从下标开始到enindex结束的子字符串;注意:含头不含尾
String substring(int beginIndex) 返回从该下标到结尾的子字符串;(含头含尾)
一般我们经常使用该方法来去除字符串中最后的,号;
String str.substring(0,str.length()-1);
Trim
去掉一个字符串的前后的空余
String username = “ good man ”
Username = username.trim();// good man
charAt
Char charAt(int index); 用于返回字符串指定未知的字符;
startsWith和endsWith
检测一个字符串是否以指定字符串开头或结尾
String str = “Thinking in java”;
System.out.println(str.endWith(“java”));//true
大小写的转换
str.toUpperCase();转为大写
Str.toLowerCase();转为小写
valueOf
将其他类型转换为字符串类型
/*
* valueOf
* 将其他类型转为字符串类型
*/
double pl = 3.1415926;
int value = 123;
boolean flag = true;
char[] charArr = {‘1’,’2’,’3’,’4’};
String str1 = String.valueOf(pl);
String str2 = String.valueOf(value);
String str3 = String.valueOf(flag);
String str4 = String.valueOf(charArr);
System.out.println(str1);//3.1415926
System.out.println(str2);//123
System.out.println(str3);//true
System.out.println(str4);//1234
Replace/replaceAll
替换字符串
Str = str.replace(“”,””);//性能偏低
Equals() //判断字符串是否相等
equalsIgnoreCase() //忽略大小写的情况下比较内容是否相等
== //判断内容与地址是否相同
字符串的转换:
1、将字符串转换为字符数组
Public char[] toCharArray();
2、 将字符串转为字符串数组
就是用split()方法;
下面是自己做的一些字符串的方法,其中有字符串之间的去重功能,这个在项目中也是用到的(比如去除重复的id)
public static void main(String[] args) {
/*
* valueOf
* 将其他类型转为字符串类型
*/
double pl = 3.1415926;
int value = 123;
boolean flag = true;
char[] charArr = {'1','2','3','4'};
String str1 = String.valueOf(pl);
String str2 = String.valueOf(value);
String str3 = String.valueOf(flag);
String str4 = String.valueOf(charArr);
System.out.println(str1);//3.1415926
System.out.println(str2);//123
System.out.println(str3);//true
System.out.println(str4);//1234
/*
* 字符串与int之间的转化
*/
String a = "123";
int aa = Integer.parseInt(a);
int bb = 456;
String b = Integer.toString(bb);
System.out.println(aa);
System.out.println(b);
/*
* 字符串与doube之间转化
*
*/
String c = "3.14";
double cc = Double.parseDouble(c);
System.out.println(cc);
/*
* 字符串与date之间转化
*/
//date转为String
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateStr = sdf.format(date);
//String转为date
Date date1 = null;
try {
date1 = sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(dateStr);
System.out.println(sdf.format(date1));
demo1 demo = new demo1();
demo.distinct1();
demo.distinct2();
}
//字符创之间去重-情景1
public String distinct1(){
String str1 = "12312,122312,12334,56658,89895455,234,456";
String str2 = "234,456,12334";
StringBuffer strBf = new StringBuffer();
String[] strArr2 = str2.split(",");
//现剔除str2中存在的
for (int i = 0; i < strArr2.length; i++) {
if(str1.indexOf(strArr2[i])!= -1){
str1 = str1.replace(strArr2[i], "");
}
}
//下面主要是实现去重后的str1的重新组装,注意要去掉最后的“,”号
String[] strArr1 = str1.split(",");
for (int s = 0; s < strArr1.length; s++) {
if(strArr1[s] != ""){
if(s != strArr1.length-1 ){
strBf.append(strArr1[s]+",");
}else{
strBf.append(strArr1[s]);
}
}
}
str1 = new String(strBf);
System.out.println(str1);
return str1;
}
//字符串去重-情景2
public String distinct2(){
String aa = "asdaeaaasssfdfdggfgfywvcj";
StringBuffer strBuf = new StringBuffer();
char[] aaArr = aa.toCharArray();
for (int i = 0; i < aaArr.length; i++) {
if(strBuf.indexOf(String.valueOf(aaArr[i])) == -1){
strBuf.append(aaArr[i]);
}
}
aa = new String(strBuf);
System.out.println(aa);
return aa;
}