String以及StringBuffer相关应用讲解
Java把字符串当作对象来处理,它提供了一系列方法对整个字符串进行操作,使得对字符串的处理更加容易和规范。而对于字符串的操作通常是通过引用数据类型进行操作的,下边着重讲解String和StringBuffer对字符串的操作以及两者之间的区别。
String属于包裹类引用数据类型,对于变量的声明通常有两种方式,其一通过字符串常量进行声明,如:String str=”Hello world”。其二还可以通过new的方式进行声明,如:String str = new String (“Hello world”)。且String所声明的数据,其缓存长度是固定的,即不能对数据进行修改,在如下操作中:System.out.println(str.concat(“haha”)),我们可以认为是抛弃原有的内存地址,随后JVM默认新声明一个str,随后将其重新赋值。
而对于String的两种命名方式:String str1=”hello”;Stringstr2=new String (“hello”)又存在怎样的不同?分析发现,str1代表的是高速缓存数据器中所存储的hello ,str2指的是JVM在内存中随机划分的区域用于存放hello的地址代码。故String st3=str1代表的是将str1的值hello赋给str3;String str4=st2代表的是将st2所代表的地址赋给str4。即str1可以进行逻辑关系==的比较,str2只能进行逻辑关系equals的比较。
String所常用的函数通常为str.length() ,str.toUpperCase() ,str.toLowerCase() ,str.equals(str2) ,str.equalsIgnoreCase(str2) ,str.substring(n) ,str.substring(m,n) ,str.concat(“haha”) ,str.contain(“ha”) ,str.charAt(n) ,str.indexOf(‘ ’) ,str.trim() ,str.split(“ ”)。
注意String函数进行操作后值未发生变化,但是StringBuffer进行操作后值发生变化。具体使用方法如下:
package com.yunhe.study;
public class StringQuestion {
publicstatic void main (String[] args){
Stringst1="Hello World";
Stringst2=" Hello World ";
Stringst3=st1.toLowerCase();
System.out.println(st1.length());//length()函数的主要功能是测试st1的长度,测试发现String型数据的长度是固定的
System.out.println(st1.toLowerCase());//toLowerCase()函数的主要功能是将对应的字符串全部转化为小写
System.out.println(st1.toUpperCase());//toUpperCase()函数的主要功能是将对应的字符串全部转化为大写
System.out.println(st1.equals(st3));//equals()函数的主要功能是判断两个字符串的数值是否完全相同,区分大小写
System.out.println(st1.equalsIgnoreCase(st3));//equalsIgnore()主要是判断两个字符串的数值是否相同,不区分大小写,输出的结果是boolean
System.out.println(st1.substring(3));//substring(n)代表从第n索引位开始截取字符
System.out.println(st1.substring(3,6));//substring(m,n)代表从第m索引位提取至n索引位字符
System.out.println(st1.concat("haha"));//concat("")代表对其重新声明并赋值在其后边添加字符,('')是非法字段
System.out.println(st1.contains("ll"));//contains("")代表的是查找该字段中是否存在""的字段,('')是非法字段
System.out.println(st1.charAt(3));//charAt(n)代表的是输出第n索引位的字符
System.out.println(st1.indexOf('e'));//indexOf('')代表输出该字符的索引位,当查找到第一个时自动停止
System.out.println(st1.trim());//trim()即自动清除字符串两段的空格
System.out.println(st1.split(""));//trim()即自动拆分成数组形式
}
}
StringBuffer属于非包类引用数据类型,声明方法只有一种,如:StringBuffer stb=new StringBuffer (“ ”)。该数据类型,属于长度可变的数据类型,即不仅规定了该数据类型的实际长度,对于系统默认16位缓存,不足时会自动添加。对于StringBuffer数据类型可以进行追加,插入,替换,消除等操作,且在操作过程中,不需重新进行申明。对于系统不断接受字符,具有可以减缓系统负荷的效果。
StringBuffer常见的函数有stb.length() ,stb.capacity() ,stb.append(“字符串,字符,数值 ”) ,stb.insert(n, “haha”) ,stb.delete(m,n)
package com.yunhe.study;
public class StringBufferQuestion {
publicstatic void main (String[] args){
StringBufferstb=new StringBuffer ("hello");
Stringstr ="haha";
System.out.println(stb.length());//length()用于显示字符串的实际长度
System.out.println(stb.capacity());//capacity()用于显示字符串的总长度
System.out.println(stb.append(1));//append("")用于在字符串后边添加新的内容
System.out.println(stb.insert(2,"haha"));//insert(n,"")在第n索引位之前插入字符
//System.out.println(stb.(1,3,"hehe"));
System.out.println(stb.delete(2,5));//delete(n,m)即从第n索引位删除至第m索引位
}
}
StringBuffer类型可通过toString()转化为String类型StringBuffer stb=new StringBuffer ("hello");String str =stb.toString();
StringBuffer和String对于优化系统具有很大的意义。