1. String类
String类是final类
String对象是一个特殊的对象,一旦初始化就不可被改变
String str = "abc" 与 String str = new String("abc");的区别.
一个是内存中只存在一个对象"abc",一个是存在两个对象"abc"和 new String("abc").
String类复写了Object类中的equals方法,不是比较地址而是比较里面的字符串是否相同.
1.获取
int length()获取长度
char charAt(int index)获取某个位置上字符
int indexOf(int ch):返回从ch在字符串中第一次出现的位置,-1表示没有找到
int indexOf(int ch,int fromIndex):返回从fromIndex开始, ch在字符串中第一次出现的位置,-1表示没有找到
int indexOf(String str):返回str在字符串首次出现位置,-1表示没有找到
int indexOf(String str, int fromIndex):从fromIndex开始返回str在字符串首次出现位置,,-1表示没有找到
2.判断
boolean contains(str)字符串是否包含某一字串
boolean isEmpty():判断是否为空,原理是判断length是否为0
boolean startsWith(str):是否指定位置开头
boolean endsWith(str):是否指定位置结尾
boolean equals(str):判断字符串内容是否相同,复写了Object的equals方法.
boolean equalsIngoreCase(str):忽略大小写的判断内容是否相同
3.转换
3.1 将字符数组转字符串
构造函数: String (char[] buf)
构造函数: String (char[] buf,offset, count)
静态方法:
static copyValueOf(char[] buf);
static copyValueOf(char[] buf,int offset, int count);
static ValueOf(char[] buf);
static ValueOf(char[] buf,int offset, int count);
3.2字符串转字符数组
char[] toCharArray()
3.3将字节数组转字符串
构造函数: String (byte[] buf)
构造函数: String (byte[] buf,offset, count)
3.4字符串转字节数组
byte[] getBytes()
3.5基本数据类型转字符串
static String valueOf(int);
static String valueOf(double);
//3+"" //String.valueOf(3);
4.替换
String replace(char oldch,char newch); 将字符串中的内容进行替换
String replace(String s1,String s2);
String replaceAll(String regex, String replacement);按照给定的replacement替换此字符串所有匹配给定regex的子字符串.
String repalceFirst(String regex, String replacement);按照给定的replacement替换此字符串所有匹配给定regex的第一个子字符串.
5.切割
String[] split(regex)
6.获取子串.
String substring(int beginIndex, int endIndex)//包含begin 不包含end 。如果角标不存在则出现越界异常
String substring(int beginIndex);
7.转换
将字符串中的字母转成大小写。
String toUpperCase():大写
String toLowerCase():小写
将字符串两端的空格去除。
String trim();
字符串自然排序比较
int compareTo(str);
2. StringBuffer类
字符串的组成原理就是通过该类实现的
可对字符串内容进行修改
是一个容器
很多方法与String相同
是可变长度的.
最终可通过toString方法返回字符串
既然是一个容器对象。应该具备什么功能呢?
增删改查 C(create)U(update)R(read)D(delete)
1,添加:
StringBuffer append(data);将参数的字符串表示形式追加到序列。
StringBuffer insert(index,data);在指定index位置插入
2,删除:
StringBuffer delete(start,end):包含头,不包含尾。 案例:清空缓冲区sb.delete(0,sb.length());
StringBuffer deleteCharAt(int index):删除指定位置的元素
3,查找(获取):
char charAt(index);
int indexOf(string);
int lastIndexOf(string);
int length()
String subString(int start, int end); 而不是StringBuffer
4,修改:
StringBuffer replace(start,end,string); 将start到end-1替换成对应的String
void setCharAt(index,char);
5. 反转
StringBuffer reverse();
6. 将缓冲区指定数据存储到指定的字符数组中
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): sb的srcBegin到srcEnd-1存到dst字符数组中,按从desBegin开始存
jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
不同的是:
StringBuffer是线程同步的。通常用于多线程。
StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。
jdk升级的三个原因:
1,简化书写。
2,提高效率。
3,提高安全性。
八大基本数据类型及其包装类
byte Byte
short Short
int Integer
long Long
boolean Boolean
char Character
float Float
double Double
基本数据类型 转 字符串
基本数据类型+""
基本数据类型.toString(基本数据类型值); //Integer.toString(123);
字符串转基本数据类型
xxx a = Xxx.parseXxx(String)
例如int a = Integer.parseInt("123");
double d = Double.parseDouble("12.33");
boolean b = Boolean.parseBoolean("true");
int十进制转其他进制字符串
转二进制static String toBinaryString(int i)
转八进制static String toOctalString(int i)
转十六进制static String toHexString(int)
任意进制字符串位置int十进制.
int a = Integer.parseInt("123"); //a=123
int a = Integer.parseInt("123",10); //a=123,与上文一样
int b = Integer.parseInt("ff",8); //b=255
或者通过把String类型先封装成Integer对象,然后 对象.intValue()方法得到.
Integer x = new Integer(4);
等价于 Integer x = 4;//自动装箱
x = x + 2;//又能 x.intValue()自动拆箱进行运算再装箱.
Integer m = 128;
Integer n = 128;
syso(m == n);
Integer a= 127;
Integer b= 127;
syso(a== b);
结果分别为false和true
第一个结果为false很好理解,因为两个不同的对象
而第二个由于新特性,byte范围类128~127不会开辟新空间.