String类详述

来源:互联网 发布:通话录音软件源 编辑:程序博客网 时间:2024/04/30 09:58

Java中的String类详述

        在Java基础的学习过程和日后的开发过程中,最最普遍的莫过String类型的变量用的再频繁了。String类是Java API提供给开发者使用的已经封装好的字符串对象的一个封装,叫字符串类。同时为开发者提供了丰富的方法和功能供开发者使用。今天,在这里一并将String类进行分解开来,详细讲述关于String类的那些事。

        String类型的变量是一个字符串对象,String对象一旦被创建,就不能被改变,也就是说字符串变量一旦在内存中初始化,就无法再进行改变,原因是String类在定义的时候,就已经定义成了final类型的,根据以前的知识可知道,由final修饰的变量不能进行修改,由final修饰的类不能存在子类。字符串一旦被初始化就不能修改是字符串对象最大 的特性。String类最大的特性:初始化后无法被修改。

      说完了String类最大的特性,就来说说如何创建一个String 类型的变量,以及有什么区别。

     第一、String s1 = "abc"; 定义了一个字符串变量s1,其内容是abc,在定义的同时进行了初始化。

     第二、String s2 = new String("abc");第二种方式也是定义个变量并进行初始化,但是,第二种方式执行后,内存中就有了两个对象,new代表着一个,'abc'代表着一个。

    特别说明:s1、s2都是一个类类型变量,所以s1是一个对象。同时,只要是双引号引起来的,也是一个对象。

   String类适用于描述字符串事物,Java语言的编写者们为开发者提供了众多的方法和功能,方便开发者们查阅和调用。现将常见的,常用的方法整理如下:

一、获取

   1.1字符串中的包含的字符数,也就是字符串的长度。 int length();

   1.2根据位置获取某个字符,char charAt(int index);

   1.3根据字符获取该字符在字符串中首次出现的位置。

        int indexOf(int ch, int formIndex)//从fromIndex的位置开始获取ch在字符串中第一次出现的位置。

二、判断

   2.1字符串中是否包含某一个子串。 boolean contains(string)

        区别之处:IndexOf(str);可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中。因此,可以用于对指定判断是否包含

                            indexOf(str)方法既可以判断,又可以判断其出现的位置。

   2.2字符串中是否有内容(字符串是否为空): boolean isEmpty();通过判断其长度是否为0进行判断。

   2.3字符串是否以指定内容开头:boolean startWith(str);

   2.4字符串是否以指定内容结尾:: boolean endsWith(str);

   2.5判断字符串的内容是否相同,复写了Object类中的equals方法,boolean equals(str);

   2.6判断内容是否相同,并忽略大小写。boolean equalsIngnoreCase();

三、转换

   3.1将字符数组转成字符串

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

       静态方法:

                       static String copyValueOf(char [] );

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

                       static String valueOf(char []);

   3.2将字符串转成字符数组

                   char [] toCharArray();

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

                   String(byte []); String(byte [], offset,count);

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

                   byte [] getBytes();

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

                   static String valueOf(int );

                   static String valueOf(double);

    ... ...

    例如: 3+"";就等同于String.valueOf(3);

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

四、替换

    String replace(char oldchar,char newchar);用新的字符来替换旧的字符。

    例如:

             String s= "hello Java";

            String s1 = s.replace('a','n');

            通过打印可以看出,s仍是hello java, s1是hello jnvn

           原因:字符串一旦被初始化,就无法被修改和改变。

五、切割

    String [] split(regex);对字符串按照regex进行切割,返回被切割后的字符串数组

六、子串:获取字符串的一部分

    String substring(begin);//获取从指定开始角标位置到字符串末尾的方法

    String substring(begin,end);//获取字符串的子串,包含头,不包含尾

七、转换、去除空格、比较

    7.1将字符串转成大写或者小写

          String toUpperCase();//转换成大写

          String toLowerCase();//转换成小写

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

         String trim();

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

        int compareTo(string);

        需要说明的是,在JDK1.5版本以后,出现了StringBuilder.

        对于StringBuffer和StringBuilder的区别,说明如下:StringBuffer是线程同步的;StringBuilder是线程不同步的。

同时注意,将StringBuilder的实例用于多个线程是不允许的,如果需要这样的同步,则建议使用StringBuffer.即多个线程用StringBuffer,单个线程用StringBuilder.开发过程是,推荐使用StringBuilder

       由于StringBuilder是从StringBuffer版本上产生来的。也就带来了版本升级的问题。对于Java API版本之间的升级来说,升级主要体现在三个原则上面:1、提高代码效率;2、简化书写;3、提高安全性。由StringBuffer到StringBuilder就是提高效率的体现。

0 0
原创粉丝点击