API总笔记.docx

上传人:b****4 文档编号:4904159 上传时间:2022-12-11 格式:DOCX 页数:37 大小:113.21KB
下载 相关 举报
API总笔记.docx_第1页
第1页 / 共37页
API总笔记.docx_第2页
第2页 / 共37页
API总笔记.docx_第3页
第3页 / 共37页
API总笔记.docx_第4页
第4页 / 共37页
API总笔记.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

API总笔记.docx

《API总笔记.docx》由会员分享,可在线阅读,更多相关《API总笔记.docx(37页珍藏版)》请在冰豆网上搜索。

API总笔记.docx

API总笔记

JavaAPI

●理解API辅助开放工具的使用

●String类与StringBuffer类

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

●集合类

●Hastable与Properties类

●System类与Runtime类

●Date、Calendar与DateFormat类

●Timer与TimerTask类

●Math与Random类

●学习API的方法

API的概念

API(ApplicationProgrammingInterface):

应用程序的接口。

 

01-03

String类和StringBuffer类

●位于java.lang包中。

●String类对象中的内容一旦被初始化就不能再改变。

●StringBuffer类用于封装内容可以改变的字符串。

用toString方法转换成String类型

Sringx=”a”+4+”c”,编译时等效于:

Stringx=neStringBuffer().append(“a”).append(4).append(“c”);

●字符串常量(如”hello”)实际上是一种特殊的匿名String对象。

比较下面两种情况的差异:

Strings1=”hello”;Strings2=”hello”;

Strings1=newString(“hello”);Strings2=newString(“hello”);

编程实例:

逐行读取键盘输入,直到输入内容为”bye”时,结束程序。

当Strings1=”hello”,Strings2=”hello”;那么s1==s2成立;他们都是应用同一个内存空间,以节省内存资源,这是由String类的特殊性来决定的。

当Strings1=newString(“hello”);Strings2=newString(“hello”);的时候,因为他们已经各自创建了一个自己的内存空间,所以s1≠s2的,内存地址不一样!

String类的常用成员方法

●构造方法:

String(byte[]bytes,intoffset,intlength)

●equalslgnorgCase方法

●indexOf(intch)方法

●substring(intbeginIndex)方法

substring(intbeginIndex,intendIndex)

publicString(byte[] bytes,

int offset,

int length)

通过使用平台的默认字符集解码指定的byte子数组,构造一个新的String。

新String的长度是字符集的函数,因此可能不等于该子数组的长度。

当给定byte在给定字符集中无效的情况下,此构造方法的行为没有指定。

如果需要对解码过程进行更多控制,则应该使用CharsetDecoder类。

参数:

bytes-要解码为字符的byte

offset-要解码的第一个byte的索引

length-要解码的byte数

抛出:

IndexOutOfBoundsException-如果offset和length参数索引字符超出bytes数组的范围

将字节数组的的内容转换成字符串,从字节数组中的第offset个元素节开始,到length个数的元素的内容作为新的字符串对象。

例子:

