String类
字符串是一个特殊的对象,
字符串是常量一旦初始化就不会被改变,只能是新建字符串对象。字符串常量池是在方法区中开辟的。
==与equals()的区别,前者判断的是引用类类型变量即地址,后者判断的是对象地址中的内容。不同对象地址中的内容值是可以相等的。
String类复写了Object类中的equals方法,该方法用于判断字符串对象中的字符串内容是否相同。
String s2=new String("abc")这句话中有两个对象,一个是abc对象,一个是新建对象内容和abc对象内容相同但是地址不同,
String s1="abc"这句话只有一个对象,即abc对象。与上一句地址不同但是地址中的内容是相同的。
String s3="abc"这句话中abc是常量保存在常量池中,与上一句是同一个对象。所以地址相同,内容也是相同的。
String类中的常见功能
1,获取
1.1 字符串的长度,int length()方法获取长度,不同于数组的属性,此处是方法的形式。
1.2 根据索引位置获取位置上的某个字符char charAt(int index)
1.3 根据字符获取该字符在字符串中的位置int indexOf(int ch)此处参数是Ascll码值,返回的是第一次出现的位置。从指定位置开始根据字符获取该字符在字符串中的位置int indexOf(int ch,int fromindex)。根据字符串获取该字符串在指定字符串中的位置,int indexOf(String str);//如果没有找到返回-1
以上方法前都可以加上last前缀从而反向索引,查找最后一次出现的位置。
2,判断
2.1 字符串中是否包含某一个子串boolean contains(str);此处也可以用indexOf(str),为空的时候返回-1,而且此方法不仅可以判断而且可以获取位置。
2.2 字符串是否以某指定内容开头;boolean startWith(str)
2.3 字符串是否为空 boolean isEmpty()、原理是判断字符串长度是否为0.与null不同。
2.4 字符串是否已指定内容结尾。boolean endsWith(str)
2.5 判断字符串内容是否相同equals(str)
2.6 判断内容是否相同并忽略大小写equalsIgnoreCase(str);
3,转换
3.1 将字符数组转换成字符串
构造函数 String(char [])通过构造器创建对象来完成
构造函数 String(char[],offset,count)将字符数组中的一部分转换成字符串。offset偏移为就是起始位,count是元素个数。
静态方法,static String copyValueOf(char[])
3.2 将字符串转换成数组
char[] toCharArray();
3.3 将字节数组转换成字符串
构造函数 String(byte [])通过构造器创建对象来完成
构造函数 String(byte[],offset,count)将字节数组中的一部分转换成字符串。offset偏移为就是起始位,count是元素个数。
3.4 将字符串转换成字节数
byte[] getBytes()
3.5 将基本数据类型转换成字符串 static String valueOf()
字符串和字节数组在转换过程中,时可以指定编码表的。
4,替换
String replace(oldchar,newchar);//如果替换的字符不存在,返回的还是原字符串
String replace(charSquence target,charSquence replacement)//对指定的字符串进行替换,charSquence是字符串接口。
5,切割
String[] split(regex);参数是切割位置的字符。此字符作为切割标识不会出现在切割成的数组中。
6,子串
获取字符串中的一部分,
String substring(beginIndex);//从指定位置开始到结尾
String substring(beginIndex,endIdex)//包含头不包含尾。
7,转换,去除空格,比较
7.1 将字符串转换成大写或者小写
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除
String trim();
7.3 按字典顺序比较字符的大小,按Ascill值进行比较,返回差值,如果比较到第一个不同的字符时停止比较,如果都相同返回0.
int compare(string);
对于忽略大小写比较,可以先将字符串全部转成小写再进行比较。