java-14-String类

来源:互联网 发布:js插件编写 编辑:程序博客网 时间:2024/06/05 02:37
  1. String类的特点:
    字符串常量池的特点
//字符串对象一旦被初始化就不会被改变。String  s = "abc";//此处的"abc"是一个字符串常量对象,它存放在字符串常量池中。String s2 = "abc";System.out.println(s==s1);/*这句代码的结果是true,为什么呢?是因为它们比较的是内容么?错它们还是比较的是地址,因为"abc"存在于常量池中,所以s2创建的时候就不用重新建立字符"abc"直接拿来用即可,所以s1和s2都指向了"abc"的地址空间,所以结果是true。*/  
String s = "abc";//创建一个字符串对象在常量池中。String s2 = new String("abc");//在堆里创建了两个对象,一个new的对象,一个是字符串对象。System.out.println(s == s2);/*这一句的执行结果是false,因为s指向的是常量池中的"abc"对象,而s2指向的是堆里的"abc"对象。它们两个的地址是不相同的,*/System.out.println(s.equals(s2));//词句的执行结果是true,因为在String类中复写了Object类中的equals方法,其实就是比较字符串的内容而不是对象的地址。

String 几个常用的构造函数

    String s1 = new String("Str");    /*初始化一个新创建的 String 对象,      使其表示一个与参数相同的字符序列;      换句话说,新创建的字符串是该参数字符串的副本。    */    String s2 = new String();//等效于String s2 = "";    byte[] arr = {97,98,99,100};    String s3 = new String(arr);    System.out.println("s3 = "+s3);    //这个构造函数可以把byte数组变为字符串。      char[] str = {'a','w','y','z','k'};      String s4 = new String(str,0,2);      System.out.println(s);//输出为aw

String类中常用的一些方法

1.获取功能;    1.1 获取字符串中字符的个数(长度)        int length();    1.2 根据位置获取字符。        char charAt(int index)    1.3 根据字符获取在字符串中第一个出现的位置。        从前往后索引        int indexOf(int ch);        int indextOf(int ch,int fromIndex);        //从指定位置进行字符ch的查找第一次出现的位置。        int indexOf(String str);        int indexOf(String str, int fromIndex);        //根据字符串str获取在字符串中第一次出现的位置。        从后往前索引        int lastIndexOf(int ch);        int lastIndexOf(int ch,int fromIndex);        int lastIndexOf(String str);        int lastIndexOf(String str, int fromIndex);    1.4 获取字符串中的一部分字符串,也叫子串。        String subString(int beginIndex, int endIndex);        //包含begin不包含end        String subString(int beginIndex);    2.转换;    2.1 将字符串变成字符串数组(字符串的切割)         String[] split(String regex);涉及到正则表达式    2.2 将字符串变成字符数组。         char[] toCharArray();    2.3 将字符串变成字节数组。byte[] getBytes();   2.4 将字符串中的字母转成大小写。       String toUpperCase();转大写       String toLowerCase();转小写   2.5 将字符串中的内容进行替换。       String replace(char oldChar, char newChar);       String replace(char s1, char s2);   2.6 将字符串两端的空格去除。       String trim();   2.7 将字符串进行连接。       String concat(String );3.判断   3.1 两个字符串内容是否相同;       boolean equals(Object obj);       boolean equalsIgnoreCase(String str);忽略大写,比较字符串内容。   3.2 字符串中是否包含指定字符串。       boolean contains(String str);   3.3 字符串是否以指定字符串开头,是否以指定字符串结尾。       boolean startsWith(String);       boolean endsWith(String);4.比较   compareTo(String str);

2 StringBuffer和StringBuilder的特点及常用方法。

2.1 StringBuffer和StringBuilder的特点。

1.它们都是字符串缓冲区,是用于存储数据的容器。2.长度是可变的。3.可以存储不同类型的数据。4.最终要转成字符串。5.可以对字符串进行修改。

2.2 StringBuffer和StringBuilder的区别。

    它们两个的功能是相同的,不同的是StringBuffer是支持同步的,适用于多线程;而StringBuilder是不支持同步的,适用于单线程。多线程StringBuffer 需要判断锁,降低了效率,提高了安全性。单线程StringBuilder 不用判断锁,提高了效率,降低了安全性。

2.3 常用方法

1.添加:     StringBuffer append(data);     StringBuffer insert(index,data);2.删除:     StringBuffer delete(start,end);包含头,不包含尾。     StringBuffer deleteCharAt(int index);删除指定位置的元素。3.查找:     char charAt(index);     int indexOf(String);     int lastIndexOf(String);4.修改:     StringBuffer replace(start,end,data);包含头不包含尾     void setChartAt(index,char); 其他 int setLength();     StringBuffer reverse();