classReadLine{

publicstaticvoidmain(Stringargs[])

{

//定义一个不能超过1024个字节的内容的数组,此数组来吸收字符。

byte[]buf=newbyte[1024];

//字符串对象

StringstrInfo=null;

intpos=0;

intch=0;

System.out.println("请输入内容:

");

while(true)

{

try{

//读取一个字节的数据(ch为什么是int类型?

/*这里的System.in.read()方式是运用了java.io.InputStream类中的read()方法。

read()方法从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。

以整数形式返回实际读取的字节数。

在输入数据可用、检测到文件末尾或者抛出异常前,

此方法一直阻塞。

如果b的长度为0,则不读取任何字节并返回0;否则,尝试读取至少一个字节。

如果因为流位于文件末尾而没有可用的字节,则返回值-1;否则,至少读取一个字节

并将其存储在b中。

将读取的第一个字节存储在元素b[0]中,下一个存储在b[1]中,依次类推。

读取的字节数

最多等于b的长度。

设k为实际读取的字节数;这些字节将存储在b[0]到b[k-1]的元素中,

不影响b[k]到b[b.length-1]的元素。

类InputStream的read(b)方法的效果等同于:

read(b,0,b.length)

参数:

b-存储读入数据的缓冲区。

返回:

读入缓冲区的总字节数;如果因为已经到达流末尾而不再有数据可用,则返回-1。

抛出:

IOException-如果不是因为流位于文件末尾而无法读取第一个字节;如果输入流已关闭;

如果发生其他I/O错误。

NullPointerException-如果b为null。

*/

ch=System.in.read();

}

catch(Exceptione)

{

e.printStackTrace();

}

switch(ch)

{

case'\r':

//当回车的时候,\r表示回车

break;

case'\n':

//\n表示换行;

/*这个字符串是从字符数组内容中读取来的,下句的意思是:

将字符数组buf中

从第0个位置开始读取,到pos这个位置的字符为止的字符转换为字符串。

*/

strInfo=newString(buf,0,pos);

/*String类型的字符串要与别的字符串的内容对比,

*必须用到equalsIgnorCase方法来对比,如果是

*等号来对比,则对比的是字符串内存~!

内存是不相等的所以切记!

equalsIgnoreCase()方法是将此String与另一个String比较,不考虑大小写。

如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),

则认为这两个字符串是相等的。

*/

if(strInfo.equals("bye"))

{

return;

}

else

{

System.out.println(strInfo);

pos=0;//当打印完一个字符串之后,字符串的位置要回到0这个位置!

以便下一行输入!

break;

}

default:

buf[pos++]=(byte)ch;

}

}

//System.out.println("hello".indexOf('o'));

}

}

equalsIgnoreCase

publicbooleanequalsIgnoreCase(String anotherString)

将此String与另一个String比较,不考虑大小写。

如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。

在忽略大小写的情况下,如果下列至少一项为true,则认为c1和c2这两个字符相同。

∙这两个字符相同(使用==运算符进行比较)。

∙对每个字符应用方法Character.toUpperCase(char)生成相同的结果。

∙对每个字符应用方法Character.toLowerCase(char)生成相同的结果。

参数:

anotherString-与此String进行比较的String。

返回:

如果参数不为null,且这两个String相等(忽略大小写),则返回true;否则返回false。

indexOf

publicintindexOf(int ch)

返回指定字符在此字符串中第一次出现处的索引。

如果在此String对象表示的字符序列中出现值为ch的字符,则返回第一次出现该字符的索引(以Unicode代码单元表示)。

对于0到0xFFFF(包括0和0xFFFF)范围内的ch的值,返回值是

this.charAt(k)==ch

为true的最小k值。

对于其他ch值,返回值是

this.codePointAt(k)==ch

为true最小k值。

无论哪种情况,如果此字符串中没有这样的字符,则返回-1。

参数:

ch-一个字符(Unicode代码点)。

返回:

在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回-1。

substring

publicStringsubstring(int beginIndex)

返回一个新的字符串,它是此字符串的一个子字符串。

该子字符串从指定索引处的字符开始,直到此字符串末尾。

示例:

"unhappy".substring

(2)returns"happy"

"Harbison".substring(3)returns"bison"

"emptiness".substring(9)returns""(anemptystring)

参数:

beginIndex-起始索引(包括)。

返回:

指定的子字符串。

抛出:

IndexOutOfBoundsException-如果beginIndex为负或大于此String对象的长度。

substring

publicStringsubstring(int beginIndex,

int endIndex)

返回一个新字符串,它是此字符串的一个子字符串。

该子字符串从指定的beginIndex处开始,直到索引endIndex-1处的字符。

因此,该子字符串的长度为endIndex-beginIndex。

示例:

"hamburger".substring(4,8)returns"urge"

"smiles".substring(1,5)returns"mile"

参数:

beginIndex-起始索引(包括)。

endIndex-结束索引(不包括)。

返回:

指定的子字符串。

抛出:

IndexOutOfBoundsException-如果beginIndex为负,或endIndex大于此String对象的长度,或beginIndex大于endIndex。

 

01_04

因为API接口中很多引用的参数都是(object类型)对象!

所以我们要用到包装类把基本数据类型转换成对象!

前面的代码在每次运行的时候,会先将sb转换成stringBuffer对象,然后加上后面的星号,然后生成一个新的sb对象,然后如此循环不断生成新的对象浪费资源。

而后边的那个就不会,只创建一个sb对象,然后就不断的在sb对象后面追加星号。

publicclassTestInteger{

publicstaticvoidmain(String[]args){

/*以下三种办法都是将字符串转换成整数的三种办法!

*/

//intintValue()以int类型返回该Integer的值。

intw=newInteger(args[0]).intValue();

/*staticintparseInt(Strings)

*将字符串参数作为有符号的十进制整数进行解析。

*/

inth=Integer.parseInt(args[1]);

/*staticIntegervalueOf(Strings)

返回保存指定的String的值的Integer对象。

下面那句因为

返回的是Integer对象,所以要用intValue()方法转换成int类型的*/

//inth=Integer.valueOf(args[1]).intValue();

for(inti=0;i

{

StringBuffersb=newStringBuffer();

for(intj=0;j

{

sb.append("*");

}

System.out.println(sb.toString());

}

}

}

 

01-05

Vector使用的时候有考虑到线程同步的问题,即使有一个线程,它也会有监视器去监视,所以会出现大的开销!

ArrayList使用时是没有考虑到线程同步的问题的,所以编写程序时要使用这个类就要考虑是否有线程同步的问题了!

就因为这个类没有线程同步问题考虑,所以运行时的效率快些。

Collection接口是Set和List这两个接口的父类。

 

importjava.io.IOException;

importjava.util.*;

//要使用到Vector和Enumeratrion类,这两个类都在java.until.*的包里

publicclassTestVector{

publicstaticvoidmain(String[]args){

//System.out.println("pleaseenternumber:

");

intb=0;

/*Vector类可以实现可增长的对象数组。

与数组一样,

*它包含可以使用整数索引进行访问的组件。

*但是,Vector的大小可以根据需要增大或缩小,

*以适应创建Vector后进行添加或移除项的操作。

即创建了一个可伸缩的空间!

*/

Vectorv=newVector();

System.out.println("pleaseenternumber:

");

while(true)

{

try{

b=System.in.read();

}catch(IOExceptione){

e.printStackTrace();

}

if(b=='\r'||b=='\n')

break;

else

{

//注意:

输入的数据都是ASICII码表中对应的数字!

所以要减字符0

intnum=b-'0';

/*addElement方法是将指定的组件添加到此向量的末尾,将其大小增加1。

*如果向量的大小比容量大,则增大其容量。

此方法的功能与add(E)

*方法的功能完全相同(后者是List接口的一个方法)因为传入的是组件,

*所以num必须要转换成Integer对象类型!

*/

v.addElement(newInteger(num));

}

}

intsum=0;

/*Enumeration是一个接口,elements()方法是返回此向量的组件的枚举。

*返回的Enumeration对象将生成此向量中的所有项。

*生成的第一项为索引0处的项,然后是索引1处的项,依此类推。

*/

Enumeratione=v.elements();

/*booleanhasMoreElements()测试此枚举是否包含更多的元素。

*测试此枚举是否包含更多的元素。

返回:

当且仅当此枚举对象至少还包含一个可提供的元素时,才返回true;否则返回false。

*/

while(e.hasMoreElements())

{

/*nextElement

EnextElement()如果此枚举对象至少还有一个可提供的元素,则返回此枚举的

下一个元素。

返回:

此枚举的下一个元素。

抛出:

NoSuchElementException-如果没有更多的元素存在。

*/

IntegerintObj=(Integer)e.nextElement();

//intValue():

将传入的对象以int类型的方式传入

sum+=intObj.intValue();

}

System.out.println("sum="+sum);

}

}

 

importjava.util.*;

publicclassTestSort

{

publicstaticvoidmain(Stringargs[])

/*ArrayList()构造一个初始容量为10的空列表。

*/

ArrayListal=newArrayList();

al.add(newInteger

(1));

al.add(newInteger(4));

al.add(newInteger(3));

/*publicStringtoString()返回此collection的字符串表示形式。

*该字符串表示形式由collection元素的列表组成,

*这些元素按其迭代器返回的顺序排列,并用方括号("[]")括起来。

*相邻元素由字符","(逗号加空格)分隔。

通过String.valueOf(Object)

*可以将元素转换成字符串。

覆盖:

类Object中的toString

返回:

此collection的字符串表示形式*/

System.out.println(al.toString());

/*Collections类中的方法都是静态的

sort(Listlist,Comparator

superT>c)

根据指定比较器产生的顺序对指定列表进行排序。

可以用来排序,但是返回的类型是静态的!

*/

Collections.sort(al);

System.out.println(al.toString());

}

}

上段程序运行结果是:

[1,4,3]

[1,3,4]

 

01_06

Hashtable类可以起到搜索的作用!

publicclassMyKey

{

privateStringname=null;

privateintage=0;

privateStringsex=null;

publicMyKey(Stringname,intage,Stringsex)//构造函数没有返回类型

{

this.name=name;

this.age=age;

this.sex=sex;

}

publicStringtoString()

{

returnname+","+sex+","+age;

}

/*Object类中的equals(Objectobj)方法

*publicbooleanequals(Objectobj)

指示其他某个对象是否与此对象“相等”。

*/

publicbooleanequals(Objectobj)

{

//instanceof用于比较两个对象是否相同,这里面用的是对象的比较~

if(objinstanceofMyKey)

{

MyKeyobjTem=(MyKey)obj;

if(name.equals(objTem.name)&&age==objTem.age&&sex.equals(objTem.sex))

{

returntrue;

}

else

{

returnfalse;

}

}

else

{

returnfalse;

}

}

}

importjava.util.*;

publicclassHashtableTest{

publicstaticvoidmain(String[]args)

{

Hashtablenumbers=newHashtable();

/*publicVput(Kkey,Vvalue)将指定key映射到此哈希表中的指定value。

键和值都不可以为null。

通过使用与原来的键相同的键调用get方法,可以获取相应的值。

参数:

key-哈希表的键

value-值

返回:

此哈希表中指定键的以前的值;如果不存在该值,则返回null

抛出:

NullPointerException-如果键或值为null*/

numbers.put(newMyKey("zhangsan",18,"boy"),newInteger

(1));

numbers.put(newMyKey("lisi",18,"boy"),newInteger

(2));

numbers.put(newMyKey("wangwu",15,"girl"),newInteger(3));

numbers.put(newMyKey("zhangsan",17,"boy"),newInteger(4));

/*HashTable类中的keys方法

publicEnumerationkeys()返回此哈希表中的键的枚举。

返回:

此哈希表中的键的枚举。

*/

Enumeratione=numbers.keys();

/*Enumeration接口中的hasMoreElements抽象方法

booleanhasMoreElements()测试此枚举是否包含更多的元素。

返回:

当且仅当此枚举对象至少还包含一个可提供的元素时,才返回true;否则返回false。

*/

while(e.hasMoreElements())

{

/*Enumeration接口的nextElement()方

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1