您的位置:首页 > 产品设计 > UI/UE

java基础第13天(字符串的操作,StringBuffer与StringBuilder)

2015-11-09 20:55 399 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

10.1 字符串处理操作

/*

String类适用于描述字符串事物。

那么它就提供了多个方法对字符串进行操作。

 

常见的操作有哪些?

"abcd"

 

1,获取。

         1.1字符串中的包含的字符数,也就是字符串的长度。

                   intlength():获取长度。

         1.2根据位置获取位置上某个字符。

                   charcharAt(int index):

         1.3根据字符获取该字符在字符串中位置。

                   intindexOf(int ch):返回的是ch在字符串中第一次出现的位置。

                   intindexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。

 

                   intindexOf(String str):返回的是str在字符串中第一次出现的位置。

                   intindexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。

 

                   intlastIndexOf(int ch) ://如果没有找到,返回-1.

 

                  

2,判断。

         2.1字符串中是否包含某一个子串。

                   booleancontains(str):

                   特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。

                                     所以,也可以用于对指定判断是否包含。

                                     if(str.indexOf("aa")!=-1)

 

                                     而且该方法即可以判断,有可以获取出现的位置。

 

         2.2字符中是否有内容。

                   booleanisEmpty(): 原理就是判断长度是否为0.

         2.3字符串是否是以指定内容开头。

                   booleanstartsWith(str);

         2.4字符串是否是以指定内容结尾。

                   booleanendsWith(str);

         2.5判断字符串内容是否相同。复写了Object类中的equals方法。

                   booleanequals(str);

         2.6判断内容是否相同,并忽略大小写。

                   booleanequalsIgnoreCase();

        

3,转换。

         3.1将字符数组转成字符串。

                   构造函数:String(char[])

                                       String(char[],offset,count):将字符数组中的一部分转成字符串。

 

                   静态方法:

                                     staticString copyValueOf(char[]);

                                     staticString copyValueOf(char[] data, int offset, int count)

 

                                     staticString valueOf(char[]):

 

                  

         3.2将字符串转成字符数组。**

                   char[]toCharArray():

 

         3.3将字节数组转成字符串。

                            String(byte[])

                            String(byte[],offset,count):将字节数组中的一部分转成字符串。

 

         3.4将字符串转成字节数组。

                            byte[]  getBytes():

         3.5将基本数据类型转成字符串。

                   staticString valueOf(int)

                   staticString valueOf(double)

 

                   //3+"";//String.valueOf(3);

 

                   特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

 

4,替换

         Stringreplace(oldchar,newchar);  //如果要替换的字符不存在,返回的还是原串。

         Stringreplace(charSequence , charSequence);

5,切割

         String[]split(regex);

 

6,子串。获取字符串中的一部分。

         Stringsubstring(begin);  //从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。

         Stringsubstring(begin,end);  //包含头,不包含尾。

 

7,转换,去除空格,比较。

         7.1将字符串转成大写或则小写。

                    String toUpperCase();

                    String toLowerCase();

 

         7.2将字符串两端的多个空格去除。

                   Stringtrim();

 

         7.3对两个字符串进行自然顺序的比较。

                   intcompareTo(string);

 

*/

 

10.2字符串练习

/*

1,模拟一个trim方法,去除字符串两端的空格。

         思路:

         1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。

                   结尾处判断空格也是如此。

         2,当开始和结尾都判断到不是空格时,就是要获取的字符串。

 

 

 

2,将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg

         思路:

         1,曾经学习过对数组的元素进行反转。

         2,将字符串变成数组,对数组反转。

         3,将反转后的数组变成字符串。

         4,只要将或反转的部分的开始和结束位置作为参数传递即可。

 

*/

 

/*

3,获取一个字符串在另一个字符串中出现的次数。

         "abkkcdkkefkkskk"

 

 

         思路:

         1,定义个计数器。

         2,获取kk第一次出现的位置。

         3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。

                   每获取一次就计数一次。

         4,当获取不到时,计数完成。

*/

 

/*

4,获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。

         "abcwerthelloyuiodef"

         "cvhellobnm"

         思路:

                   1,将短的那个子串按照长度递减的方式获取到。

                   2,将每获取到的子串去长串中判断是否包含,

                            如果包含,已经找到!。

*/

 

10.3 stringBuffer 和stringBuilder

