String类: 字符串是一个特殊的对象。 字符串一旦初始化就不可以被改变。 String str = "abc";//"abc"存储在字符串常量池中。 池中没有就建立,池中有直接用。 String s1 = "abc";//在常量池中创建一个对象 String s2 = new String("abc");//在堆内存中创建两个对象,一个new一个,一个字符串对象。 System.out.println(s==s1);true System.out.println(s==s2);false System.out.println(s.equals(s2));true String类覆写了Object中的equals方法建立了String类自己的判断对象是否相同的依据。 构造函数: 1.String s = new String(); 2.byte[] arr = {97,66,67,68}; String s = new String(arr); System,out.println("s="+S);//打印结果:s=aBC 3.char[] arr = {'w','a','p','q,','x'}; String s = new String(arr); System.out.println("s="s);//打印结果:s=wapqx 4.char[] arr ={w,a,p,q,x}; String s = new String(arr,1,3);//从1开始取3个。 System.out.println("s="s);//打印结果:s=apq ----------------------------------------------------- String类 :常见功能 1.获取 1.1获取字符串中字符的个数(长度) int length(); 1.2根据位置获取字符。 char charAt(int index); 1.3根据字符获取位置,返回第一次出现的位置。(必须会) int indexOf(int ch); int indexOf(int ch,int fromIndex);从指定位置开始索引,返回第一次出现的位置。 int indexOf(String str); int indexOf(String str,int fromIndex); int lastIndexOf(int ch); int lastIndexOf(int ch,int fromIndex); int lastIndexOf(String str); int lastIndexOf(String str,int fromIndex); 1.4获取字符串中一部分字符串。也叫子串。 String substring(int beginIndex,int endIndex); String substring(int beginIndex); 返回一个新的字符串,从指定的beginIndex开始,直到索引endIndex-1处结束。 包含begin不包含end 2.转换 2.1将字符换变成字符串数组。 String[] split(String regex);涉及到正则表达式。 例: String s = "张三,李四,王五"; String[] arr = s.split(","); 2.2将字符变成字符数组。 char[] toCharArray(); 2.3将字符串变成字节数组。 byte[] getBytes(); 2.4将字符串中的字母转成大小写。 String toUpperCase(); String toLowerCase(); 2.5将字符串中的内容进行替换。 String replace(char oldChar,char newChar); String replace(String s1,String s2); 2.6将字符串两端的空格去除。(开发中非常有用) String trim(); 2.7将字符串进行连接。 String conat(String); System.out.println("abc".concat("kk")); System.out.println("abc"+"kk");//等效 2.8 System.out.println(String.valueOf(4)+1); System.out.println(""+4+1);//等效 3.判断 3.1两个字符串内容是否相同。 boolean equals(Object obj); boolean equalsIgnoreCase(string str);//忽略大小写进行比较。 例:String s = "abc"; System.out.println(s.equals("ABC".toLowerCase())); System.out.println(s.equalsIgnoreCase("ABC")); 3.2字符串中是否包含指定字符串。 boolean contains(string str); 3.3字符串是否以指定字符串开头,是否以指定字符串结尾。 boolean startsWith(string); boolean endsWith(string); 4.比较: compareTo(); int compareTo(String anotherString) System.out.println("a".compareTo("b"));//-1 System.out.println("a".compareTo("A"));//32 System.out.println("abc".compareTo("bcd"));//-1 5.intern();对字符串池进行操作的。(开发一般不用。) String s1 = new String("abc"); String s2 = s1.intern();//池中有就使用,池中没有就建立。 System.out.println(s1==s2);//false 通过new创建不在常量池中。 ----------------------------------------------------- StringBuffer:就是字符串缓冲区。 用于存储数据的容器。 特点: 1.长度可变。 2.可以存储不同类型数据。 3.最终要转成字符串进行使用。 4.可以对字符串进行修改。 既然是一个容器对象。应该具备什么功能呢? 1.添加: StringBuffer append(data); short和byte不能添加。 StringBuffer insert(index,data); 2.删除: StringBuffer delete(start,end):包含头不包含尾。 StringBuffer deleteCharAt(int index):删除指定位置的元素。 清空缓冲区。缓冲区还在。 sb.delete(0,sb.length()); 3.查找。 charAt(index); int indexOf(string); int lastIndexOf(string); 4.修改 StringBuffer replace(start,end,string); void setCharAt(index,char); 增删改查;CURD create update read delete 设置长度:setLength(int); 反转:reverse(); StringBuffer--可变长度数组: 数组是固定长度的。 可变长度原理:会创建新数组,复制原数组内容到新数组。 ------------------------------------------------- StringBulider:JDK1.5之后出现,线程不同步,效率更高。 功能用法和StringBuffer一样。 Stringbuffferx线程是同步的。通常用于多线程。 StringBulider线程不同步。通常用于单线程,他的出现提高效率。
|