JAVA基础之集合(上)

来源:互联网 发布:c语言以空格分隔符 编辑:程序博客网 时间:2024/06/06 02:13


常用对象:StringStringBufferStringBuilder

String类的特点:字符串对象一旦被初始化就不会被改变;

1.字符串创建的时候,会先在常量池中搜索,如果有一样的,则指向已经存在的字符串对象,此时用"=="比较两个字符串的值返回的将会是true。(注意:new是在堆内存中创建的,不一样)

2.String类的构造函数:String(bytes[]bytes);

 例子1

 String s= new String();//等效于String s=" ";不等效于String s==null;

 byte[] arr={65,66,67,68};

 String s1=new String(arr);

System.out.println(s1);//输出的将是ABCD

例子2:

char[]arr={"w","a","e","c"};

String s=new String(arr);

System.out.println(s);//输出的将是waec

3.String类的部分方法

1)获取长度:intlength();

根据位置获取字符:charcharAt(int index);

根据字符获取字符在字符串中的位置:intindexOf(int ch);

从指定位置开始查找ch第一次出现的位置:

int indexOf(int ch;fromIndex);

int indexOf(String str);

int indexOf(String str,int fromIndex);

根据字符串获取字符串第一次出现的位置:

intlastIndexOf(int ch);

int lastIndexOf(int ch,int fromIndex);

可以利用-1来判断该元素是否存在。

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

Stringsubstring(int beginIndex,intendIndex);

String substring(int beginIndex);

2)转换

将字符串变成字符串数组(字符串的切割)

   String[]split(String regex);涉及到正则表达式。

将字符串变成字符数组

   char[]toCharArray();

将字符串变成字节数组

   char[]getBytes();

例子:      String s = "ab" ;

           byte [] bytes = s.getBytes(); 

            for (int i = 0; i < bytes.length; i++){

                System.out.println(bytes[i]);//输出的结果是9798-60-29

将字符串中的字母转成大小写

   String toUpperCase();大写

   StringtoLowerCase();小写

将字符串中的内容进行替换

   String replace(char oldCh,char newCh);

    String replace(String s1,String s2);

去除字符串两端空格

   String trim();

将字符串进行连接

   String concat(String str);

将数值转成字符串用valueOf;

String.value(4);

(3)判断

两个字符串内容是否相同呢?

   boolean equals(Object obj);

    boolean equalsIgnoreCase(String str);忽略大小写比较字符串内容

字符串中是否包含指定字符串

booleancontains(String str);

字符串是否以指定字符串开头,是否以指定字符串结尾

   boolean startsWith(String str);

    boolean endsWith(String str);

(4)比较,String自带比较功能,要与equals区分开;compareTo是比较大小,有三个返回情况,它一般用于自定义排序;equals是比较是否相等,返回true或false。

int compareTo(String str);   如果参数字符串等于此字符串,则返回值0;如果此字符串按字典顺序小于字符串参数,则返回一个小于0的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于0的值。

5)返回字符串对象的规范化表示形式

String intern();

当调用intern方法时,如果池已经包含一个等于此String对象的字符串(用equals(Object)方法确定),则返回池中的字符串。否则,将此String对象添加到池中,并返回此String对象的引用。



练习:

   1、给定一个字符串数组,按照字典顺序进行从小到大的排序。

   {"nba","abc","cba","zz","qq","haha"}

package Array;

public class StringTest {

      /**给定一个字符串数组,按照字典顺序进行从小到大的排序。

   {"nba","abc","cba","zz","qq","haha"}

       * @param args

       */

      publicstatic void main(String[] args) {

             //TODO Auto-generated method stub

              //思路:给定一个字符串,利用compareTo进行每个元素的比较,利用冒泡进行整体排序;

             //利用for循环

             String[]str={"nba","abc","cba","zz","qq","haha"};

//          printString(str);

             String[]arr=sortString(str);

             printString(arr);

      }

      publicstatic String[] sortString(String[] str)//对字符串数组进行排序

