您的位置:首页 > 职场人生

黑马程序员_String类的一些总结

2015-10-29 23:54 519 查看

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、String类的概述

1、string简述

首先,String类是在java.lang包中,该类被final修饰,没有子类对象,所以String类中的方法都是不能复写的。java中所有的字符串都是string类的实例对象。一般来说,类创建实例对象格式都是:类名 类的变量名 = new 类名();String也是一样的,比如String str = new String();但是,在实际运用中我们都是用简写,String str = "";其实这两种写法都是同一个意思。"str"是String类的变量,它指向了一个空的对象,也就是空字符串""。

2、String的特点

字符串最大的特点是一旦被初始化就不能改变。
Sring s1 = "abc";s1 = "123";
在上述代码中,如果打印s1的值结果不是“abc”而是“123”,也许有人就迷糊了,不是不能改变吗?其实,字符串对象并没有改变,只是s1这个变量指向了另一个对象。s1创建出来后指向了"abc"这一个字符串对象,但是s1="123"的意思是新建一个字符串对象"123",并且把该对象的引用赋给s1(也就是s1指向"123")。所以,并不是字符串对象改变了,内存中有了两个String类对象,“abc”这个对象还是存在的。

3、String类的两种创建方式的区别

<span style="font-size:14px;">String s1 = "abc";String s2 = new String("abc");</span>
<span style="font-size:14px;">System.out.println(s1==s2);System.out.println(s1.equals(s2));//<span style="font-size:14px;">String类复写了Object类中的equals方法,equals方法用于判断字符串的值是否相等。</span></span>
上述代码中s1和s2有什么区别呢?首先代码中的两个输出结果分别是false和true。s1和s2不相等,其实是s2 已经重新new了一个String对象,其实s1和s2的最大区别是s1在内存中有一个对象,而s2在内存中有两个对象。

二、String类的常用方法

1、字符串的获取

①、int length () //返回此字符串的长度这里需要注意,数组也有长度,但是数组的length是数组的一个属性。数组是不带括号“()”的。②、char charAt (int index) //返回制定索引处的字符③、int indexOf (int ch) //返回字符ch在字符串中第一次出现的位置,如果没找到返回-1。这里参数里的字符是int型,其实是字符的ASCII码值。④、int indexOf (int ch,int fromIndex) //返回从脚标为fromIndex处开始查找Ch第一次出现的位置,如果没找到返回-1。⑤、int indexOf (String str) //返回字符串“str” 第一出现的位置,如果没找到返回-1。⑥、int indexOf (String str,int fromIndex) //返回从脚标为fromIndex处开始查找字符串”str“第一次出现的位置,如果没找到返回-1。⑦、int lastIndexOf (int ch) //反向索引字符ch第一次出现的位置,如果没找到返回-1。

2、字符串的判断

①、boolean isEmpty () //判断字符串是否有内容。其实这个方法的原理就是判断字符串的长度length是否为0,为0则表示没有内容,返回false,不为零则有内容返回true。②、boolean startWhit (Stringprefix)//是否以前缀prefix开始。如果参数中传入的是空字符串或者是字符串本身,返回true。③、booleanendWith (String suffix) //是否以后缀suffix结束。④、booleancontains (CharSequences) //字符串是否包含子串s。CharSequence 是一个接口,String和StringBuilder都是它的实现类。我们初学者简单理解就好。这里要讲的是,contains方法可以用indexOf方法实现。indexOf(str),这里查找str第一次出现的位置,如果返回的不是-1,则表示字符串包含子串str。这里既可以判断又可以获取出现的位置。⑤、boolean equals (String str) //判断字符串内容是否相等,这里复写了Object类中的equals方法。⑥、boolean equalsIgnoreCase (Stringstr) //忽略大小写判断字符串是否相等。⑦、int lastIndexOf (int ch) //反向索引字符ch第一次出现的位置,如果没找到返回-1。

3、字符串的转换

①、字符数组转换成字符串构造函数实现:new String (char[])new String (char[],offset,count) //offset表示偏移量,即从第几个字符开始,count表示长度,即从开始数多少个字符转换成字符串。静态方法:static String copyValueOf (char[])static String copyValueOf (char[],offset,count)②、字符串转换成字符数组char [] toCharArray()③、字节数组转换成字符串new String (char[])new String (char[],offset,count)④、字符串转换成字节数组byte [] get Bytes();特殊之处:字符串和字节数组在转换时是可以指定编码表的。⑤、基本数据类型转换成字符串static String valueOf(int i) //这里的参数可以是double、long等数据类型其实String.valueOf(3)等价于 3+“”。而后者书写更加简便。

4、字符串的替换

①、String replace (char oldChar,char newChar )用newChar替换字符串中的oldChar,这里需要注意的是,替换成功后返回的是一个新的字符串,(相当于字符串中有两个字符串)。但是,当要替换的字符oldChar在字符串中不存在时,返回的还是原串,没有生成新的字符串。当然,这里也可以替换字符串的子串,用一个新的字符串替换字符串中的旧的字符串。②、String replaceAll (String regex,String replacement)使用给定的 子串replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

5、字符串的切割

String [] split (Sting regex) //根据给定正则表达式的匹配拆分此字符串。这里简单的话可以不传正则表达式,直接传入字符串,按字符串切割,切割后返回字符串数组。

6、截取字符串的一部分(子串)

String subString(int beginIndex) //从脚标beginIndex开始获取子串。String subString(int beginIndex , int endIndex) //获取从beginIndex到endIndex的子串,特别注意:①包头不包尾,即获取的子串中包含beginIndex处的字符,但是!不包含endIndex处的字符。② 在截取时要注意脚标是否存在,如果脚标不存在则会出现脚标越界异常。

7、大小写转换、去除空格、比较

①、字符串中的大小写转换String toUpperCase();//小写转换成大写Stirng toLowerCase();//大写转换成小写从这里就可以看出,前面的忽略大小写比较的方法equalsIgnoreCase的原理:先将字符串全转换成大写或小写后再用equals方法比较。②、去除字符串两端的所有空格String trim()这个方法的最明显的用途就是用户名和密码的验证上,由于用户的输入习惯或失误,在输入用户名或密码时可能会在头尾多输入空格,利用该方法就能有效的忽略用户的无心之过③、对两个字符串进行自然顺序比较int compare(String str)s1.compare(s2); s1>s2 返回一个大于0的整数,s1<s2 返回一个小于0的整数,两个字符串相等则返回0.

8、一个简单的练习

将一个字符串进行反转,将字符串指定部分进行反转。代码实现:
public class Test001 {public static void main(String[] args) {String origStr = "123456789";System.out.println(reverseStringAll(origStr));System.out.println(reverseStringPart(origStr,0,7));}//反转整个字符串其实可以调用反转部分的方法,反转从0到字符串长度,也就是反转整个字符串。public static  String  reverseStringAll(String str ){return reverseStringPart(str,0,str.length()-1);}//反转指定字符串public static String reverseStringPart(String str ,int beginIndex ,int endIndex){char[] chs = str.toCharArray();  //字符串转换成字符数组char[] newChs = reverse(chs,beginIndex,endIndex);  // 调用reverse方法进行字符数组的转换String newStr = new String(newChs);  //字符数组转换成字符串return newStr;}//数组的转换方法public static char[]  reverse(char[] chs,int start ,int end){for(int x = start,y = end;x<y-1;x++,y--){char temp = chs[x];chs[x] = chs[y];chs[y] = temp;}return chs;}}
程序执行结果:987654321876453219
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: