[疯狂Java]基础类库:String

来源:互联网 发布:coreldraw x5软件下载 编辑:程序博客网 时间:2024/05/20 17:59

1. Java字符串对象:

    1) Java提供了三种字符串类型:String、StringBuilder、StringBuffer;

    2) 其中String是不可变类型,即一旦初始化后其内容不可改变,后两种是可变类型,专门用来对字符串进行修改;

    3) 后两者的区别就是StringBuffer是线程安全的,而StringBuilder是线程不安全的(即只能用于单线程),两者的方法完全一样;


2. String的构造器:

    1) 无参构造器:String();  // 构造一个长度为0的字符串,一般用于特殊用途

    2) 利用二进制字节序列初始化:

         i. String(bytes[] bytes[, Charset charset | String charsetName]);

         ii. String(bytes[] bytes, int offset, int len[, Charset charset | String charsetName]);

!!由于字节序列转换成Java字符时有编码问题,因此需要指定编码集,但如果不指定编码集将使用Charset.defaultCharset(即OS默认编码集)进行解码;

    3) 利用字符数组初始化:

         i. String(char[] value);

         ii. String(char[] value, int offset, int count);

!!形式和byte序列相似,只不过无需解码了,因为char已经是Java中的字符了;

    4) 用另一个Java字符串初始化:String(String original | StringBuilder builder | StringBuffer buffer);


3. String的比较方法:

!!大小比较:

    1) int compareTo[IgnoreCase](String anotherString);  // 后者是无视大小写进行比较

    2) 返回第一个不相等的字符差,如果其中一个是另一个的前缀则返回两者长度差;

    3) 一般这个差值的大小对于程序来说没有什么太大的意义,一般只是根据差值是正是负还是0来判断两者的大小罢了;

!!相等比较:

    1) boolean equals[IngoreCase](Object anObject | String anotherString); 

!!前者覆盖于Object类但实现时用来比较字符串,因此就得当成boolean equals(String anotherString)来使用;

!!后者是忽略大小写的比较;

    2) 和StringBuffer内容比较:boolean contentEquals(StringBuffer buff);


4. String获取相应的字节序列和字符序列:

    1) 获取字节序列:byte[] getBytes([Charset charset | String CharsetName]);  // 这是编码过程,因此可能需要指定编码集

    2) 获取字符序列:char[] toCharArray();  // 不是getChars了,需要即

    3) 但是还有一个复制到字符序列的特殊方法:void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin);  // 将[srcBegin, srcEnd)之间的字符复制到dst的dstBegin的位置

!!Java库中所有的区间left - right都是左闭右开的!![left, right)!!


5. String的检索:

    1) 随机访问字符:char charAt(int index);  // 即数组的arr[index]访问,只不过String是面向对象的类

    2) 找出指定字符和指定子串的位置:

         i. 指定字符:int indexOf | lastIndexOf(int ch[, int fromIndex]);

         ii. 指定子串:int indexOf | lastIndexOf(String str[, int fromIndex]);

!!indexOf找的是第一个出现的,lastIndexOf找的是最后一个出现的,fromIndex是查找的起始位置


6. String检查前后缀:

    1) 前缀:boolean startsWith(String prefix[, int toffset]);  // 是否已prefix作为前缀,判断的起始可以用toffset指定

    2) 后缀:boolean endsWith(String suffix);  // 就只有这么一个版本,无需指定起始位置


7. 截取子串:String substring(int beginIndex[, int endIndex]);


8. 大小写转换:

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

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


9. 其它常用方法:

    1) 连接:String concat(String str); // 和+连接字符串的功能一样

    2) 返回长度:int length();  // String的都是方法,只有数字的才是length数据成员

    3) 替换单个字符:String replace(char oldChar, char newChar);  // 替换第一个字符


10. String提供的一些静态工具方法:

    1) 将其它类型转换成字符串对象:static String valueOf(type val);  // type包括所有的基本类型(boolean、int等)

!!更重要的是type也可以是Object类型的,如果是引用类型会自动调用其toString方法(用户自定义类型也可以,只不过需要先实现toString方法!!);

    2) 其余查看String的API手册即可;

0 0
原创粉丝点击