      {

             for(intx=str.length-1;x>0;x--)//采用冒泡的方式排序

             {

                   for(int y=0;y<x;y++)

                    {

                           if(str[y].compareTo(str[y+1])>0)//如果前一个大于后一个,调换位子

                           {

                                  Stringtemp=str[y];

                                  str[y]=str[y+1];

                                  str[y+1]=temp;

                           }

                    }

             }

             return str;

      }

      publicstatic void printString(String[] str)//打印字符数组

      {

             System.out.print("[");

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

             {

                    if(x!=str.length-1)

                     System.out.print(str[x]+" ");

                    else

                           System.out.print(str[x]+"]");

             }

      }

}

StringBuffer:字符串缓冲区,它的初始容量为16个字符,是一个容器对象;多用于将字符数组连接成字符串;

特点:1.长度是可变的。

   2.可以存储不同类型数据。

   3.最终要转成字符串进行使用。

功能:1.添加:StringBufferappend(data);

    StringBuffer insert(index,data);

2.删除:StringBuffer delete(int start,int end);包含头,不包含尾。

   StringBuffer deleteCharAt(int index):删除指定位置的元素

3.查找

   charcharAt(int index);

    intindexOf(String str);

    int lastIndexOf(String str);

4.修改

   StringBufferreplace(int start,int end,String str);

    void setCharAt(int index,char ch);

5.其他方法

void setLength(int newLength);设置字符序列的长度

   public StringBuffer reverse();将字符序列用其反转形式取代

StringBuilder:StringBuffer的功能一模一样,是jdk1.5之后出现的;

它们两者之间的区别是:

StringBuffer是线程同步的,通常用于多线程。

   StringBuilder是线程不同步的,通常用于单线程,它的出现能够提高程序效率。

  基本数据类型对象包装类:就是把基本数据类型包装成了对象;

   byte      Byte

   short     Short

   int      Integer

   long      Long

   float     Float

   double   Double

  char     Character

   boolean  Boolean

该包装对象主要用于基本类型和字符串之间的转换:

1   将基本类型转成字符串有以下两种方法:

a.基本类型数值+" ";

b.String类中的静态方法valueOf

2)将字符串转成基本类型

      a.int parseInt(String str);//易错点:这个方法是Integer的静态的方法,引用时应该是Integer.parseInt(str)

      b.long parseLong(String str);

      c.boolean parseBoolean(String str);

        只有Character没有parse方法。

注:如果字符串被Integer进行对象的封装,可使用另一个非静态的方法,intValue

       将一个Integer对象转成基本数据类型值,或者用Integer的静态方法valueOf(String s);

视频中的一个例子可以很好的这些方法的运用:

public class WrapperTest {
 
 /*对一个字符串中的数值进行从小到大的排序。
   "20 78 9 -7 88 36 29"
    思路:1.想将字符串变成字符串数组,用spilt;
     2.将字符串数组变成int类型数组,parseInt
     3.用系统自带功能进行排序,sort
     4.将排完序的数组重新变成字符串形式,用StringBuilder
  * */
 
 public static void main(String[] args)
 {
   String numStr = "20 79 9 -7 88 36 29";
   String Str=sortStringNumber(numStr);
   System.out.println(Str);
 }

 public static String sortStringNumber(String numStr) {
  // TODO Auto-generated method stub
  //1.现将字符串变成字符串数组
  String[] str=numStr.split(" ");
  //2.将字符串数组变成int数组
  int[] str2=toIntArray(str);
  //3.用自带的功能进行排序
  Mysort(str2);
  //4.将数组重新变成字符串形式
  String s=ArraytoString(str2);
  return s;
 }

 public static String ArraytoString(int[] str2) {
  // TODO Auto-generated method stub
  StringBuilder sb=new StringBuilder();
  for(int i=0;i<str2.length;i++)
  {
   sb.append(str2[i]).append(" ");
  }
  return sb.toString();
 }

 private static void Mysort(int[] str) {
  // TODO Auto-generated method stub
  Arrays.sort(str);
  
 }

 public static int[] toIntArray(String[] str) {
  // TODO Auto-generated method stub
  int[] arr=new int[str.length];
  for(int i=0;i<str.length;i++)
  {
   arr[i]=Integer.parseInt(str[i]);//parseInt是Integer的静态方法!!!
  }
  return arr;
 }

}



0 0
原创粉丝点击