String
一、String对象的初始化
String类是对字符串事物的描述。该类定义了专门用于操作字符串的方法。
String s1 = "abc";
s1是一个类类型变量,"abc"是一个对象。字符串最大特点:一旦被初始化就不可以被改变。注意不能改变的是"abc"而不是s1的指向。
String s1="abc";
String s2=new String("abc");
S1在内存中有一个对象"abc",而s2在内存中有两个对象,一个是new String(),另一个是"abc"。
二、String的常见用法
1.获取StringBuffer1.1 获取字符串长度,也就是字符串中字符数
int length();
1.2 根据位置获取字符
char charAt(int index);
1.3 根据字符获取在字符中的位置
int indexof(int ch) 返回的是ch在字符串中第一个出现的位置
int indexof(int ch,int FromIndex) 从fromIndex指定位置开始,获取ch在字符串中出现的位置
int indexof(String str); 返回的是str在字符串中第一个出现的位置
int indexof(String str,int FromIndex) 从fromIndex指定位置开始,获取str在字符串中出现的位置反响索引一个字符出现的位置。
int lastindexof(int ch) 返回的是ch在字符串中第一个出现的位置
int lastindexof(int ch,int FromIndex) 从fromIndex指定位置开始,获取ch在字符串中出现的位置
int lastindexof(String str); 返回的是str在字符串中第一个出现的位置
int lastindexof(String str,int FromIndex) 从fromIndex指定位置开始,获取str在字符串中出现的位置
1.4 获取字符串中的一部分字符串,也叫子串。
String subString(int beginindex,intendindex) ;
String subString(int beginindex)
2.判断
2.1两个字符串是否相同
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
2.2字符串中是否包含某个字符串
boolean contains(String str)
2.3两个字符串是否以指定字符串开头或结尾
boolean Startswith(String);
boolean endswith(String);
2.4字符串是否为空
boolean isEmpty();
3.字符串转换
3.1将字符串变成字符串数组
String[] split(String regex);
3.2将字符串变成字符数组
char[] toCharArray();
3.1将字符串变成字节数组
byte[] getBytes();
3.4将字符串数组变成字符串
构造函数 String(char[])
String(char[],offset,count)将字符数组中的一部分转成字符串。
静态函数 static String copyValueof(char[])
static String copyValueof(char[],offset,count)将字符数组中的一部分转成字符串。
3.5将字符串的字母大小写转换
String toUppercase();大写
String toUppercase();小写
3.6将字符串的内容替换
String repalce(char oldch,char newch);
String repalce(String s1,String s2);
3.7将字符串两端空格去掉
String trim();
3.8将字符串进行连接
String concat(String);
4.比较
compareTo();对两个字符串进行自然顺序的比较。小返回负数 等返回0 大返回正数
StringBuffer
一、概述
StringBuffer是一个容器,字符串的组成原理就是通过该类实现的。StringBuffer可以对字符串内容进行增删改查等操作,很多方法和String相同。
二、特点
1、而且长度是可变化的。(数组是固定的)
2、可以直接操作多个数据类型。(数组只能操作一个)
3、最终会通过toString方法变成字符串。
二、StringBuffer的常见用法
1.添加
append(data) 将指定数据添加到已有数据的结尾处
insert(位置,字符串) 将数据插入到指定位置
2.删除
delete(start,end) 删除缓冲区中的数据,包含start不包含end
deleteCharAt(ine index) 删除指定位置元素
StringBuffer.delete(0,sb.length());
3.查找
char charAt(index);
int indexof(string)
int lastindexof(String);
4.修改
StringBuffer replace(start,end.String)
void setCharAt(index,char)
setlength()设置长度
5.反转
StringBuffer reverse();
6.将缓冲区中的指定数据存储到字符数组中
void getChars(int srcBegin,int srcEnd,char[] dst,int dstbegin)
注:
在JDK1.5版本之后出现了StringBuilder。
StringBuffer是线程同步的。有锁。效率低
StringBuilder是线程不同步的。无锁。效率高
以后开发,建议使用StringBuilder。如遇多线程,使用StringBuffer或自己加锁。
基本数据类型包装类
将基本数据类型封装成对象的好处,在于可以在对象中定义更多的功能方法操作该数据。基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换。下面我们来了解包装类的写法形式和常用方法。
一、基本数据类型对象包装类。
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
二、基本数据类型转成字符串
基本数据类型+" "
基本数据类型.toString(基本数据类型值);
如:Integer.toString(34);//将34整数变成"34"。
三、字符串转成基本数据类型。
xxx a=Xxx.parseXxx(string);//必须传入对应类型的字符串。
如 inta=Integer.parseInt("123");//静态
booleanb=Boolean.parseBoolean("true");
Integeri=new Integer("123");
intnum=i.intValue();//跟上面的静态方式的结果一样,但这种属于对象调用方式。
注意:
在使用时,Integer x = null;上面的代码就会出现NullPointerException。
四、十进制转成其他进制。
使用方法:Integer.toBinaryString(int)
toBinaryString();//2进制
toHexString(); //8进制
toOctalString();//16进制
五、其他进制转成十进制。
parseInt(String,radix);
如:int a= Intager.parseInt("3c",16);
JDK1.5版本以后出现的新特性:
Integer x=new Integer(4);
等效于:Integer x=4;//自动装箱。
还可以直接进行运算:x=x+2;//x进行自动拆箱。变成了int类型。和2进行加法运算。再将和进行装箱赋给x。x的拆箱动作等效:x.intValue()。
六、示例
Integer x=128;
Integer y=128;
x==y (false)
Integer m=127;
Integer n=127;
m==n ( true)
原因:
因为m和n指向了同一个Integer对象。因为当数值在byte范围内,对于新特性,如果该数组已经存在,则不会再开辟新的空间。