A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 创造命运 中级黑马   /  2013-9-4 10:04  /  1173 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、 String:  
  String s1 = "abc";
  s1是一个类类型变量,"abc"是一个对象,字符串一旦初始化就不可以改变
  s1此时指向"abc", 如果此时 s1 = "kk";则s1又指向"kk"
            
  String s2 = new String("abc");
  s1与s2的区别:  s1在内存中有一个对象
           s2在内存中有两个对象,new是一个,“abc”是一个
                     
  String s3 = "abc";
  则s1 = s3,因为s1与s3是指向同一个对象"abc";
String: String a = "abc";
String b = "abc";
会先到字符池里寻找指向“abc”的引用,此时a == b的结果是true
      
String a = new String("abc");
String b = new String("abc");
不会涉及到字符池,此时 a == b的结果是false
    String的常见的操作:
1、获取
     1.1 字符串中包含的字符数,即长度
  int length();
     1.2  根据指定位置获取指定位置上的字符
  char charAt(int index);
     1.3  根据字符获取该字符在字符串中的位置
  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);.............
2、判断
     2.1  字符串中是否包含一个子串
  boolean contains(str);
  特殊之处:indexOf(str):可以索引str在字符串中第一次出现的位置,如果返回-1,表示该str不在字符串中
     2.2  字符串中是否有内容:
  boolean isEmpty();   原理就是判断长度是否为0
     2.3  字符串是否以指定内容开头
  boolean startsWith(str);
     2.4  字符串是否以指定内容结尾
  boolean endsWith(str);
     2.5  判断字符串内容是否相同:  复写了Object类中的equals方法
  boolean equals(str);
     2.6  判断内容是否相同,并忽略大小写
    boolean equalsIgnoreCase();
3、转换:
     3.1  将字符数组转换成字符串
  构造函数:  String(char[]);
       String(char[], offset, count);将字符数组中的一部分转换成字符串
  静态方法:  static String copyValueOf(char[] data);
   static String copyValueOf(char[] data, int offset, int count);
         
   static String valueOf(char[]);
   如果参数为 true,则返回一个等于 "true" 的字符串;否则,返回一个等于 "false" 的字符串。
     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);
  特殊;字符串和字节数组在转换过程中,是可以指定编码表的
4、替换
  String replace(oldchar, newchar);如果要替换的字符不存在,返回的还是原串
  public String replace(CharSequence target,CharSequence replacement)使用指定的字面值替换序列替换此
  字符串所有匹配字面值目标序列的子字符串。该替换从字符串的开头朝末尾执行,例如,用 "b" 替换字符串
  "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。
5、切割
  String[] split(regex);
  将原字符串以regex为标识,切割为几部分,放在String数组里,如"tangjian,tanghui,lijing",如果
  regex = ',';那么结果就是{"tangjian","tanghui","lijing"}
6、子串,获取字符串中的一部分
  String substring(begin);  从begin开始后面的,,,如果角标不存在,会出现字符串角标越界异常
  String substring(begin, end);中间的部分,但不包括下标为end的字符
  s.substring(0, s.length());可以获得整个字符串s
7、转换,去除空格,比较
     7.1  将字符串转成大写或小写
  String toUpperCase();
  String toLowerCase();
     7.2  将字符串两端的空格去除
  String trim();
     7.3  对两个字符串进行自然顺序的比较
  int compareTo(string);
  如果s = "abc", s1 = "aec";则  s.compareTo(s1) = -3;
               
二、StringBuffer
是一个容器:特点:1、长度是可变化的
     2、可以直接操作多个数据类型
     3、最终会通过toString方法变成字符串
CURD:
  C   create
  U   update
  R   read
  D   delete
1、存储:StringBuffer append();将指定数据作为参数添加到已有数据结尾处
  StringBuffer insert(index, 数据); 可以将数据插入到指定index位置
2、删除:StringBuffer delete(start, end);删除数据,包含Start,不包含end
  StringBuffer deleteCharAt(int index);删除指定位置的 字符
  sb.delete(0, sb.length());   清空缓冲区
3、获取:char charAt(int index);
  int indexOf(String str);
  int lastIndexOf(String str);
  int length();
  String substring(int start, int end);
4、修改:StringBuffer replace(int start, int end, String str);
  void setCharAt(int index, char ch);将给定索引处的字符设置为 ch。
5、反转:StringBuffer reverse();    如abcdefg反转成gfedcba
6、将缓冲区中指定的数据存储到指定的字符数组中
  void getChars(int srcBegin, int srcEnd, char[] dst, intdstBegin);
  将字符从此序列复制到目标字符数组 dst。  如果s1 = "abcdefgh",getChars(1, 4, ch, 1);
  则ch[6] = {'0','b','c','d','0','0'}
         
三、StringBuilder 与 StingBuffer
方法不变,功能一样,区别就是是否同步,有没有锁的问题。
StringBuffer是线程同步的
StringBuilder是线程不同步的,单线程是可以选择用StringBuilder。
Java升级:1,提高效率   2、简化书写   3、提高安全性

四、String 与 StringBuffer
String:
是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承.
StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
note:不能通过付值符号对他进行付值.
sb = "welcome to here!";//error
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer中付值的时候可以通过它的append方法.
sb.append("hello");

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马