1…String类
1.1…
l 字符串是一个特殊的对象。
l 字符串一旦初始化就不可以被改变。
String str = “abc”; 只要是双引号引起来的都是这个Strung类的一个具体对象
1.2..
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:
String str = "abc";
字符串在内存里面有个常量池,池里面一个数组,存放abc等这样的字符,字符串由字符组成,比如你建"abc"对象,那么他就把那三个字符存放到这个数组当中,比如建"abf"对象,他会到那常量池中找abf字符拼成一个新的字符串对象
2…字符串常见方法
String类适用于描述字符串事物。
那么它就提供了多个方法对字符串进行操作。
常见的操作有哪些?
"abcd"
a,获取。
1.1字符串中包含的字符数,也就是字符串的长度。
intlength():获取长度。 注意:数组也有长度,但数组的length是属性没有()..字符串的长度是通过方法完成的有()
1.2根据位置获取位置上的某个字符。
charcharAt(int index): 参数是位置
1.3根据字符获取该字符在字符串中的位置。
intindexOf(int ch):返回的是ch在字符串中第一次出现的位置。比如有2个a那么就返回第一个a的位置,,参数为什么是int,因为他接收的是ascll码,ch是字符,参数是ascll码,,你可以传97,97就是字符c,他传的是ascll码
intindexOf(int ch, int fromIndex) :从fromIndex指定位置开始找,获取ch在字符串中出现的位置。
intindexOf(String str):返回的是str在字符串中第一次出现的位置。比如bc在字符串中第一次出现的位置,,从0位置开始找
intindexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中第一次出现的位置。参考4
intlastIndexOf(int ch) :
b.判断
2.1字符串中是否包含某一个子串。
booleancontains(str):
特殊之处:indexOf(str):可以索引(找)str第一次出现位置,如果返回-1.表示该str不在字符串中存在。
所以,也可以用于对指定字符串的判断是否包含。indexOf和contains都可以做这件事
if(str.indexOf("aa")!=-1)就是字符串里面存在aa,字符串包含aa
而且该方法即可以判断,又可以获取出现的位置。即判断又要拿位置的话就用indexOf,,如果只是判断就用contains
boolean contains(CharSequence s) 看api,,,CharSequence是个接口,,CharSequence意思是字符序列,CharSequence接口有个实现类是string,,这里的参数不是string的原因是他有另外一个参数StringBuffer,,,CharSequence接口有个实现类是StringBuffer
当且仅当此字符串包含指定的char 值序列时,返回 true。
2.2字符中是否有内容。字符串里面没有内容就返回true,有内容就返回false,,就是判断字符串是否为空字符串就是里面是空的 " "
booleanisEmpty(): 原理就是判断长度是否为0. 当且仅当 length() 为 0 时里面没有内容就返回 true。,,,""是而过对象,,null是指向空
2.3字符串是否是以指定内容开头。
booleanstartsWith(str); 参考7
2.4字符串是否是以指定内容结尾。
booleanendsWith(str);
2.5判断字符串的内容是否相同。复写了Object类中的equals方法。比较对象里的内容
booleanequals(str);
2.6判断内容是否相同,并忽略大小写。 邮箱验证忽略大小写
booleanequalsIgnoreCase();
==:操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals:操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
c. 转换
3.1将字符数组转成字符串。下面3种方法效果一样,一个是构造函数完成,一个是string的copyValueOf方法完成,一个是string的 valueOf方法完成
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。
静态方法:
staticString copyValueOf(char[]);
staticString copyValueOf(char[] data, int offset, int count)
staticString valueOf(char[]);
3.2将字符串转成字符数组。**
char[]toCharArray():
3.3将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4将字符串转成字节数组。
byte[] getBytes():
3.5将基本数据类型转成字符串。 参考3中的代码4,也可以把字符数组转成字符串
staticString valueOf(int)
staticString valueOf(double)
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。你想做编码操作的时候你得变成字节才可以,字符不行
d…替换
Stringreplace(oldchar,newchar);
Stringreplace(char oldChar, char newChar) =
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
Stringreplace(CharSequence target, CharSequence replacement) 直接替换整个字符串或者把字符串的一部分换成指定的部分,
e….切割
String[]split(regex);
f...获取字串
Stringsubstring(begin); sub是子的意思
Stringsubstring(begin,end);
String substring(int beginIndex) 从beginIndex这个位置开始截取成一个新的字符串
返回一个新的字符串,它是此字符串的一个子字符串。
String substring(int beginIndex, int endIndex) 从beginIndex这个位置开始到endIndex-1位置结束截取
返回一个新字符串,它是此字符串的一个子字符串。
g….转换,去除空格,比较。
7.1将字符串转成大写或则小写。 参考代码1
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除。邮箱登陆用到去除空格 参考代码2
Stringtrim();
7.3对两个字符串进行自然顺序的比较,,比较大小。 参考代码3
intcompareTo(string);
2…StringBuffer
StringBuffer用于对字符串进行修改,他是个容器
StringBuffer是字符串缓冲区。
是一个容器。
特点:
a,长度是可变化的。数组也是个容器,但是长度是固定的
b,可以直接操作多个数据类型。而数组一次只能操作一种数据类型,因为数组的类型是之前指定了的 比如char[] x
c,最终会通过toString方法变成字符串。
什么时候使用StringBuffer:当数据类型不确定,而且最终变成string的时候,还有数据的个数也不确定的时候就用它
a,存储。
StringBufferappend():将指定的数据作为参数添加到已有数据结尾处。append()参数包括,char[] str,(char[] str, int offset, int len),(CharSequences),(CharSequence s, int start, int end),(Object obj),(String str),(StringBuffer sb) ,,,这里添加后返回的还是原来的StringBuffer对象,
StringBufferinsert(index,数据):可以将数据插入到指定index位置。 在指定的位置添加(插入)数据,,返回的还是原来的StringBuffer对象
b,删除。
StringBufferdelete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBufferdeleteCharAt(index):删除指定位置的字符。
清空StringBuffer里面所有内容 delete(0, s.length()),,,,StringBuffer也有length()方法
c,获取。
charcharAt(int index)
intindexOf(String str) 获取字符串在这个StringBuffer第一次出现的位置
intlastIndexOf(String str)
intlength()
Stringsubstring(int start, int end) 这里返回的还是string
d,修改。就是替换,,改变原来的数据,不是添加
StringBufferreplace(start,end,string); ,把start到end-1的(包括end-1)位置上的数据换成你指定的string内容,,,,返回的还是原来的StringBuffer,,参考代码5
voidsetCharAt(int index, char ch) ; index位置上的数据替换成ch,,只替换一个,,返回值是void,,,ch类型不是string的原因是,StringBuffer里面的每一个数据都是char类型的字符,string里面元素也是char类型的,,,
e,反转。
StringBufferreverse();
f…将缓冲区中的指定数据存储到指定字符数组中。
voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
注意:插入数据后,数组的长度不能超过你之前定义的长度,就是你插入数据之后的数组长度不能超过5,否则报错,
代码:
StringBuffer sb = new StringBuffer("abcde");
sb.toString() 把缓冲区变成字符串
3…StringBuilder
StringBuffer是线程同步。
StringBuilder是线程不同步。提高效率
StringBuilder不安全,StringBuffer安全
以后开发,建议使用StringBuilder,,为什么不用安全的,比如一个容器我们在往里面存数据的时候.如果另外一个线程在做其他操作修改删除等等,那么这些数据在启动的时候会错乱那怎么办呢,就是我在操作的时候你不能动,一次只能有一个人执行,这就是同步,StringBuffer就是那么做的他是同步的安全的,
选择StringBuilder:如果是单线程程序的情况下StringBuffer效率低,因为他要判断锁,他添加一次要判断那个锁,删除还是要判断那个锁...判断锁很麻烦,StringBuilder不需要判断锁,这样就快捷
将StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。 就是多线程用StringBuffer,,单线程用StringBuilder,,多线程也可以不用StringBuffer,,就是自己加锁,lock就是同步了
4…基本数据类型的包装类
int有多种表现形式,把一个int的十进制的变成其他进制表现形式,这个转换只有int整数自己最清楚,把整数变成对象以后,对象里面有定义一些功能的话,,那指挥这个整数对象做事情就方便了
基本数据类型对象包装类。
byte Byte类,引用数据类型
short short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用,
就是用于基本数据类型和字符串类型之间做转换
基本数据类型转成字符串。
基本数据类型+"" 3+""=字符串3
static String toString(int i) 把整数变成字符串
返回一个表示指定整数的String 对象。
基本数据类型.toString(基本数据类型值);
如: Integer.toString(34);//将34整数变成"34";
4.2…字符串转成基本数据类
xxx a =Xxx.parseXxx(String); 这是一种静态转换方式, xxx是基本数据类型,Xxx基本数据类型的引用类型,比如 int a =Integer.parseInt("123");
static intparseInt(String s) 把字符串转换成int类型
4.3…
注意:Character 是没有parseXxx(String); 方法的,因为Character 本身就是字符..字符串中每个元素都是字符,他不需要转
Character类中的方法:
static chartoUpperCase(char ch)
使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。把一个字母变成大写
4.4….
Integer类中的方法:
static introtateRight(int i, int distance) distance右移的位数
返回根据指定的位数循环右移指定的 int 值的二进制补码表示形式而得到的值。
static StringtoBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoHexString(int i) 返回的是字符串,,这个字符串是 i 的十六进制表现形式的字符串
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoOctalString(int i) 返回的是字符串,,这个字符串是 i 的八进制表现形式的字符串
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
十进制转成其他进制。
toBinaryString();转为二进制
toHexString(); 转为十六进制
toOctalString(); 转为八进制
其他进制转成十进制。
parseInt(string,radix);