黑马程序员 String类

来源:互联网 发布:数据可视化之美 pdf 编辑:程序博客网 时间:2024/05/17 22:39

——- android培训、java培训、期待与您交流! ———-

1,简单概述:

String类是对字符串事物的描述,该类定义了专门用于操作字符串的方法,字符串是一个特殊的对象,字符串一旦初始化就不可以被改变。

2,创建String类对象方式:

(1)String s=new String(); 少用

(2)String s1=“”; 字符串是特殊的对象,一旦被初始化就不可以被改变

(3)String s2=new String(“abc”); String s1=“abc”;

区别:s1在内存中有一个对象;s2在内存中有两个对象。s1.equals(s2)是true。因为String类的equals方法复写了Object类中的equals方法,该方法用于判断字符串是否相同。

3,String类提供了多个方法对字符串进行操作,那么常见的方法有 :

(1)获取

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

int length();获取长度。

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

char charAt(int index);

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

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

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

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

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

int lastIndexOf(int ch):反向索引

//String类中常见的获取方法  class StringGetDemo   {      public static void method_get()      {          String str="abcdabefg";          sop(str.length());    //获取字符串的长度          sop(str.charAt(1));   //获取1位置上某个字符          sop(str.indexOf('a'));//获取'a'字符在字符串中位置          sop(str.indexOf('a',2));//从指定2位置开始,获取'a'在字符串中出现的位置      }      public static void sop(Object obj)      {          System.out.println(obj);      }      public static void main(String[] args)       {          method_get();      }  }  

(2)判断

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

boolean contains(str) //只进行判断

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

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

b,字符串中是否有内容。

boolean isEmpty():原理就是判断长度是否为0。

c,字符串是否是以指定的内容开头。

boolean startsWith(str);

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

boolean endsWith(str);

e,判断字符串内容是否相同,复写了object类中的equale方法。

Boolean equals(str);

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

Boolean equalsIgnoreCase();

//String类中的常见方法—判断  class StringIfDemo   {      public static void method_get()      {          String str="Demo.java";//创建字符串对象          sop(str.isEmpty());    //字符串中是否有内容          sop(str.startsWith("D"));   //字符串是否是以指定的内容开头          sop(str.endsWith(".java"));//字符串是否是以指定内容结尾          sop(str.equals("Demo"));//判断字符串内容是否相同          sop(str.equalsIgnoreCase("demo.java"));//判断内容是否相同,忽略大小写      }      public static void sop(Object obj)      {          System.out.println(obj);      }      public static void main(String[] args)       {           method_get();      }  }

(3)转换

a,将字符数组转成字符串。

构造函数:

String(char[]);

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

静态方法:static String copyValueOf(char[]);

static String copyValueOf(char[] data,int offset,int count);

static String valueOf(char[]);

b,将字符串转成字符数组。

char[] toCharArray();

c,将字节数组转成字符串。

String(byte[]);

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

d,将字符串转成字节数组。

byte[] getBytes();

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

static String valueOf(int);

static String valueOf(double)

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

//String类中的常见方法—转换  class StringTransDemo   {         public static void method_trans()      {          char[] arr={'a','b','c','d','e','f'};//创建字符数组          String s=new String(arr);  //将字符数组转成字符串          String s1=new String(arr,1,3);//将字符数组中的一部分转成字符串          sop("s="+s);          sop("s1="+s1);          String str="hello_wold";//创建字符串对象          char[] ch=str.toCharArray();//将字符串转成字符数组          for(int x=0;x<ch.length;x++)          {              sop("ch"+x+"="+ch[x]);          }      }      public static void sop(Object obj)      {          System.out.println(obj);      }      public static void main(String[] args)       {          method_trans();      }  }  

(4)替换

String replace(oldchar,newchar);

(5)切割

String[] split(regex)

(6)获取字符串中的一部分

String substring(begin);

String substring(begin,end);//包头不包尾

//String类中常见方法—替换和切割  class StringMethodDemo   {   public static void method_sub()      {          String s1="Hello java";          sop(s1);          sop(s1.replace("a","n"));//替换字符          sop(s1.substring(1));//获取从脚标为1的到最后一位的字符串          sop(s1.substring(1,4));//获取从1脚标到脚标为3的字符串,          String s2="zhangsan,lisi,wangwu";          String[] arr=s2.split(",");//以“,”为切割标志对字符串进行切割          for(int x=0;x<arr.length;x++)          {              sop(arr[x]);          }      }      public static void sop(Object obj)      {          System.out.println(obj);      }      public static void main(String[] args)       {          method_sub();      }  }  

(7)转换,去除空格,比较

(a)将字符串转成大写或者小写

String toUpperCase();

String toLowerCase();

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

String trim();

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

int compareTo(string);

//练习:将字符串反转  class StringReverseDemo   {   public static String reverseString(String s)      {          char[] chs=s.toCharArray();//将字符串转成数组          reverse(chs);//反转数组          return new String(chs);//将数组转成字符串      }      public static void reverse(char[] arr)      {          for(int start=0,end=arr.length-1;start<end;start++,end--)              swap(arr,start,end);      }      public static void swap(char[] arr,int x,int y)      {          char temp=arr[x];          arr[x]=arr[y];          arr[y]=temp;      }      public static void sop(String str)      {          System.out.println(str);      }      public static void main(String[] args)       {          String s="    ab cd    ";          sop('('+s+')');          sop('('+reverseString(s)+')');      }  }  

StringBuffer

1,StringBuffer是字符串缓冲区,是一个容器:它的长度是可变化的;可以字节操作多个数据类型。

数组也是一个容器,但它的长度不可以改变。

2,功能

(a)存储

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

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

(b)删除

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

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

(c)获取

char charAt(int index)

int indexOf(String str)

int lastIndexOf(String str)

int length()

String substring(int start,int end)

(d)修改

StringBuffer replace(start,end,string)

void setCharAt(int index,char ch)

(e)反转

StringBuffer reverse()

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

StringBuilder是线程不同步的,提高效率。(建议使用)

StringBuffer是线程同步的,提高安全性。

——- android培训、java培训、期待与您交流! ———-

0 0
原创粉丝点击