刚刚混迹在前沿的java江湖没多久,Sring的大名就已经如雷贯耳,据小道消息透露,java实例中60%的操作都是针对的字符串,对于它的真实性,小弟就无从考究了,毕竟,江湖总需要传言嘛!今天仔细的看了一下String类的API文档,果然名不虚传,茫茫多的构造器方法,可见其强大之处!由于能力的限制,小菜我只能对一些常用的方法进行简单的总结,希望大家多多指点。
首先,要注意一点String类是一个final类,也就是说它是一个终态类,不能被继承。其次它有繁多的构造器方法,对数组操作来说很方便,是具体情况而定,在这里就不一一赘述了。
下面是一些常用方法总结:
1.equals()——将此字符串与指定的字符串比较,返回一个boolean值。
public static void main(String[] args){
String st1="hello";
String st2="world";
String st3="hello";
System.out.println("st1与str2是否相等,相等则为true,否则为false,结果为:"+st1.equals(st2));
System.out.println("st1与str3是否相等,相等则为true,否则为false,结果为:"+st1.equals(st3));
}
输出结果如下:
st1与str2是否相等,相等则为true,否则为false,结果为:false
st1与str3是否相等,相等则为true,否则为false,结果为:true
下面我们再来看另一个例子:
public static void main(String[] args){
String st1=new String("hello");
String st2=new String("hello");
Object obj1=new Object();
Object obj2=new Object();
System.out.println("st1与str2是否相等,相等则为true,否则为false,结果为:"+st1.equals(st2));
System.out.println("obj1与obj2是否相等,相等则为true,否则为false,结果为:"+obj1.equals(obj2));
}
输出结果为:
st1与str2是否相等,相等则为true,否则为false,结果为:true
obj1与obj2是否相等,相等则为true,否则为false,结果为:false
至于输出结果的区别,大家可以参照一下Object类与String类中equals()方法!
2.compareTo()——按字典顺序比较两个字符串,返回两个字符串在相同索引k处的char值之差。
public class StringMethods {
public static void main(String[] args){
String st1="a";
String st2="b";
String st3="bcd";
int n=st1.compareTo(st2);
int m=st1.compareTo(st3);
System.out.println("st1-st2="+n);
System.out.println("st1-st3="+m);
}
请看结果:
st1-st2=-1
st1-st3=-1
如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差。代码如下:
public static void main(String[] args){
String st1="bc";
String st2="b";
String st3="bcd";
int n=st1.compareTo(st2);
int m=st2.compareTo(st3);
System.out.println("st1-st2="+n);
System.out.println("st1-st3="+m);
}
请看结果:
st1-st2=1
st1-st3=-2
3.indexOf(int ch)——返回字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。
4.substring(int beginIndex, int endIndex)——将一个字符串拆分成新的字符串(子字符串)并返回。
5.replace(char oldChar, char newChar)——将newChar替代oldChar,返回新字符串。
我们将三个方法组合起来,代码如下:
public static void main(String[] args){
String s = "have a good time!/come from...";
System.out.println("操作前的字符串为:"+s);
int index = s.indexOf('/');
System.out.println("/出现的位置为:"+index);
String str = s.substring(0, index);
System.out.println("拆分后的字符串为:"+str);
str = str.replace("time", "life");
System.out.println("替换后的字符串为:"+str);
}
打印结果:
操作前的字符串为:have a good time!/come from...
/出现的位置为:17
拆分后的字符串为:have a good time!
替换后的字符串为:have a good life!
对于字符串的方法还有很多很多,我只是把我经常遇到的方法罗列了一下,但其他的方法还是要多加了解,这样应用起来才会得心应手!
进制的转换一度让我很头疼,学习了Integer之后,这类问题就相对比较简单了。我们来看看里面的两个方法。
1.parseInt(String s, int radix)——使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
我们举一个二进制转十进制的例子。
public static void main(String[] args){
String str="00001000";
byte b=(byte) Integer.parseInt(str, 2);
System.out.println("b="+b);
String str1="11111111";
byte b1=(byte) Integer.parseInt(str1, 2);
System.out.println("b1="+b1);
}
请看结果:
b=8
b1=-1
对于b=8,我们不难理解,2的三次方,但是b=-1,理解起来就不是那么简单了。其实也不难,我们知道parseInt返回一个有符号的整数,首先“1111 1111”是个有符号的整数,我们要求其结果,符号位不变其余为取反加一就可以了。
2.toBinaryString——以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。基本上是parseInt的逆运算,返回数为无符号数。