String类
public final class String
概述:String 类代表字符串。所有字符串字面值(如 "abc" )都作为此类的对象。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以是
线程安全的。 String类中会重写equals方法(改为值相等)
线程安全:同步,只能一个人进行操作,效率低
线程不安全:异步,同时多个人操作,效率高
对于不可变的对象,它本身就是线程安全的,不需要同步机制去保证
底层使用字符数组实现的,一旦创建就不能更改
private final char value[];
构造方法:
public String() // String重写了toString方法
public String(byte[] bytes) // byte数组转化一个字符串
public String(byte[] bytes,int offset,int length) // offset偏移量
public String(char[] value) // 将一个字符数组转化为字符串
public String(char[] value,int offset,int count) // 带偏移量的转换
public String(String original)
String s = "abc"; // 通常用这种方法为字符串赋值
String s = “hello”; s += “world”;
字符串的拼接会创建一个新的对象,所以字符串的拼接不是一个效率很高的操作
面试题:
String s = new String(“hello”)和String s = “hello”;的区别?
new会创建两个对象,而后者只会在常量池创建一个对象
判断功能:
boolean equals(Object obj) // 判断两字符串是否相等
boolean equalsIgnoreCase(String str) // 判断两字符串是否相等(忽略大小写)
boolean contains(String str) // 判断大串中是否包含小串
boolean startsWith(String str) // 判断是否以某字符串开头
boolean endsWith(String str) // 判断是否以某字符串结尾
boolean isEmpty() // 判断是否是空串
获取功能:
int length() // 返回数组的长度
char charAt(int index) // 返回字符数组的索引
int indexOf(int ch) // 返回查找字符的索引
int indexOf(String str) // 返回查找字符串的索引
int indexOf(int ch,int fromIndex) // 从指定位置开始,返回查找字符的索引
int indexOf(String str,int fromIndex) // 从指定位置开始,返回查找字符串的索引
String substring(int start) // 从指定位置截取子串, 包含起始位置
String substring(int start,int end) // 从指定位置截取子串, 包左不包右
转换功能:
byte[] getBytes() // 将此字符串转换并存入byte数组
char[] toCharArray() // 将此字符串转换为一个新的字符数组
static String valueOf(char[] chs) // 返回 char数组 参数的字符串表示形式
static String valueOf(int i) // 返回 int 参数的字符串表示形式
String toLowerCase() // 将字符串转换为小写字母
String toUpperCase() // 将字符串转换为大写字母
String concat(String str) // concatenate拼接字符串
替换功能
String replace(char old,char new) // 将所有的old字符转化为new字符
String replace(String old,String new) // 将所有的old字符串转化为new字符串,不需要长度相等
String trim() // 去除字符串两侧空格
按字典顺序比较两个字符串
int compareTo(String str)
int compareToIgnoreCase(String str)
return len1 - len2(底层实现)
Comparable 接口:实现该接口的类具有比较功能
负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。
如果返回值时负整数, 说明该字符串小于str,返回值是0, 说明该字符串与str相等,大于0,说明该字符串大于str
StringBuffer、StringBulider类
StringBuffer:
线程安全的可变字符序列.
构造方法:
public StringBuffer()
public StringBuffer(int capacity)
public StringBuffer(String str)
length: 长度,实际值
capacity: 容量,理论值
添加功能
public StringBuffer append(String str) // 在末尾进行添加
public StringBuffer insert(int offset,String str) // 在偏移量的位置,进行插入,其他会挤向后面
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end) // 包左不包右
替换功能
public StringBuffer replace(int start,int end,String str) // 包左不包右
反转功能
public StringBuffer reverse()
截取功能
public String substring(int start)
public String substring(int start,int end)
注意事项:返回值是String类型, 本身没有改变, 不是在原对象上进行修改
返回值都是StringBuffer类,可以很好的进行链式编程
StringBuild:
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步.
该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
String,StringBuffer,StringBuilder的区别
String: 不可变的字符序列
StringBuffer: 可变的字符序列,线程安全,效率低
StringBuilder: 可变的字符序列,线程不安全,效率高
StringBuffer和数组的区别:
a. StringBuffer和数组都可以当做容器
b. StringBuffer可以存任意数据类型,但是都会把它们转换成字符序列,数组只能存同种数据类型;
c. StringBuffer可以自动扩容,数组的容量是固定的
String 和 StringBuffer互换:
String --> StringBuffer()
1. StringBuffer(String s) // 构造方法
2. new StringBuffer().append(s) // 新建一个对象并用append拼接
StringBuffer --> String
1. subString(0) // 调用截取方法
2. toString() // 调用toString方法
3. String(StringBuffer stb) // 构造方法
Date、DateFormat类
概述:
类Date表示特定的瞬间,精确到毫秒。
JDK1.1前它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串
构造方法:
Date(): 表示创建该对象的时刻
Date(long date):
以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT) 以来的指定毫秒数
成员方法
public long getTime() // 返回自"epoch"以来此 Date 对象表示的毫秒数。
public void setTime(long time)
long和Date的互换
long --> Date
new Date(long time)
new Date().setTime(long time)
Date --> long
date.getTime();
DateFormat:
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化
格式化: Date --> String
String format(Date date)
解析: String --> Date
Date parse(String source)
SimpleDateFormat:
构造方法:
SimpleDateFormat()
用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。