String类的学习
1、String = “abc”
字符串缓存区 常量池
池中没有就建立,池中有不建立
2、使用new创建 String str = new String("abc")
堆当中创建,产生两个对象。
一个new一个字符串对象在堆内存中
字符串是否相同比较的是内容不是地址
二、String 的构造方法演示
1、new String() 与 “” 等效
2、将数组转换字符串:String(byte[] byte);
3、将字符串数组转换为字符串:String(char[] char);
4、将部分变为字符串 : String(char[] char,int start,int size);
三、String的方法
1、获取
1.1、 获取字符串的长度
int length();
1.2、根据位置获取字符
char charAt(int index);
1.3、根据字符获取位置,第一次出现的位置
int indexOf(int ch);
int indexOf(int ch,int fromIndex);从指定位置开始搜索
int indexOf(String str);
int indexOf(String str , int gromIndex);
int lastIndexOf(int ch);从后往前搜索
1.4、 获取字符串中的一部分字符串。也叫子串
String substring(int beginIndex,int endIndex);
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(String str1,String str2);
2.6、去掉字符串两端的空格
String trim();
2.7、将字符串进行连接
String concat(String str);
2.8、将基本数据类型变为字符串
String valueOf(boolean ba);
三、字符串比较
3.1、两个字符串两个字符串是否相同
boolean equals(Object obj);
boolean equalsIgnoreCase(String str);忽略大小写
3.2、字符串中是否包含目标字符串
boolean contains(String str);
3.3、字符串是否已指定字符串开头,是否已指定字符串结尾
boolean startsWith(String str);
boolean endsWith(String str);
四、比较字符串
int compareTo(String anotherString);
StringBuffer对象
特点:就是字符串缓冲区,用于存储数据的容器。
1、长度可变。
2、存不同类型的数据。
3、最终转成字符串进行使用
4、可以对字符串进行修改
既然是一个容器、应该具备什么功能呢?
1、添加
append(data);不能放short
insert(int addree,Object data);指定位置插入数据
2、删除
delete(int start,int end);不包含未
deleteCharAt(int index);删除指定位置的元素
3、查找
char charAt(index);
int indexOf(String);
int lastIndextOf(String);
4、修改
StringBuffer replace(int start,int end,String str)
void setCharAt(int index,char ch);//修改一个字符
5、设置长度
setLength();
6、反转
reverse();
7、指定初始容量
效率问题
StringBuilder对象
线程不执行同步
单线程使用速度快
多线程不安全
jdk 1.5以后出现的
与StringBuffer兼容
区别:StringBuffer保证线程同步 多线程