String
1. 构造方法
* 字符串创建的常见的方法(4种构造方法,一种直接赋值)。
*
* 常见的构造方法:
*public String():空构造
*public String(String original):根据指定的字符串内容创建对象。
*public String(char[] array):参数是一个字符数组,根据字符数组内容来创建一个字符串。
*public String(char[] array, int offset, int count):根据字符数组的一部分内容来创建字符串。
* 参数offset代表一个数组当中的起始索引,从0开始。
* 参数count代表取用多少个字符。
注意:
字符串对象在内存中一旦被创建,那么内容不可以被改变。
字符串的内容不会发生改变,如果你觉得好像是变了,那一定是创建了新的字符串。
2。关于字符串池
* 关于字符串池:
* 1.字符串池是位于堆内存当中的一小块儿空间,用来保存若干个字符串的地址值。
* 2.字符串池当中绝对不会出现重复的字符串对于的地址,保证字符串不重复。
*(创建字符串常量时,首先检查字符串常量池是否存在该字符串,存在该字符串,返回引用实例,不存在,实例化该字符串并放入池中。)
* 3.凡是直接双引号的字符串默认都在池中,而new出来的字符串默认不在池中。
*
* 关于==
* 对于基本类型来说,==是进行数据内容的相同比较,对于引用内容来说==是进行地址值的相同比较。
* 如果是两个对象,那么地址值必然不同,如果地址值相同,那么必然是一个对象。
3. 常用方法
* public boolean equals(Object obj): 进行字符串内容比较,严格区分大小写。参数obj就是另一个对象。
*public boolean equalsIgnoreCase(String str): 进行字符串内容比较,忽略大小写。
* 字符串的基本操作:
*public int length():返回字符串的长度
*public char charAt(int index):返回字符串index位置的字符
*public int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
*public int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。
*public int indexOf(int ch, int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
*public int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中从指定位置后第一次出现处的索引。
*lastIndexOf :从后向前找
* 字符串的转换操作:
*public char[] toCharArray():把字符串转换为字符数组。
*public static String valueOf(char[] chs):把字符数组转换成字符串。
*public static String valueOf(int i):把int类型的数据转换成字符串。
*String类的valueOf方法可以把任意类型的数据转换成字符串。
*public String toLowerCase():把字符串转换成小写
*public String toUpperCase():把字符串转换成大写
*public String concat(String str):把字符串拼接。
* 字符串的替换操作:
*public String replace(char old, char new):返回新字符串,用new字符替换原字符串old字符。
*public String replace(CharSequence old, CharSequence new):返回新字符串,用new字符串替换原字符串old字符串。
* 参数CharSequence是一个父接口,现阶段我们可以传String字符串。
* 字符串去除空格:
*public String trim():返回新字符串,去除原字符串首尾空格。
* 字符串的判断操作:
*public boolean equals(Object obj):比较字符串的内容是否相同,区分大小写。
*public boolean equalsIgnoreCase(Object obj):比较字符串的内容是否相同,不区分大小写。
*public boolean contains(String str):判断字符串中是否包含指定的字符串。
*public boolean startsWith(String str):判断字符串是否以某个指定的字符串开头。
*public boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾。
*public boolean isEmpty():判断字符串是否为空。
* 字符串的截取操作:
*public String subString(int start):从指定位置开始截取字符串,默认到末尾。
*public String subString(int start, int end):从指定位置开始到指定位置结束截取字符串。注意:截取的时候包含头,不包含尾。
* 字符串的分割操作:
*public String[] split(String regex):将regex作为标记进行切割,返回切割之后的若干段字符串(字符串数组)。
* 注意事项:
* 1.现阶段强烈推荐不要使用英文句点作为分割的标记。因为英文句点在正则表达式中有特殊含义,而参数regex就是一个正则表达式。
* 2.如果一定要使用英文句点,切割的标记应该使用"\\."(现阶段的固定写法)
StringBuffer
* 两个常用的构造方法:
*public StringBuffer():无参构造方法
*public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
*
* 添加操作:
*public StringBuffer append(String str):把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
*public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
*
* 删除操作:
*public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身
*public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
*
* 修改操作:
*void setCharAt(int index, char ch): 修改指定index处的字符
*
* 替换操作:
*public StringBuffer replace(int start,int end,String str):从start开始到end用str替换
*
* 反转操作:
*public StringBuffer reverse():字符串反转。
*
* 截取操作:
*public String substring(int start):从指定位置截取到末尾
*public String substring(int start,int end):截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
* 注意:返回值是String类型。
StringBuffer和String的相互转换
*StringBuffer和String的相互转换
*String -- StringBuffer:
* 1.通过构造方法
* 2.通过append()方法
*
*StringBuffer -- String
* 1.通过构造方法
* 2.通过toString()方法
* 3.通过subString(0,length);
*
StringBuffer和String的区别
* 1.String类表示的字符串是常量,不可改变。StringBuffer表示字符容器,可变。
* 2.在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类。
* 3.String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法
* 4.String类对象可以用操作符“+”进行连接,而StringBuffer类对象之间不能.StringBuffer对象连接可以使用append方法。