String类
String类存在java.lang包中,专门存储字符串。是引用数据类型。
String类的两种实例化方法
1.直接赋值
String str1= "hello";
2.传统赋值
String str1 = new String("hello");
JVM底层会自定维护一个字符串的对象池(对象数组),如果现在采用直接赋值的形式进行String的对象实例化,该对象会自动保存在这个对象池中。如果下次继续使用直接赋值的模式声明String对象,此时对象池中如果有指定的内容,则直接使用,如果没有,则开辟新的堆空间后将其自动保存在对象池中供下次使用。
传统写法手工入池
注意
String中存储的字符串都是常量,字符串常量是不可以更改的,我们实现的+=操作并不是直接修改了原先字符串的值而是创建了新的字符串修改类栈内存中引用的指向。
String类中的一些便捷方法
**字符与字符串的相互转换 **
//char[]->String 构造方法
public String(char[ ] value);
public String(char[ ] value,int offset,int count);
//String ->char
pubic char charAt(int index);
//String ->char[]
public char[] toCharArray();
字节与字符串将字节数组转为字符串
//byte[]->String 构造方法
public String(byte[ ] value);
public String(byte[ ] value,int offset,int count);
//String ->byte[]
public byte[ ] getBytes( );
//String->指定编码的byte[],比如:getByte(ISO-8859-1)
public byte[ ] getByte(String charsetName);
字符串长度
public int length();
字符串比较
//值相等 对象.调用,要求对象!=null,一般使用 " 常量. " 操作
public boolean equals(String anotherString);
//不区分大小写相等
public boolean equalsIgnore(String anotherString);
//比较大小 >(大于对象) <(小于对象)=(等于对象)
public int conpareTo(String anotherString);
字符串查找
//判断str在本字符串中是否存在
public boolean contains(String str);
//判断是否以指定字符串开头
public boolean startsWith(String str);
//从指定位置开始判断是否以指定字符串开头
public boolean startsWith(String str,int index);
//判断是否以指定的字符串结尾
public boolean endsWith(String str,int index);
字符串替换
//字符串替换替换所有指定内容
public String replaceAll(String regex,String replacement);
//替换首个内容
public String relaceFirst(String regex,String replacement);
字符串拆分
//将字符串以指定的格式全部拆分
public String[ ] split(String regex);
//将字符串部分拆分,数组长度为limit
public String[ ] split(String regex,int limit);
//拆分ip如果差出来的字符和你相的不一样。这个字符肯定有特殊含义,要使用“\\”转义字符
字符串截取
//从指定位置街区到字符串结尾
public String substring(int beginIndex);
//截取部分内容(是" [ ) " 左闭右开)
public String substring(int beginIndex,int endIndex);
去掉左右的空格中间的空格保留方法
public String trim();
转大小写
public String toUpperCase();
public String toLowerCase();
字符串是否为空
public boolean isEmpty();
//空表示“”,并不是null
为了方便字符串修改引入StringBuffer,StringBuilder类
String的内容不方便修改,而StringBuffer和StringBuilder转为修改而生,
StringBuffer采用同步处理,线程安全,效率低
StringBulider采用异步处理,线程不安全,效率高。
在底层String会转为StringBulider
public StringBuffer append(Object object);
//字符串添加
String和StringBuffer之间的转换
//StringBuffer ->String
StringBuffer.toString();
//String->StringBuffer StringBuffer的构造方法或者append方法
StringBuffer(String string);
字符串反转
public StringBuffer reverse();
删除指定范围的数据( [ ))
public StringBuffer delete(int start,int end);
插入数据
public StringBuffer insert(int offset,各种数据类型);