你的位置:首页 > Java教程

[Java教程]Java中的String类



/*
String类用于描述字符串事物的
那么它就提供了多个方法对字符串进行操作


方法都会用,字符串这块就结束了
常见的操作有哪些?
“abcd”
它应该具备什么功能,我们才能更好得操作它?
1.获取(必须要掌握)
   1.1 字符串中包含的字符数,也就是字符串的长度
   int length()  然而数组也有长度,数组调用的length没有括号,是属于属性,但是字符串是方法
   1.2 根据位置获取位置上的某个字符
   char charAt(int index)
   1.3 根据字符获取该字符在字符串中的位置
   int indexof(int ch)  返回字符ch在字符串中第一次出现的位置
   int indexpf(int ch,int fromIndex) 从fromIndex指定位置开始,获取ch在字符串中出现的位置
   
   int indexof(String str)      返回的是str在字符串中第一次出现的位置
   nt indexpf(String str,int fromIndex)   从fromIndex指定的位置开始,获取str在字符串中出现的位置
   
   反向索引----方法加多一个last就可以
   
2.判断
  2.1 字符串中是否包含某一个子串
  boolean contains(str);
          int indexof(int ch)  返回字符ch在字符串中第一次出现的位置     有异曲同工之妙
  2.2 字符串中是否有内容
  boolean isEmpty();      原理就是判断长度是否为0
  2.3 字符串是否是以指定内容开头
  boolean startWith(str)
  2.4 字符串是否是以指定内容结尾   判断开头,判断结尾是bool类型的
  boolean endWith(str)
  2.5 判断字符串的内容是否相同   复写了父类中的object方法
  boolean equals(str);
  2.6判断内容是否相同,并忽略大小写
  boolean equalsIgnoreCsae();
 
3.转换
  3.1 将字符数组转成字符串
  构造函数  String(chae[])
            String(char[],int count)  将字符数组的一部分转成字符串
 
  静态方法  static String copyValue(char[]);
            static String copyValue(char[],int count);
            static String valueof(char[]);
  3.2 将字符串转成字符数组
            char[] toCharArray();
  3.3 将字节数组转成字符串
            String(byte[])
            String(byte[],int count)
            
        反  byte[] getBytes();
  3.4 将字符串转成字节数组
  3.5 将基本数据类型转成字符串
       static String valueof(int);
       static String valueof(double);
 
  特殊:
      字符串和字节数组在转换的过程中,是可以指定编码表的
 


4.替换
   String replace(oldchar,newchar);            更换的可以是字符串

5.切割
   String[] split(regex);                  把该字符切割了,然后将每一部分组装成数组
   
6.子串,获取字符串中的一部分
  String substring(begin);             begin是数字  从指定位置到结尾  0  1  2        如果角标不存在,会发生角标越界异常
  String substring(begin,end);         包含头,不包含尾

7.转换 去除空格 比较
  7.1  将字符串转成大写或者小写            
       String toUppercase();         这也是为什么java能忽略大小写的原因
       String toLowercase();
  7.2 将字符串两端多余的空格去除
       String trim();
  7.3 对两个字符串进行自然顺序的比较
       int compareTo();                   开始比较,从0位置开始,以此比较,找到不同的,就相减,返回这一个值


*/
class StringMethodDemo
{
        public static void method_get()
        {
            String str="abcdefakbf";
            
            /*长度*/
            //System.out.println(str.length());     /*如果又有字符串呢?是不是要打印n多遍?怎么办?P1*/
            sop(str.length());
            
            /*根据索引获取字符*/
            sop(str.charAt(40));               /*当访问到字符串中不存在的角标时会发生字符串角标越界异常*/
            sop(str.charAt(4));  
            
            /*根据字符获取索引*/
            sop(str.indexof('a'));
            sop(str.indexof('a',3));
            sop(str.indexof('v',3));             /*如果没有找到,返回的值是-1,不会出现异常*/
            
            
            
            /*反向索引----方法*/
            sop(str.lastIndexof("a"));   /*输出的角标不会变,一直从左边开始*/
        }
        public static void sop(Object obj)    /*无论传什么值进来都能打印*/
        {
            System.out.println(obj);
        }
        
    public static void main(String args[])
    {                
        /*
        String s1="abc";
        String s2=new String("abc");
        String s3="abc";
        System.out.println(s1==s2);    false
        System.out.println(s1==s3);    true?为什么?常量池中abc以及存在,s3发现abc存在后,就不会再开辟内存空间了
        */
        
        /*P1*/
        method_get();

    }
}