------- android培训、java培训、java学习型技术博客、期待与您交流! ----------
String和StringBuffer
1、String类初识
字符串最大特点:一旦被初始化就不可以被改变。
String s1 = new String("a");//堆中
String s2 = "a";//常量池中
String s3 = s1.intern();
s2==s3;//true
1.1、==和equals()区别
String 复写了Object类的equals方法。String中equals是判断值是否相等。
4+“”;-->代表字符串
2、String方法介绍
方法介绍:
char charAt(int index) 返回指定索引处的 char 值。
int compareTo(String anotherString) 按字典顺序比较两个字符串。
String concat(String str) 将指定字符串连接到此字符串的结尾。
boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。
boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
boolean equals(Object anObject) 将此字符串与指定的对象比较。
static String format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。
byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
boolean isEmpty() 判断字符串是否为空
int lastIndexOf(int ch) 反向索引字符出现的位置(角标)
int length() 返回字符串长度
boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。
String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。
boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
char[] toCharArray() 将此字符串转换为一个新的字符数组。
String trim() 去除字符串前后空白
static String valueOf(参数)将指定参数转换为字符串。构造函数也可以将其他基本类型数据转换成字符串。
String toLowerCase() 小写
String toUpperCase() 大写
3、String练习
package demo1;
public class StringTest {
/*
1,模拟一个trim方法,去除字符串两端的空格。
思路:
1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。
结尾处判断空格也是如此。
2,当开始和结尾都判断到不是空格时,就是要获取的字符串。
*/
public static String myTrim(String str){
int start = 0;
int end = str.length()-1;
while(start<=end&&str.charAt(start++)==' ');
//start++;
while(start<=end&&str.charAt(end--)==' ');
//end--;
return str.substring(start-1,end+2);
}
/*
2,将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg
思路:
1,曾经学习过对数组的元素进行反转。
2,将字符串变成数组,对数组反转。
3,将反转后的数组变成字符串。
4,只要将或反转的部分的开始和结束位置作为参数传递即可。
*/
public static String myReverse(String str,int start,int end){
char[] chs = str.toCharArray();
reverse(chs,start,end);
return new String(chs);
}
//字符前后置换
private static void reverse(char[] arr,int x,int y){
for(int start=x,end=y-1; start<end ; start++,end--){
swap(arr,start,end);
}
}
//置换
private static void swap(char[] arr,int x,int y){
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
/**
* @param args
*/
public static void main(String[] args) {
String a = " dsfsa ";
System.out.println(a);
a = myTrim(a);
System.out.println(a);
a = myReverse(a, 0, a.length());
System.out.println(a);
}
}
4、StringBuffer
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append("a");
sb==sb1;//true
链式编程
sb.append().append().append();
长度是可变的
可以字节操作多个数据类型。
4.1 方法介绍
StringBuffer append() 添加字符序列
int capacity() 返回当前容量。
char charAt(int index) 返回此序列中指定索引处的 char 值。
StringBuffer delete(int start, int end) 移除此序列的子字符串中的字符。
StringBuffer deleteCharAt(int index) 移除此序列指定位置的 char。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst。
int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。
StringBuffer insert(int offset, boolean b) 将 boolean 参数的字符串表示形式插入此序列中。
int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。
int length() 返回长度(字符数)。
StringBuffer replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。
StringBuffer reverse() 将此字符序列用其反转形式取代。
String substring(int start, int end) 返回一个新的 String,它包含此序列当前所包含的字符子序列。
String toString() 返回此序列中数据的字符串表示形式。
StringBuilder线程不同步
5、基本数据类型包装类
Integer
Character
Boolean
Byte
Long
Short
Double
Float
static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析。
其他进制转成十进制。
parseInt(string,radix);
==和equals
新特性:
Integer x = 5;//自动装箱
x=x+2;
x.intValue();
如果值在1-127 byte范围之间Integer ==比较为真。
------- android培训、 java培训、 java学习型技术博客、期待与您交流! ----------