[疯狂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手册即可;
- [疯狂Java]基础类库:String
- [疯狂Java]基础类库:StringBuilder/StringBuffer
- 《Java疯狂讲义-Chap7Java基础类库》
- [疯狂Java]基础类库:命令行参数、Scanner
- [疯狂Java]基础类库:Runtime(运行时信息)
- [疯狂Java]基础类库:BigDecimal(精确实数)
- 【疯狂Java】Java基础1
- 【疯狂Java】Java基础2
- java基础---->String类
- Java基础:String类
- Java基础String类
- Java基础:String类
- 【Java基础】String 类
- Java基础 String类
- [疯狂Java]基础类库:Object、深拷贝、Objects工具类
- [疯狂Java]基础类库:System(环境变量、系统属性、系统时间、内存地址、垃圾回收)
- [疯狂Java]基础类库:Random(随机数生成)、ThreadLocalRandom(线程安全随机数生成)
- Java基础类---String类
- c++第五次作业
- 抢小米手机的分享
- SmartGWT中文显示乱码的解决办法
- springMVC4.0返回json数据的问题
- JAVA集合类概述
- [疯狂Java]基础类库:String
- JAVA基础部分(三)
- ROI区域图像操作
- Swift-继承
- interpolator
- 个人学习-java-枚举
- okhttp的使用
- MYSQL中group_concat有长度限制!默认1024
- Java:单例模式的七种写法