Java的String类
1. String对象的构造
String s = new String(…);//参数…有四种类型
①String s1 = new String(“abc”);
创建s1并且把”abc”的值赋给s1.
②String s2 = new String(s1);
创建s2并且把字符串s1的值赋给s2.
③String s3 = new String(char[] ch);
创建s3并且把字符数组的元素组成的字符串的值赋给s3
④String s4 = new String(char[] ch,int startIndex,int length);
创建s4并且把字符数组的若干元素组成的字符串的值赋给s4,这些元素是下标从startIndex开始的length个元素.
2. 将常量赋给String常量对象
String s1 = “abc”;与String s2 = newString(“abc”);的区别在于s1为字符串常量对象,s2为字符串(变量)对象.
对比:
String s1 = “abc”;
String s2 = “abc”;
和
String s3 = new String(“abc”);
String s4 = new String(“abc”);
他们的内存分配示意图如下
比较的代码如下(==用于比较字符串的地址是否相同)
String s1,s2;
s1 = "abc";
s2 = "abc";
System.out.println(s1==s2);
String s3,s4;
s3 = new String("abc");
s4 = new String("abc");
System.out.println(s3==s4);
运行结果如下
true
false
3. String类的各类方法
①s.length()方法
获取字符串s的长度
例如
String s = new String("123456");
System.out.println(s.length());
运行结果如下
6
②s1.equals(String s2)方法
比较两个字符串s1和s2的内容是否相等
例如
String s1 = new String("123456");
String s2 = new String("123456");
String s3 = new String("你好123456");
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
运行结果如下
true
false
③s1.endsWith(s2)方法和s1.startssWith(s2)方法
判断s1是否以s2位后缀(前缀)
例如
String s1 = new String("早上好123456");
String s2 = new String("好123456");
System.out.println(s1.endsWith(s2));
System.out.println(s1.startsWith("你好"));
运行结果如下
true
false
④s1.compareTo(s2)方法和s1.compareToIgnoreCase(s2);
比较字符串s1和s2的大小,比较的依据是ASCII码.
compareTo考虑大小写的差别,compareToIgnoreCase忽略大小写.
例如
String s = new String("abcde");
System.out.println(s.compareTo("Boy"));
System.out.println(s.compareToIgnoreCase("Boy"));
char x = 'a',y = 'B',z = 'b';
System.out.println(""+(int)(x)+" "+(int)(y)+" "+(int)(z));
运行结果如下
31
-1
97 66 98
可以看出运行结果跟ASCII码的关系.
⑤s1. contains(s2)方法
判断s1中是否以s2作为子串.
例如
String s = new String("my name is Kangkang");
System.out.println(s.contains("kang"));
System.out.println(s.contains("My"));
运行结果如下
true
false
⑥s1.indexOf(s2,startIndex)方法
判断s1中从startIndex开始的位置,如果有s2这个子串,则返回s2的位置(s2首字符的下标),否则返回-1.
startIndex可以缺省,缺省值为0.
例如
String s = new String("Kangkang");
System.out.println(s.indexOf("ang"));
System.out.println(s.indexOf("ang",2));
运行结果如下
1
5
⑦s.substring(startIndex,endIndex)方法
获取s中从startIndex开始到endIndex结束的子串,获取的子串包含下标为startIndex的字符,不包含下标为endIndex的字符.
endIndex可以缺省,缺省值为s.length().
例如
String s = new String("Good morning");
System.out.println(s.substring(1,s.length()));
System.out.println(s.substring(5,12));
运行结果如下
ood morning
morning
⑧s.trim()方法
如果s的前后(不是中间)有空格,那么返回去掉空格之后的字符串.
例如
String s = new String(" 李晓红 ");
System.out.println(s.equals("李晓红"));
System.out.println(s.trim().equals("李晓红"));
运行结果如下
false
true
⑨s.charAt(index)方法
获取字符串s中下标为index的字符.
例如System.out.println("xyz".charAt(1));
运行结果为
————————
y————————
4. 字符串与基本数据类型之间的相互转化
①int,float,double,long…→String.
有两种方法.
方法一:在数字前面加上一个空字符串,就可以将数字转化为字符串.
例如
String s = ""+123456; System.out.println(s.length());运行结果为
6
方法二:使用String类的valueOf()方法
例如
String s1 = String.valueOf(123); String s2 = String.valueOf(123.456); System.out.println(s1); System.out.println(s2);运行结果为
123
123.456
②String→int,float,double,long….
使用
Integer类的parseInt()方法
Float类的parseFloat()方法
Double类的parseDouble()方法
Long类的parseLong方法
分别进行相应的转化.
例如
String s1 = "123"; String s2 = "123.456"; int x = Integer.parseInt(s1); float y = Float.parseFloat(s2); System.out.println(x+y);运行结果为
246.456
③long→各种进制的字符串表示
例如
String s1 = Long.toString(12); String s2 = Long.toBinaryString(12); String s3 = Long.toHexString(12); System.out.println("字符串:"+s1); System.out.println("二进制:"+s2); System.out.println("十六进制:"+s3);运行结果为
字符串:12
二进制:1100
十六进制:c
④char ch[]→String
使用前面介绍的字符串的第3和第4种创建方法.
例如
char ch [] = {'h','e','l','l','o'}; String s = new String(ch); System.out.println(s);运行结果为
hello
⑤String→char ch[]
使用String类的toCharArray()方法.
例如
char ch[];//1.先定义一个字符数组 ch = "HelloWorld".toCharArray();//2.转化并存储 for(char c:ch)//遍历字符数组 System.out.print(c+" "); System.out.println();运行结果为
H e l l o W o r l d