/*

StringBuffer是字符串缓冲区。

 

是一个容器。

特点:

1,长度是可变化的。

2,可以字节操作多个数据类型。

3,最终会通过toString方法变成字符串。

 

 

 

C create U update R read D delete

 

1,存储。

         StringBufferappend():将指定数据作为参数添加到已有数据结尾处。

         StringBufferinsert(index,数据):可以将数据插入到指定index位置。

 

 

2,删除。

         StringBufferdelete(start,end):删除缓冲区中的数据,包含start,不包含end。

         StringBufferdeleteCharAt(index):删除指定位置的字符。

        

3,获取。

         charcharAt(int index)

         intindexOf(String str)

         intlastIndexOf(String str)

         intlength()

         Stringsubstring(int start, int end)

 

4,修改。

         StringBufferreplace(start,end,string);

         voidsetCharAt(int index, char ch) ;

 

 

5,反转。

         StringBufferreverse();
b943

 

6,

         将缓冲区中指定数据存储到指定字符数组中。

         voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

 

        

JDK1.5 版本之后出现了StringBuilder.

 

StringBuffer是线程同步。

StringBuilder是线程不同步。

 

以后开发,建议使用StringBuilder

 

升级三个因素:

1,提高效率。

2,简化书写。

3,提高安全性。

 

*/

10.4 基本数据类型包装类与字符串之间的转换

/*

基本数据类型对象包装类。

 

byte Byte

short         short

int              Integer

long Long

boolean Boolean

float Float

double      Double

char Character

 

 

 

基本数据类型对象包装类的最常见作用,

就是用于基本数据类型和字符串类型之间做转换

 

基本数据类型转成字符串。

 

         基本数据类型+""

 

         基本数据类型.toString(基本数据类型值);

 

         如:Integer.toString(34);//将34整数变成"34";

 

 

字符串转成基本数据类型。

 

         xxxa = Xxx.parseXxx(String);

 

         inta = Integer.parseInt("123");

 

         doubleb = Double.parseDouble("12.23");

 

         booleanb = Boolean.parseBoolean("true");

 

         Integeri = new Integer("123");

 

         intnum = i.intValue();

 

        

 

 

十进制转成其他进制。

         toBinaryString();

         toHexString();

         toOctalString();

 

 

其他进制转成十进制。

         parseInt(string,radix);

 

 

*/

class IntegerDemo

{

         publicstatic void sop(String str)

         {

                   System.out.println(str);

         }

        

         publicstatic void main(String[] args)

         {

                   //整数类型的最大值。

                   //sop("intmax :"+Integer.MAX_VALUE);

 

//               将一个字符串转成整数。

 

                   intnum = Integer.parseInt("123");//必须传入数字格式的字符串。

                   //longx = Long.parseLong("123");

 

//               sop("num="+(num+4));

 

//               sop(Integer.toBinaryString(-6));

//               sop(Integer.toHexString(60));

 

                   intx = Integer.parseInt("3c",16);

 

                   sop("x="+x);

 

 

         }

}

 

小知识点:

public static void main(String[] args)

         {

                  

//               Integerx = new Integer(4);

 

                   Integerx = 4;//自动装箱。//new Integer(4)

 

                   x= x/* x.intValue() */ + 2;//x+2:x 进行自动拆箱。变成成了int类型。和2进行加法运算。

                                               //再将和进行装箱赋给x。

 

                   Integerm = 128;

                   Integern = 128;

 

                   sop("m==n:"+(m==n));

 

                   Integera = 127;

                   Integerb = 127;

 

                   sop("a==b:"+(a==b));//结果为true。因为a和b指向了同一个Integer对象。

                                                        //因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间。

         }

 练习:

/*

"12 0 99 -7 30 4 100 13"

要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。

 

"-7 0 4 12 13 30 99 100"

 

思路:

1,将字符串切割。变成字符串数组。

2,将字符串数组转成int数组。

3,int数组排序。

4,将int数组变成字符串。

 

*/

import java.util.*;

class Test2

{

         public static void main(String[] args)

         {

                   Stringstr = "12 0 99 -7 30 4 100 13";

                   str= numberStringSort(str);

 

                   System.out.println(str);

         }

         /**

        

         */

         public static String numberStringSort(String str)

         {

                   String[]arr = splitString(str);

                   int[]nums = toIntArray(arr);

                   Arrays.sort(nums);

                   returnintArraytoString(nums);

         }

         /*

        

         */

         private static String[] splitString(String str)

         {

                   returnstr.split(" ");

         }

 

         privatestatic int[] toIntArray(String[] arr)

         {

                   int[]nums = new int[arr.length];

 

                   for(intx=0; x<arr.length; x++)

                   {

                            nums[x]= Integer.parseInt(arr[x]);

                   }

                   returnnums;

         }

 

         private static String intArraytoString(int[] arr)

         {

                   StringBuildersb = new StringBuilder();

 

                   for(intx=0; x<arr.length; x++)

                   {

                            if(x!=arr.length-1)

                                     sb.append(arr[x]+"");

                            else

                                     sb.append(arr[x]);

                   }

                   returnsb.toString();

         }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息