String 本质就是字符数组
特点;
1,String是一个final修饰的类,不能够被继承
2,类似"abd"这样的字符串字面值常量也是String类的对象,既然是对象,就可访String的成员
3,他们的值在创建后不能被更改,但是可以被共享
4,字符串缓冲区支持可变字符串【StringBuffer、StringBuilder】
5,如果字符串的拼接操作非常频繁,那么String的效率不高,会在常量池创建大量的字符串,所以建议使用字符串缓冲区
构造方法
//public String (char [] value)将字符数组转换成字符串
char[ ] value = {'a' , 'b' , 'c' };
String s3 = new String (value);
public String (byte[ ] bytes) 将字节数组转换成字符串
String s5 = new String(new byte [ ] {97,98,99,100});
public String(byte [ ] bytes, int offset , int lenght)将字节数组的一部分转换成字符串
String s6 = new String(new byte [ ] {97 ,98,99,100},1,2 )
String(byte[ ] bytes,String charsetName)使用编码处理字符串 后面讲解IO流的时候讲解
String s7 = new String("张三".getBytes(),"gbk");
字符串的常用方法
char charAt (int index) 从左往右找index索引
int indexOf (int ch ) 从左往右找第一个出现字符ch所对应的索引
int indexOf (String str) 从左往右找第一个出现字符串str所对应的索引
int indexOf (int ch ,int fromIndex)
int indexOf (String str,int fromIndex)
从fromlndex索引开始从左往右找第一次出现ch,str的字符,或者字符串的索引
int lastIndexOf (int ch) 从右往左找第一个出现字符ch所对应的索引
int lastIndexOf (int ch,int fromIndex)
int lastIndexOf (String str,int fromIndex)
从fromlndex索引开始从右往左找第一次出现ch,str的字符,或者字符串的索引
String substring (int start) 从start开始截取到末尾
String substring (int start,int end) 左闭右开原则
int length()
注意 lenght,length(),size()的区别
字符串常用方法
boolean isEmpty();判断字符是否为空
boolean equals(object obj);讲此字符串的内容与指定的对象比较,区分大小写
boolean equalsInoreCase(String str);讲此String与另一个String比较,忽略大小写
boolean contains(String str);判断字符串中是否包含方法传入的字符串
boolean startsWith(String str);判断字符串是否以某个指定的字符串开头
boolean endsWith(String str);判断字符串是否已某个指定的字符串结尾
字符要变成字符串怎么做
char ch = 'a';
String s2 = ch + "";
System.out.println(s2);
byte[ ] getBytes( ) ; 将字符串转化为字节数组,此方法也是编码的过程
char[ ] toCharArray( );将字符串转换为字符数组
static String valueof(char[ ]chs);返回char 数组参数的字符串表示形式
(任何参数类型都能转换成字符串)
String toLowerCase();将此String中的所有字符都转换为小写
String toUpperCase();将此String中的所欲字符偶转换为大写
String concat(String str);将指定字符串连接到此字符串的结尾
join 结合
String replace(char old,char new) :替换功能。
String replace(String old,String new) :替换功能。
String trim():去除字符串两空格。
int compareTo(String str) :按字典顺序比较两个字符串。
int compareToIgnoreCase(String str):按字典顺序比较两个字符串,忽略大小写。
public String[] split(String regex):分隔字符串成字符数组。
StringBuffe,StringBuffder
String 每拼接一个字 符串,系统都会开辟一个新的内存空间,这样耗时又占用了大量空间
StringBuffer就可以处理这个问题,他是一个字符串缓冲区
StringBuffer类概述
线程安全的可变字符串序列,一个类似于String的字符串缓冲区,但不能修改。虽然在任意时间上他都包含某种特点的字符序列,但通过某些方法调用可以改变该序列的长度和内容
特点;
1,可变长的字符序列
2,线程安全,效率低
线程(工作线程)
安全性
效率
二者只能取其中之一
增删查改
增;
StringBuffer append(String str)
StringBuffer insert(int offset,String str)
删;
StringBuffer deleteCharAt(int index)
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)
StringBuffder
一个可变的字符序列。此类提供一个StringBuffer 兼容APi,但不保证同步。线程不安全,效率高
用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)
建议优先采用该类,因为大多数他比StringBuffer要快,用法和StringBuffer一样
String,StringBuffer,StringBuilder 三者的区别
三者都是字符数列,
StringBuffer 安全但是效率低
StringBuilder 不安全但是效率高