string类学习
更新日期:
字符串初识
字符串是一个特殊的对象
字符串一旦初始化, 就不可以被改变
字符串初始化在字符串常量池
1 2 3 4
String s = "abc"; // 在常量池当中 String s1 = new String("abc"); // 在堆内存中生成 println(s==s1); // false println(s.equals(s1)); // true
字符串的构造
1 2 3
byte[] arr = {65, 66, 67, 68}; new String(arr); // ABCD new String({'a', 'b', 'c'});// abcd
字符串方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | /** 获取字符的长度 **/ int length(); /** 根据位置获取字符 **/ char charAt(int pos) /** 字符第一次出现位置 * 没有找到返回-1 **/ int indexOf(int ch); int indexOf(int ch, int fromIndex); int indexOf(String str, int fromIndex); int lastIndexOf(int ch); int lastIndexOf(int ch, int from Index); /* 获取部分子串 */ String substring(int beginIndex); String substring(int beginIndex, int endIndex); /* 变成字符数组 */ char[] toCharArray(); /* 变成Byte */ byte[] getBytes(); /* 变大小写 */ String toUpperCase(); String toLowerCase(); /* 替换 */ String replace(char old, char new); String replace(CharSequence old, CharSequence new); /* 去掉前后空白字符 */ String trim(); /* 将字符串进行连接 */ String concat(String str); /* valueOf */ String.valueOf(4); // toString /* 字符串比较 */ boolean equalsIgnoreCase(String str); boolean equals(Object obj); /* 是否包含 */ boolean contains(); /* 是否指定开头和结尾 */ boolean endsWith(String s); boolean startsWith(String s); |
字符串切割
String [] split(String regex);
1 2 | String s = "a,b,c"; s.split(",") |
intern方法
对字符串操作, 当返回常量池中的字符串, 如果常量池中没有, 就插入
1 2 3 | String s = new String("abc").intern(); /* equals */ String = "abc"; |
StringBuffer
StringBuffer 是字符串缓冲,用于存储数据的容器
- 长度是可变的
- 可以存储不同类型的容器
- 最终转换成字符串
- 可对字符串进行修改, 可添加
append(data)
, 可插入insert(pos, data)
, 删除delete(pos, pos)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
//初始化一个长度为40的空间 StringBuffer sb = new StringBuffer("40"); sb.append(4).append(false).append("haha"); sb.insert(1, "hehe"); StringBuffer sb = new StringBuffer("abc"); sb.insert(1, "hehe"); // ahehebc sb.delete(1, 4); // abc sb.deleteCharAt(0); //bc // 清空 sb.delete(0, sb.length()); // 查找, 类似String // 修改 sb.replace(1,3,"123"); sb.setCharAt(0, 'c'); sb.setLength(0); // 可清空缓冲区
StringBuilder
StringBuilder 和 StringBuffer 功能和用法一模一样, StringBuffer 线程安全, StringBuilder 线程不安全, 单线程推荐使用 StringBuilder