String ,StringBuffer,StringBuilder的概念

来源:互联网 发布:编辑挂机软件 编辑:程序博客网 时间:2024/05/17 02:01

String ,StringBuffer,StringBuilder的概念

* String类的特点* 字符串对象一旦被初始化 ,就不会被改变
* String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。    因为 String 对象是不可变的,所以可以共享。例如: String str = "abc"; 等效于: char data[] = {'a', 'b', 'c'}; String str = new String(data);
String s  = "abc";String s2 = "abc";System.out.println(s==s2);//true

/** * 一.获取 * 1.获取字符串中字符 的个数(长度) *     int length(); * 2.根据位置获取字符 *     char charAt(int index) * 3.根据字符获取在字符串中的第一次出现 的索引 *     int IndexOf(int in) *     int indexOf(int ch,int fromIndex) *     int indexOf(String str) *     int indexOf(String str ,int fromIndex) * *     lastIndexOf(int in) *  4.获取字符串中的一部分字符串,也叫子串 *     String substring(int beginIndex,int endIndex)//包含begin,不包含end * *  二,转换 *  1.将字符串变成 字符串数组(字符串的切割) *     String []  split(String regex):涉及到正则表达式 *  2.将字符串变成 字符数组 *     toCharArray() 将此字符串转换为一个新的字符数组 *  3.将字符串转成字节数组 *      getBytes(Charset charset) 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。    4.将字符串中的字母转成大小写        toLowerCase()        toUpperCase()    5.将字符串中的内容进行替换        replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。     6.将字符串两端的空格去除        trim()    7.将字符串进行连接       concat(String str)  将指定字符串连接到此字符串的结尾。 三,判断  1.两个字符串内容是否相同     equals(Object anObject) 将此字符串与指定的对象比较。      equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写 2.字符串是否包含指定字符串     contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。 3.字符串    startsWith(String prefix) 测试此字符串是否以指定的前缀开始    endsWith(String suffix)  测试此字符串是否以指定的后缀结束。 */
 
String s = "hello";String ss = "hello";String sss = new String("hello");System.out.println(s == ss);//trueSystem.out.println(s.equals(ss));//trueSystem.out.println(s == sss);//falseSystem.out.println(s.equals(sss));//true
// String类中的equals复写Object中的equals建立了Sring类自己的判断字符串对象 是否相同 的依据//其实就是比较字符串的内容


/** * StringBuffer:就是字符串缓冲区 * 用于存储数据 的容器 * 功能: * 1.增加数据 *     append(boolean b) * 2.插入数据 *     insert(int offset, boolean b) 将 boolean 参数的字符串表示形式插入此序列中 。3.删除        delete(int start, int end) 移除此序列的子字符串中的字符。包含头,不包含尾    4.查找        charAt(index)        indexOf(string)    5.修改        replace()
//让一个字符串反转输出String s  = "zxcvbnm";StringBuffer stringBuffer = new StringBuffer();for (int i = s.length()-1; i >-1 ; i--) {    stringBuffer.append(s.charAt(i));}System.out.println(stringBuffer.toString());System.out.println(stringBuffer.reverse().toString());//利用已有的方法进行反转输出 
* StringBuffer和StringBuilder区别* 1.5以后出现了StringBuilder* 不同的是* StringBuffer是安全的线程,,是线程同步 的,通常用于多线程* StringBuilder是不安全的线程,是线程不同步 的,通常用于单线程,它的出现提高了效率*/
public class StringBuilderDemo {    public static void main(String[] args) {        int[] arr = {3, 5, 2, 4, 9, 8, 7};        String s = arrayToString(arr);        System.out.println(s);        StringBuilder ss =arrayToString2(arr);        System.out.println(ss.toString());    }    //利用stringBuilder让数组转化成String    private static StringBuilder arrayToString2(int[] arr) {        StringBuilder stringBuilder = new StringBuilder();        for (int i = 0; i < arr.length; i++) {            if (i != arr.length - 1) {                stringBuilder.append(arr[i]+",");            } else {                stringBuilder.append(arr[i]+"");            }        }        return stringBuilder;    }    private static String arrayToString(int[] arr) {        String str = "";        for (int i = 0; i < arr.length; i++) {            if (i != arr.length - 1) {                str += arr[i];            } else {                str += arr[i];            }        }        return str;    }}


阅读全文
0 0
原创粉丝点击