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 


posted @ 2017-02-02 10:29  tensory  阅读(240)  评论(0编辑  收藏  举报