Java工具类.docx
《Java工具类.docx》由会员分享,可在线阅读,更多相关《Java工具类.docx(35页珍藏版)》请在冰豆网上搜索。
Java工具类
常用类
Object类
它是Java所有类的根类.所以Java的所有对象都拥有Object类的成员.
1.一般方法
booleanequals(Objectobj)//本对象与obj对象相同,返回true
StringtoString()//返回本对象的字符串表达形式,默认返回类名称和十六进制数的
编码,即:
getClass().getName+’@’+Integer.toHexString(hashCode());
如果要显示自定义的对象,则需要覆盖这个方法。
protectedvoidfinalize()throwsThrowable//对象销毁时被自动调用,
protectednativeinthashCode()
返回对象的Hash码,Hash码是表示对象的唯一值,故Hash码相同的对象是同一对象。
2.控制线程的方法
finalnativevoidwait()//等待对象
finalnativevoidnotify()//通知等待队列中的对象进入就绪队列
finalnativevoidnotifyAll()//通知所有处于等待队列中的对象进入就绪队列
3.关于Object类的几点说明:
3.1.native<方法>是指用C++语言编写的方法。
3.2.“==”运算符一般用于基本数据类型的比较,如果用于两个引用对象的比较,则
只有当两个引用变量引用同一个对象时,才返回true,否则返回false.
Strings1=newStrng(“java”);
Strings2=newStrng(“java”);
System.out.pritnln(s1==s2);//显示false
但是,假如不使用new关键字,创建String型对象s3,s4,则它们引用的是同一个对象。
Strings3=“java”;
Strings4=“java”;因为没有使用new关键字,所以s4引用既存的对象
System.out.pritnln(s3==s4);//显示true,
3.3.比较对象内容时,使用equals()函数
Object类的equals()定义
Publicbooleanequals(Objectobj){
return(this==obj);
}
由于String类覆盖了继承自Object类的equals()方法,它比较的是引用对象的内容.
所以,没有覆盖equals()方法的类的对象使用该方法与另一对象进行比较时,永远返
回false;只是因为此时进行比较调用的是Object的equals方法.
4.Object引用型变量
Object引用型变量可以用来引用所有的对对象.
Object[]obs=newObject[3];
obs[0]=newStrng(“12345”);//将String对象赋给obs[0]
obs[0]=newBoolean(true);
obs[0]=newInteger(100);
5.toString()方法
该方法返回本对象的字符串表示.当需要显示子类对象时,系统自动调用该对象的toString()方法,如果该对象没有覆盖祖先类的toString()方法,则系统默认调用Object的这个方法,从而显示类的完整路径名称.反之,将按子类的toString()方法显示其内容.
classStudent{
Strngname;
PublicStudent(){
this.name=”洋洋”
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Studentst=newStudent();
System.out.println(st);
}
}
//子类覆盖toString()
classStudent{
Strngname;
PublicStudent(){
this.name=”洋洋”
}
publicStringtoString(){
retrun“你的姓名:
”+this.name;
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Studentst=newStudent();
System.out.println(st);//显示
}
}
6.类的层级图
A:
继承自Object类的成员+
B:
继承自Object类的成员++
C:
继承自Object类的成员+++
D:
继承自Object类的成员+++
Character类
这是一个字符包装器类,它封装了对字符的操作
一.构造函数
Character(charc)
二.静态方法:
1.检查是否为某类字符
staticbooleanisLetter(char ch)返回true,如果ch是字母字符
staticbooleanisDigit(char ch)返回true,如果ch是数字字符
staticbooleanisLetterOrDigit(char ch)返回true,如果ch是字母或数字字符
staticbooleanisLowerCase(char ch)//返回true,表示ch为小写字母
staticbooleanisUpperCase(char ch)//返回true,表示ch为大写字母
staticbooleanisSpaceChar(char ch)//返回true,表示ch为空格
2.大小写字符转换
staticchartoLowerCase(char ch)//转换字符c为小写
staticchartoUpperCase(char ch)//转换字符c为大写
String类
String是一种引用类型。
String是一种使用频率很高的数据类型.
1.构造函数:
String(Stringoriginal)
String(char[]cc)
String(char[]chars,intstartIndex,intcharCount)
String(byte[]chars)//使用平台默认字符编码,用byte[]构造一个String对象
String(byte[]chars,intstartIndex,intcharCount)
String(StringBuffersb)
2.静态函数:
StringvalueOf(objectobj)将任意类型转换为字符串。
3.操作函数:
3.1.类型转换
char[]toCharArray();返回字符串对应的字符数组
3.2.获得字符
charcharAt(intindex)返回索引为index位置的字符
3.3.删除空白字符
Stringtrim()删除字符串前后空格
3.4.分裂字符串
String[]splite(Stringrex)按分隔字符串进行分隔,返回字符串数组
说明:
如果字符串用英文句号”.”分隔,则需要用”\\.”表示,例如:
Strings="2007.10.18";
String[]sArray=s.split("\\.");因为英文句号”.”为正则表达式的特殊字符
3.5.查找字符串
booleanstartsWith(Strings)
在本串开始部分查找是否有与s匹配的串。
返回true,表示匹配,
booleanendsWith(Strings)
在本串末尾部分查找是否有与s匹配的串。
返回true,表示匹配,
booleanequals(Objectobj)true表示本串与obj串内容相等
booleanequalsIgnoreCase(StringanotherString)
忽略大小写比较,返回true表示本串与obj串内容相等
intindexOf(Strings)
从本串开始部分查找是与s匹配的串。
返回s在本串中的起始位置
intlastIndexOf(Strings)
从本串末尾查找是与s匹配的串。
返回s在本串中的起始位置
3.6.字符串比较
intcompareTo(StringanotherString)
返回负数表示本串0表示本串等于anotherString;
正数表示本串>anotherString;
intcompareToIgnoreCase(StringanotherString)忽略大小写比较
返回负数表示本串0表示本串=anotherString;
正数表示本串>anotherString;
3.7.取子字符串
Stringsubstring(intstartPos,intendPos)
返回startPos――endPos之间的字符串(不含endPos位置的字符)。
Stringsubstring(intstartPos)返回从startPos开始直到串尾的全部字符
3.8.大小写转换
StringtoLowerCase()转换为小写字母
StringtoUpperCase()转换为大写字母
3.9.拷贝
getChars(intStartPos,intendPos,char[]c,intstartIndex)拷贝startPos――endPos之间的字符串(不含endPos位置的字符)到字符数组c中,从索引startIndex开始存放
getBytes(intStartPos,intendPos,byte[]b,intstartIndex)拷贝startPos――endPos
之间的字符串(不含endPos位置的字符)到字节数组b中,从索引startIndex
开始存放byte[]getBytes();返回byte数组
bye[]getBytes()使用平台默认字符编码,将当前字符串转换为一个byte数组
3.10.获得串长度
intlength()返回串长度(字符个数)
3.11.替换子串
Stringreplace(charoldChar,charnewChar)
将本串中全部oldChar字符替换为newChar字符,并返回替换后的字符串
StringreplaceAll(StringoldStr,StringnewStr)
将本串中全部oldStr串替换为newStr串,并返回替换后的字符串,
当newStr为空串时,可删除oldStr
StringreplaceAll(Stringregex,Stringreplacement)
将所有regex用replacement替换,并返回替换后的字符串
StringreplaceFirst(Stringregex,Stringreplacement)
将第一个regex用replacement替换,并返回替换后的字符串
3.12.类型转换
staticintInteger.parseInt(Strings);//转换为int类型
staticlongLong.parseInt(Strings);//转换为int类型
staticdoubleDouble.parseInt(Strings);//转换为int类型
说明:
上述类型的转换如果不成功,将抛出NumberFormatException异常。
3.13.匹配
booleanmatches(Stringpattern)//pattern为正则表达式。
当字符串与pattern匹配时,返回true
常见的匹配模式:
A.匹配超链接标记.*?
[‘\”]?
.*?
>
B.匹配e-mail^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+([.][a-z0-9-]+)*$
4.字符串的连接
用运算符“+”进行两个字符串的连接。
如:
Strings1=”sun”;
Strings2=”company”;
Strings=s1+s2;//此时s内容为:
suncompany
5.关于String的几点说明:
5.1.由于String的特殊性,所以系统处理这种类型时,内部使用了String池,
用意提高性能;当用赋值号为一个字符串赋值时,系统首先在String池
中查找,如果找到,则直接将其引用赋值给目标变量,如果没有找到,则
申请一个新的串,并将其引用赋值给目标变量,同时将这个新串放到String
池中。
5.2.用”+”连接两个字符串,总是产生一个新的串。
5.3.如果频繁使用”+”运算符进行字符串链接,则使用StringBuffer或StringBuilder
可以大大提高性能。
思考:
1.设计一个方法,booleanisNumeric(StringsNumber)
用以检查输入的字符串是否全由数字字符组成,如是,返回true,否则,返回false.
1.编写一个方法,使用异或运算,对输入字符串加密,并输出密文。
调用同一函数,输入密文,同时输出明文。
2.编写isLike()方法,用以判断字符串是否匹配。
“a*”:
以字符’a’开头的字符串
“*bc*”:
包含字符串’bc’的字符串
“A?
?
”:
以字符’A’开头,且长度为3的字符串
“?
A?
”:
以字符’A’居其间,且长度为3的字符串
classMyString{
Stringstr;
//其它方法或成员定义
//构造函数
publicBooleanisLike(Stringregex){
……
}
}
newMyString(“abcd”).isLike(“a*”)--true
newMyString(“ABCD”).isLike(“*C*”)--true
newMyString(“ABCD”).isLike(“ABC?
”)--true
3.设计一个静态方法,返回字符c重复n次的字符串
publicstaticStringsameChar(charc,intn)
4.设计一个方法,将字符串s左边用字符fillChar填充,使其最终长度为length
publicleftPadding(Strings,intlength,charfillChar)
5.设计一个方法,将字符串s右边用字符fillChar填充,使其最终长度为length
publicrightPadding(Strings,intlength,charfillChar)
6.设计一个方法,实现返回字符串左边n个字符。
7.设计一个方法,实现返回字符串右边n个字符。
8.使用if语句和switch语句判断手机号码的种类.手机号码为11位,各位全部位数字,且
前两位为13,第三位数字为5---9时属于移动手机号码,为0,1时属于连通GSM手机号码,为3时属于联通CDMA手机号码,为2,4时无效.
9.设计一方法,输入十进制数,返回12进制字符串。
10.设计一个类,封装十六进制操作。
11.编写一方法,输入一个字符串,输出布尔量。
当该字符串是回文时,返回true,否则,返回false
12.输入一个英文字符串,统计出其中各字符出现的次数,并以下列样式输出:
a=?
b=?
c=?
d=?
e=?
f=?
g=?
h=?
i=?
j=?
13.输入一个英文字符串,统计出其中各字符出现的次数,并以下列样式输出:
a=?
b=?
c=?
d=?
e=?
f=?
g=?
h=?
i=?
j=?
14.设计一个星座类,并为其添加一个带参数的构造函数,
classConstellation{
privateCalendarbirthday;
publicConstellation(Stringbirthday){
}
StringgetConstellation(){返回星座
staticpublicStringgetConstellation(Stringbirthday)//返回星座
}
intgetBornYear(){
}
intgetBornMonth(){
}
intgetBornDay(){
}
}
出生日期与星座关系如下:
1.20---2.18水瓶座
2.19----3.20双鱼座
3.21----4.19.牧羊座
4.20---5.20金牛座
5.21-----6.21双子座
6.22.----7.22巨蟹座
7.23----8.22狮子座
8.23----9.22处女座
9.23.----10.23天秤座
10.24-----11.22天蝎座
11.23---12.21射手座
12.22.----1.19山羊座
15.编写一个计算英文句子中最长单词的长度(字符数),假设该英文句子中只含有字母和
空格,句子以”.”结尾
16.巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时,东京时间比北京时间早2个小时,设计一个方法,根据输入的北京时间输出相应的巴黎时间,纽约时间和东京时间。
如当前北京时间为8点,则巴黎时间为1点,纽约时间为前一天20点,东京为10点。
16.删除字符串s中所有的字串childStr.
17.写一函数,用于删除字符串左边的特定字符,如果删除字符串右边的特定字符呢?
StringBuffer类
前已述及,String类创建的字符串是不可修改的,一般用于固定场合。
如果要对字符串进行动态增减,则用StringBuffer类,因此,StringBuffer又称动态字符串。
1.构造函数
StringBuffer()
StringBuffer(intiniCapacity)
StringBuffer(Strings)
2.操作函数:
2.1.获得长度
intlength()返回字符串的个数
2.2.添加对象
append(objectobj)//在尾部添加对象
insert(intStartPos,objectobj)在StartPos位置插入对象obj
2.3.返回字符串
StringtoString()
2.4.删除子串
StringBufferdelete(intstart,intend)
删除从start开始到end-1之间的字符串,并返回当前对象的引用
StringBufferdeleteCharAt(intindex)
删除索引为index位置处的字符,并返回当前对象的引用
2.5.获得字符
charcharAt(intindex)返回索引处的字符
2.6.修改字符
voidsetCharAt(intindex,charc)设置索引index处的字符为c
2.7.获得子串
Stringsubstring(intstartIndex)返回从startIndex开始直到最后的全部字符
Stringsubstring(intstartIndex,intendIndex)返回范围startIndex--endIndex的字符串
2.8.反转字符串
StringBufferreverse()将该对象实体中的字符序列反转,并返回当前对象的引用。
2.9.替换子串
Stringreplace(intstartIndex,intendIndex,StringnewStr)
用newStr替换当前对象从startIndex到endIndex-1之间的字符序列,并返回对
当前对象的引用。
练习:
1.使用StringBuffer类,构建字符堆栈
publicclassCharStack{
privateStringBufferstack;
publicCharStack(){
statck=newStringBuffer();
}
publicCharStack(intcapacity){
statck=newStringBuffer(capacity);
}
publicvoidpush(charc){
//将字符压入堆栈……
}
publicintpop(){
//将字符弹出堆栈……
}
publicchar[]list(){
//返回堆栈数组……
}
publicStringtoString(){
//将堆栈中的字符转换为字符串…
}
}
2.编写一个检查java表达式中括号是否成对出现的函数。
例如:
Stringexp1=Math.sqrt(p*(p-a[0])*(p-a[1])*(p-a[2]));中括号是配对的,而
Stringexp2=Math.sqrt(p*(p-a[0]*(p-a[1])*(p-a[2]));中括号是不配对的
StringBuilder类
该类在jdk1.4之后的版本才支持,它实现了与StringBuffer同样的接口,所以它们的操作相同,但是,由于StringBuilder没有实现同步机制,而StringBuffer实现了同步,所以StringBuilder比StringBuffer具有更高的性能。
适合于对字符串进行动态增减的情形。
三.StringTokenizer类
该类用于分析字符串,特别适合于一个字符串用若干特殊字符分隔的情况。
1.构造函数:
StringTokenizer(Stringstr)用缺省的分隔符(空格,回车,换行)分隔字符串
StringTokenizer(Stringstr,Stringdelim)用指定的分隔符delim分隔
2.属性函数:
countTokens();返回分隔后的字符串总数
3.操作函数:
booleanhasMoreElements()true表示还有元素
ObjectnextElement()返回下一个元素
booleanha