String类是用来构造一个字符串对象的.字符串对象操作在程序当中会频繁的使用到,我们可以通过实现这个类,就可以构造我们需要的字符串对象。
通过String类构造字符串对象的方式主要有两种:
(1)常用的创建方式
String s = "常用的创建方式";(这种创建方式比较节省内存资源)
如:String s1 = "abcd";
String s2 = "abcd";(s1==s2,这是因为这两个引用变量在内存中存的地址是一样的)
(2)不常用的创建方式
String str = new String();
如:String str1 = new String("abcd");
String str2 = new String("abcd");(s1!=s2,这是因为每次创建一个对象,都会在内存中开辟一块内存空间,即使它们中存的值是一样的,但是内存地址不一样。)
String对象是不可变的,即是一个常量。类中每一个看来会修改String值的方法,其实都是创建了新的String对象(包含修改后的字符串内容)。String的只读性带来效率优化可能,
字符串字面值存储于字符串池中,String对象优先指向该字符串池,避免反复生成重复的字符串实例。系统对String的非修改处理效率很高,远远超过另外两个字符串类StringBuffer和
StringBuilder。
(3)String对象的常用方法
length():返回此字符串的长度;
charAt(int index):返回指定索引处的char值;
concat(String str):将指定字符串连接到此字符串的结尾;
contains(CharSequence s):是否包含指定的字符串序列;https://www.cnblogs.com/skywang12345/p/string01.html
equals(Object anObject):将此字符串与指定的对象比较;
compareTo(String anotherString):按字典顺序比较两个字符串;
indexOf(int ch):返回指定字符串在此字符串中首次出现的下标;
split(String regex):根据给定正则表达式的匹配来拆分此字符串;
subString(int beginIndex):截取字符串;
toLower/UpperCase():将指定的字符串进行大小写转换;
replace(CharSequence target, CharSequence replacement):使用replacement中的值替换此字符串中所有的target对象,并返回一个新的字符串;
// 查找指定字符串在给定字符串中出现的次数
public class Demo {
public static void main(String[] args) {
String src = "朋友啊朋友,这是你最好的朋友!";
String dst = "朋友";
int index = 0;
int count = 0;
index = src.indexOf(dst);
while(index != -1){
count++;
index += dst.length();
index = src.indexOf(dst, index);
}
System.out.println(count);
}
}