final 不能被继承
String s1 = "abc" ;//s1是一个类类型变量,“abc”是一个对象。
//字符串最大的特点是:一旦被初始化就不可以被改变。
s1 = "kk" ; //s1的指向(地址)变了
String s2 = new String("abc");
s1==s2 false
sq.equals(s2) true //String类复写了Object类中equals方法,该方法用于判断字符串是否相同。
s1和s2的区别:
s1在内存中有一个对象;
s2在内存中有两个对象。
常量池 数组
String类适用于描述字符串事物,它提供了多个方法对字符串进行操作。
常见的操作有:
1.获取
1.1字符串中包含的字符数,也就是字符串的长度
int length(); 方法 不同于数组的length属性
1.2根据位置获取位置上的某个字符
char charAt(int index);
1.3根据字符获取该字符在字符串中位置
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex);从fromIndex指定位置开始,获取ch在字符串中出现的位置
int lastIndexOf(String str);int lastIndexOf(int ch);
2.判断
2.1字符串中是否包含某一个子串
boolean contains(str);
特殊之处:indexOf(str)可以索引第一次出现位置。如果返回-1,表示该str不在字符串中存在。所以,也可以用于指定判断是否包含。
if(str.indexOf("aa")!=-1) 而且该方法既可以判断,又可以获取出现的位置
2.2字符串中是否有内容
boolean isEmpty();原理就是判断长度是否为零
2.3字符串是否是以指定内容开头
boolean startsWith(str);
2.4字符串是否是以指定内容结尾
boolean endsWith(str);
2.5判断字符串的内容是否相同 复写了Object类中的equals方法
boolean equals(str);
2.6判断内容是否相同,并忽略大小写
2.6判断内容是否相同,并忽略大小写
boolean equalsIgnoreCase();
3.转换
3.1将字符数组转成字符串
构造函数:String(char[])
构造函数:String(char[],offset,count)将字符数组中的一部分转成字符串
静态方法:static String copyValueOf(char[]);
static String valueOf(char[]);
3.2将字符串转成字符数组
char[] toCharArray();
3.3将字节数组转成字符串
String(byte[])
String(byte[],offset,count)
3.4将字符串转成字节数组
byte[] getBytes();
3.5将基本类型转换成字符串
static String valueOf(int);
3+"";//String.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4.替换
4.1 String replace(oldchar,newchar);
5.切割
String[] split(regex);
6.子串 获取字符串中的一部分
String substring(begin,end);//[begin,end)左包含 s.substring(0.s.length())
7.转换、去除空格、比较
7.1将字符串转成大写或小写
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除
String trim();
7.3对两个字符串进行自然顺序的比较
int compareTo(string);