java中的API

来源:互联网 发布:学而知不足 出处 编辑:程序博客网 时间:2024/05/29 13:09


String类:

字符串是一个特殊的对象,字符串最大的一个特点就是:字符串一旦被初始化就不可以改变

例如

s1="abc" s2="abc",这两个对象指的是同一个,也就是说s1==s2返回true,将"abc"放在常量池中

对于String str="abc"和String str1=new String("abc");  str==str1返回false

对于这两个语句第一个语句产生一个对象,第二个语句产生两个对象new String以对象abc有一个对象,String类中复写了Object类中的equals方法该方法用于判断字符串是否相等,他与Object类中的equals方法是有所不同的,Object中的equals相当于==及比较对象引用有比较对象内容。

String类常见的操作:

1、获取

获取字符串的长度方法为length();

根据位置取位置上某个字符char charAt(int index)

根据字符获取该字符在字符串中的位置int indexOf(int ch);如果没有找到则返回-1

于此重载的方法有int indexOf(int ch,int fromIndex)其中fromIndex表示从此点开始找ch下标

还有就是与之对应的lastIndexOf()是指判断最后出现的位置

class StringGet{void get(){String s1="abcdcdaefasaaa";sop(s1.length());//获取长度,这个区别于数组中的length属性,因为字符串中的是方法sop(s1.charAt(3));//获取下标为3的字母sop(s1.indexOf('d'));//传入的是ASICC码在这被虚拟机将d强制转换了                sop(s1.indexOf('a',4));//从下标为4的字符起找到第一个为a的下标,且包括下标为4的字母        }void sop(Object obj){System.out.println(obj);}}

2、判断

判断某字符串是否存在于某个字符串中contains(String)

此方法和indexOf(String)不同之处是indexOf返回字符串第一次出现的位置,当找不到时返回-1

判断字符串中是否有内容isEmpty()原理就是判断长度是否为零

判断是否以某字符串开头startsWith()与之想对应的是endsWith()指的是否以某字符串是结尾

判断字符串的内容是否相同复写了Object类中的equals()方法还有一个是忽略大小写判断字符串是否相同equalsIgnoreCase()

以自然顺序对字符串进行对比大小compareTo()忽略大小写的是compareToIgnoreCase()它的返回值是int类型

3、转换

将字符数组转化成字符串

//其中sop为自定义的输出语句                sop(new String(ch));//将字符数组转化成字符串sop(new String(ch,4,2));//将字符串的一部分转化成字符串sop(String.copyValueOf(ch));//同上一sop(String.copyValueOf(ch,4,1));//同上二

将字符串转化成字符数组toCharArray()

将byte数组转化为字符串:String(byte[])   String(byte[],offset,count)offset指的是将字节转化为字符串的起始位置count指的是从offset起后数count个

将字符串转化为byte数组用getBtye()

将基本数据类型转化成字符串valueOf(int)     valueof(double)......

注意:字符串和字节数组转化是可以指定编码表的例如

String(byte[] bytes,Charset charset) getByte(Charset charset)
将字符串转化为大写toUpperCase()将字符串转化为小写toLowerCase()

4、替换

replace(char oldCahr, char newChar)对于此方法只是返回新的一个字符串,因为字符串一旦创建将不能再修改,元字符串保持不变还有是将部分字符改为某字符串replaceAll()、replaceFirst()

String s="dsadsadsasads";sop(s.replace('a','m'));//结果为dsmdsmdsmsmdssop(s.replaceAll("sad","zjd"));//结果为dzjdzjdsazjds,第一个参数可以传入正则公式,下面的也可以sop(s.replaceFirst("sad","zjd"))//结果为dzjdsadsasads
同过上面的结果也证明了没有改变s的值只是产生了一个新的字符串下面是正则的一些符号

元字符及其在正则表达式上下文中的行为:
\
将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^
匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline属性,^也匹配 ’\n’ ’\r’之后的位置。
$
匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline属性,$也匹配 ’\n’ ’\r’之前的位置。
*
匹配前面的子表达式零次或多次。
+
匹配前面的子表达式一次或多次。+等价于 {1,}
?
匹配前面的子表达式零次或一次。?等价于 {0,1}
{n} n
是一个非负整数,匹配确定的n次。
{n,} n
是一个非负整数,至少匹配n次。
{n,m} m
n均为非负整数,其中n <= m。最少匹配 n次且最多匹配 m次。在逗号和两个数之间不能有空格。
?
当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
.
匹配除 "\n"之外的任何单个字符。要匹配包括 ’\n’在内的任何字符,请使用象 ’[.\n]’的模式。
(pattern)
匹配pattern并获取这一匹配。
(?:pattern)
匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
(?=pattern)
正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
(?!pattern)
负向预查,与(?=pattern)作用相反
x|y
匹配 x y
[xyz]
字符集合。
[^xyz]
负值字符集合。
[a-z]
字符范围,匹配指定范围内的任意字符。
[^a-z]
负值字符范围,匹配任何不在指定范围内的任意字符。
\b
匹配一个单词边界,也就是指单词和空格间的位置。
\B
匹配非单词边界。
\cx
匹配由x指明的控制字符。
\d
匹配一个数字字符。等价于 [0-9]
\D
匹配一个非数字字符。等价于 [^0-9]
\f
匹配一个换页符。等价于 \x0c \cL
\n
匹配一个换行符。等价于 \x0a \cJ
\r
匹配一个回车符。等价于 \x0d \cM
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
\t
匹配一个制表符。等价于 \x09 \cI
\v
匹配一个垂直制表符。等价于 \x0b \cK
\w
匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’
\W
匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’
\xn
匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。
\num
匹配 num,其中num是一个正整数。对所获取的匹配的引用。
\n
标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n个获取的子表达式,则 n为后向引用。否则,如果 n为八进制数字 (0-7),则 n为一个八进制转义值。
\nm
标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有ispreceded by at least nm个获取得子表达式,则 nm为后向引用。如果 \nm之前至少有 n个获取,则 n为一个后跟文字 m的后向引用。如果前面的条件都不满足,若 n m均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm
\nml
如果 n为八进制数字 (0-3),且 m l均为八进制数字 (0-7),则匹配八进制转义值 nml
\un
匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。
5、切割

split(String regex);将字符串以regex方式分割字符串返回字符串数组

6、获取字符串的一部分subString(begin,end)包括begin但不包括end

7、去除空格

trim()将字符串两端去除空格

StringBuffer类:

它的长度是可以变化的,final修饰的类不能被继承,可以操作多个数据类型,可以通过toString()转化成字符串,是字符串缓冲区

1、存储

StringBuffer   append()将指定参数追加到sb数据结尾处

StringBuffer    insert(index,data)可以将data插入到index位置

StringBuffer sb=new StringBuffer("");StringBuffer sb1=sb.append("zjdzzzz");sop(sb.toString());//返回的结果为zjdzzzzsop(sb1);//返回结果为zjdzzzzsop(sb.insert(1,"data").toString());//返回的结果为zdatajdzzzzsop(sb.append(true).append(new char[]{'1','2','3','4'}).append("ssss")); //返回结果为zdatajdzzzztrue1234ssss这一方法叫做方法调用链

2、删除

delete(int start,int end)删除缓冲去中的数据

deleteCharAt(index)删除指定位置的字符

清空缓冲区可以用sb.delete(0,sb.length());

3、获取

charAt(index)返回下标为index的字母

indexOf(String)返回第一个为字符串String的下标

lastIndexOf(string)返回最后一个为字符串string的下标

length()获取字符长度

subString(start,end)获取从start开始到end结束的字符串不包括end

4、修改

StringBuffer只有一种replace格式replace(start,end,string)string表示替换的字符串

例如:

sop(sb.replace(0,5,"aaaa"));打印的结果为aaaajdzzzztrue1234ssss,本题是由上面的字符得到的

还有一种修改方式是setCharAt(index,char)将下表为index位置的字符改成char

5、反转

String reverse()代码演示

