常用方法如下:
1.获取字符串长度:
strmsg.length();
2.字符串转为字节:
strmsg.getBytes();
3.截取字符串 从第几位开始
strmsg.substring(int beginIndex);
4.截取字符串 从第几位开始到第几位结束
strmsg.substring(int beginIndex,int endIndex);
5.比较两个字符串是否相等,后者不区分大小写
strmsg.equals(anObject);
strmsg.equalsIgnoreCase(anotherString);
6.替换字符串中的某个字符
strmsg.replace(oldChar, newChar);
7.去除收尾空格
strmsg.trim();
8.获取从第几位到第几位的字符数组
strmsg.getChars(int srcBegin, int srcEnd, char dst[], int dstBegin);
9.将字符串转为字符数组
strmsg.toCharArray();
10.比较两个字符串大小,后者不区分大小写
strmsg.compareTo(String anotherString);
strmsg.compareToIgnoreCase(String str);
11.字符串以suffix字符串开始,结束
strmsg.startsWith(suffix);
strmsg.endsWith(suffix);
测试代码:
package demo;
public class StringUtils {
public static void main(String[] args) {
StringDemo();
}
public static void StringDemo() {
String strmsg="are you ok!";
// length()字符串长度
System.out.println("字符串长度:"+strmsg.length());
// charAt(2)截取一个字符
System.out.println("字符:"+strmsg.charAt(2));
// getchars()截取多个字符并由其他字符串接收
char[] ss=new char[10];
strmsg.getChars(0, 6, ss, 0);
System.out.println("截取字符串到字符数组:"+new String(ss));
// getBytes()将字符串变成一个byte数组
System.out.println("byte数组"+new String(strmsg.getBytes()));
// toCharArray()将字符串变成一个字符数组
char[] b=strmsg.toCharArray();
System.out.println("字符数组:"+new String(b));
// equals()和equalsIgnoreCase()比较两个字符串是否相等,前者区分大小写,后者不区分
System.out.println("比较两个字符串是否相等:"+strmsg.equals("are you ok!"));
System.out.println("比较两个字符串是否相等(不区分大小写):"+strmsg.equalsIgnoreCase("are you OK!"));
// startsWith()和endsWith()判断字符串是不是以特定的字符开头或结束
System.out.println("判断字符串以什么开头:"+strmsg.startsWith("are"));
System.out.println("判断字符串以什么结束:"+strmsg.endsWith("ok"));
// toUpperCase()和toLowerCase()将字符串转换为大写或小写
System.out.println("字符串转大写:"+strmsg.toUpperCase());
System.out.println("字符串转小写:"+"ARE YOU OK".toLowerCase());
// concat() 连接两个字符串
System.out.println("连接字符串:"+strmsg.concat("AREYOUOK"));
System.out.println("拼接字符串:"+"AREYOUOK".concat(strmsg));
// trim()去掉起始和结束的空格
System.out.println("去掉开始结束空格:"+strmsg.trim());
System.out.println("去掉开始结束空格:"+" ARE YOU OK ".trim());
// substring()截取字符串
System.out.println("截取字符串结果:"+strmsg.substring(5));
System.out.println("截取字符串结果:"+"AREYOUOK".substring(5 ,8));
// indexOf()和lastIndexOf()前者是查找字符或字符串第一次出现的地方,后者是查找字符或字符串最后一次出现的地方
System.out.println("查找第一次出现位置:"+strmsg.indexOf("are"));
System.out.println("查找第一次出现位置:"+strmsg.indexOf("are11"));
System.out.println("查找第一次出现位置:"+strmsg.lastIndexOf("k"));
// compareTo()和compareToIgnoreCase()按字典顺序比较两个字符串的大小,前者区分大小写,后者不区分
System.out.println("aaaaa".compareTo("aaaaa"));
System.out.println("aaaaa".compareTo("bbbbb"));
System.out.println("aaaaa".compareToIgnoreCase("AAAAA"));
// replace() 替换
System.out.println("替换结果打印:"+strmsg.replace("o", "O"));
}
}
测试输出结果:
字符串长度:11
字符:e
截取字符串到字符数组:are yo
are you ok!
字符数组:are you ok!
比较两个字符串是否相等:true
比较两个字符串是否相等(不区分大小写):true
判断字符串以什么开头:true
判断字符串以什么结束:false
字符串转大写:ARE YOU OK!
字符串转小写:are you ok
连接字符串:are you ok!AREYOUOK
拼接字符串:AREYOUOKare you ok!
去掉开始结束空格:are you ok!
去掉开始结束空格:ARE YOU OK
截取字符串结果:ou ok!
截取字符串结果:UOK
查找第一次出现位置:0
查找第一次出现位置:-1
查找第一次出现位置:9
0
-1
0
替换结果打印:are yOu Ok!
总结:
equals的效率高些,compareTo其实就是按照编码的数值求差值,根据差值进行比较,它能确定两个String在字典顺序上的前后性,当你只是想知道是否一致时,用equals也行,效果一样。
另外,equals是Object的方法,要求涉及到比较操作的继承类要自己重写该方法,所以String重写了equals,而compareTo为String的方法。所以:
value1.compareTo(value2),当value1不为String类型时,会报错。
但是Object类 只有.equals(),没compareTo
Object是根类,它有的方法,其他类都可以继承,使用.所以.equals 基本随时能用.
一、对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
1、“==”比较两个变量本身的值,即两个对象在内存中的首地址。
(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性)
2、“equals()”比较字符串中所包含的内容是否相同。
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
System.out.println("s1==s2:"+(s1==s2));
System.out.println("s1==s3:"+(s1==s3));
System.out.println("s1==s4:"+(s3==s4));
System.out.println("s1.equals(s2):"+(s1.equals(s2)));
System.out.println("s1.equals(s3):"+(s1.equals(s3)));
System.out.println("s3.equals(s4):"+(s3.equals(s4)));
s1==s2:false
s1==s3:false
s1==s4:true
s1.equals(s2):true
s1.equals(s3):true
s3.equals(s4):true
开发中尽量用equals。