      String s="zjdzxmzjdzxm";  StringBuffer sb=new StringBuffer(s);  sb.reverse();  s=new String(sb);  sop(s);//输出结果为mxzdjzmxzdjz

6、将缓冲区中的指定部分存到数组中

getCahrs(srcBegin,srcEnd,Char[] dest,destBegin);例如:

       StringBuffer sb=new StringBuffer("zjdzjdzxmzxm");   char[] ch=new char[11];   for(int i=0;i<11;i++){   ch[i]='a';   }   sb.getChars(3,9,ch,2);   for(int i=0;i<11;i++){   sop(ch[i]);//结果为aazjdzxmaaa   }

JDK1.5新特性用StringBuilder实现了StringBuffer的全部功能,他们的用法一致只是StringBuilder是线程不安全的,但是效率高,而后者是安全的,但是效率低

基本数据类型对象的包装类:

基本数据类型                 引用数据类型

int                                     Integer

short                                Short

boolean                             Boolean

char                                   Character

byte                                   Btye

long                                  Long

double                             Double

float                                   Float

基本数据类型对象包装类的最常见的作用就是用于基本数据类型与字符串之间的转化

基本数据类型转化成字符串看String类的方法

字符串转化为基本数据类型

Integer.parseInt("123");

Long.parseLong("123");

十进制转化成其他进制

toBinaryString();转化为2进制

toOctalString();转化为8进制

toHexString();转化为16进制

自动装箱和拆箱:

例如:

Integer x=100,y=12;//自动装箱x=Integer.valueOf(100),y=Integer.valueOf(12)Integer m=x+y;//先拆箱再装箱先将x.intValue(100)+y.intValue(12)后将结果在装箱Integer.valueOf(x.intValue(100)+y.intValue(12))

对于引用数据类型有可能为空(null)因此要判断否则有可能出现空异常







原创粉丝点击