JavaAPI


JavaAPI

 

API全称是Appliction ProgrammingInterface(应用程序接口),简单理解就是我们编程时常用的函数。

 

一.String类和StringBuffer类

 

对字符串的操作常用两个类String类和StringBuffer类,String类的内容一经初始化不可以改变,而StringBuffer类的内容可以改变.

String类
final class String
没有子类
.

字符串是特殊的对象,一旦被初始化就不可以被改变。

String s1 = "abc";
String s2 = new String("abc");
s1==s2;s1.equals(s2);false;ture;
String
中的equals方法被复写了,定义了自己的内容,他就判断里面的字符串内容是否相同。

s1
和s2的区别。(面试)
s1有在内存中一个对象。s2在内存中有两个对象。newString(),"abc"两个对象
.

常量池。

在String类中,当建立其对象时会在常量池中开辟空间,如果再建立起的对象中的字符串相同时,不会在常量池中重新开辟新的空间。如果相同的话这两个对象的引用指向同一个对象。
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
s1==s2;s1==s3;false;true;

String
类是用于描述字符串事物的。它提供了多个方法对字符串进行操作。
常见的操作。
1,获取
1.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字符串在字符串中出现的位置。
1.4反向开始搜索ch字符串出现的位置。
int lastIndexOf(int ch);但字符串角码不会变的。
2,判断
2.1字符串中是否包含某一个子串。
boolean contains(str);
特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。
if(str.indexOf("aa")!=-1)
而且该方法即可以判断,又可以获取出现的位置。
2.2字符中是否有内容。
boolean isEmpty();原理就是判断长度是否为0。不为0返回fasle。
2.3字符串是否是以指定内容开头。
*
boolean startsWith(str);
2.4字符串是否是以指定内容结尾。
*
boolean endsWith(str);
2.5获取字符串内容是否相同.复写了Object类中的equals方法
.
boolean equals(str);
2.6判断内容是否相同,并忽略大小写
.
boolean equalsIgnoreCase();
3,转换

3.1将字符数组转成字符串
.
构造函数:
String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。

静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count);
static String valueOf(char[])
3.2
将字符串转成字符数组。
**
char[] toCharArray();
3.3 将字节数组转成字符串。

String(byte[])
String(byte[],offset,count):
将字节数组中的一部分转成字符串。
3.4 将字符串转成字节数组。
byte[] getBytes():
3.5
将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
3+"";String.valueOf(3);

特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4,替换
String replace(oldchar,newchar);
5
,切割 返回的是字符串类型的数组
.
String[] split(regex);
6,子串。获取字符串中的一部分。传入角标
.
String substring(begin);
String substring(begin,end);从头不包括尾
(0,str.length())
7,转换,去除空格,比较。

7.1 将字符串转成大写或者小写。
String toUpperCase();
String toLowerCase();
7.2
将字符串两端的多个空格去除。
String trim();
7.3
对两个字符串进行自然顺序的比较。
int compareTo(string);

StringBuffer
是字符串缓冲区。

是一个容器。面盆理论.
1,长度是可变化的
.
2,可以同时操作多个数据类型
.
3,最终会通过tonString方法变成字符串
.
增删改查

1,存储。
StringBuffere append();将指定的数据作为参数添加到已有数据的结尾处
.
StringBuffe insert(index,角标);可以将指定的数据插入到指定的角标位
.
2,删除。

StringBuffer delete(statr,end);删除缓冲区的数据,包含头不含尾
.
sb.delete(o,sb.length());清空缓冲区
.
StringBuffer deleteCharAt(index);删除指定位置的数据
.
sb.delete(2);等同于
sb.delete(2,3);
3,获取。

char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end)
4
,修改。
StringBuffer replace(start,end,string);
void setCharAt(index,ch);
5,
反转
.*
StringBuffer reverse();
6,将缓冲区中指定的数据存放到指定字符数组中
.
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);

StringBuilder 在jdk1.5之后出现的
.
跟StringBuffer差不多,不能保证安全

 

二.基本数据类型与对应的包装类和String类型的转换

 

基本数据类型不是对象类型,在需要使用对象类型的时候就需要进行转换。这里通过int与Integer类型为例。

int->Integer --Integer的构造函数

Integer i=new Integer(1);

Integer->int --Integer对象的intValue()方法

Integer i=new Integer(1);

int x=i.intValue();

整型与字符串类型的转换

String->int --Integer的parseInt()方法

int a=Integer.parseInt("123");

String->Integer --Integer的valueOf()方法

Integer a=Integer.parseInt("123");

int,Integer->String --toString方法

 

三.集合类

 

用于存储一组对象,其中的每个对象都称为元素,经常会用到的有Vector,Enumeration,ArrayList,Collection,Iterator,Set,List等集合类和接口。

1、Vector类与Enumeration接口。

编程列举:将键盘上输入的一个数字序列中的每位数字存储在Vector对象中,然后在屏幕上打印出每位数字相加的结果,例如,输入32,打印出6,输入1234,打印出10.。

import java.util.* ;

import java.io.IOException ;

public class ApiDemo02{

public static void main(String[] args){

Vector v = new Vector() ;

int b = 0 ;

System.out.println("Please enter number:") ; //每次只能从键盘上读取一个字符

while(true){

try{

b = System.in.read() ;

}catch(IOException e){

e.printStackTrace() ;

}

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

break ;

}else{

int num = b-'0' ; //一个小算法得到数字字符锁对应的那个 整数

v.addElement(new Integer(num)) ; //用integer来包装num

}

}

int sum = 0 ;

Enumeration e = v.elements() ;

while(e.hasMoreElements()){ //判断是否还存在元素

Integer intObj = (Integer)e.nextElement() ; //返回指示器正指向的元素对象,然后再让指示器指向下一个对象

sum += intObj.intValue() ;

}

System.out.println(sum) ;

}

}

2、Collection接口与Iterator接口。

import java.util.* ;

import java.io.IOException ;

public class ApiDemo{

public static void main(String[] args){

ArrayList c = new ArrayList() ;

int b = 0 ;

System.out.println("Please enter number:") ; //每次只能从键盘上读取一个字符

while(true){

try{

b = System.in.read() ;

}catch(IOException e){

e.printStackTrace() ;

}

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

break ;

}else{

int num = b-'0' ; //一个小算法得到数字字符锁对应的那个整数

c.add(new Integer(num)) ; //用integer来包装num

}

}

int sum = 0 ;

Iterator e = c.iterator() ;

while(e.hasNext()){ //判断是否还存在元素

Integer intObj = (Integer)e.next() ; //返回指示器正指向的元素对象,然后再让指示器指向下一个对象

sum += intObj.intValue() ;

}

System.out.println(sum) ;

}

}

3、Collection,Set,List的区别如下:

-Collection各元素对象之间没有指定顺序,允许有重复元素和多个null元素对象

-Set各元素对象之间没有指定顺序,不允许有重复元素,最多允许有一个null对象。

-List各元素对象之间有指定顺序,允许有重复元素和多个null对象。

import java.util.* ;

import java.io.IOException ;

public class ApiDemo03{

public static void main(String[] args){

ArrayList al = new ArrayList() ;

al.add(new Integer(1)) ;

al.add(new Integer(3)) ;

al.add(new Integer(2)) ;

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

Collections.sort(al) ;

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

}

}

4、Hashtable类

Hashtable不仅可以像vector一样动态存储一系列的对象,而且对存储的每一个对象(称为值)都要安排另外一个对象(称为关键字)与之相关联。

Hashtable numbers = new Hashtable();

numbers.put("one",new Integer(1));

numbers.put("two",new Integer(2));

numbers.put("three",new Integer(3));

Integer n = (Integer)numbers.get("two");

if(n!=null){

System.out.println("two"+n) ;

}

用作关键字的类必须覆盖Object.hashCode()和Object.equals()方法。

import java.util.* ;

class MyKey{

private String name = null ;

private int age = 0 ;

public MyKey(String name,int age){

this.name = name ;

this.age = age ;

}

public boolean equals(Object obj){

if(obj instanceof MyKey){

MyKey objTemo = (MyKey)obj ;

if(name.equals(objTemo.name)&&age==objTemo.age){

return true ;

}else{

return false ;

}

}else{

return false ;

}

}

public int hashCode(){

return name.hashCode()+age ;

}

public String toString(){

return name+":"+age ;

}

}

public class HashTest{

public static void main(String[] args){

Hashtable numbers = new Hashtable() ;

numbers.put(new MyKey("zhangsan",13),newInteger(1));

numbers.put(new MyKey("lisi",15),new Integer(2));

numbers.put(new MyKey("wangwu",20),newInteger(3));

Enumeration e = numbers.keys() ; //返回所有的关键字对象

while(e.hasMoreElements()){

MyKey key = (MyKey)e.nextElement() ;

System.out.print(key+"") ; //把key转换成字符串

System.out.println(numbers.get(key)) ;

}

}

}

5、Properties类

1、Properties类是Hashtable的子类

2、增加了Hashtable对象中读取关键字和值保存到文件和从文件中读取关键字和值到Hashtable对象中的方法。

3、如果要用Properties.store方法存储Properties对象中的内容,每个属性的关键字和值都必须是String类型。

编程列举:使用Properties把程序的启动运行次数记录到某文件中,每次运行的时候打印出它的运行次数。

import java.util.Properties ;

import java.io.FileInputStream ;

import java.io.FileOutputStream ;

public class PropertiesFile{

public static void main(String[] args){

Properties settings = new Properties() ;

try{

settings.load(new FileInputStream("count.txt")) ;

}catch(Exception e){

settings.setProperty("count",String.valueOf(0)) ;

//String.valueOf(0)把整数转换为字符串,如果发生异常,说明找不到count.txt文件,为第一次读取

}

//settings.get("count") ; //get方法返回的是Object的,必须要转换

intc=Integer.parseInt(settings.getProperty("count"))+1 ; //String str = //settings.getProperties("count")取出的值是字符串

System.out.println("这是第"+c+"次运行") ;

//settings.put("count",new Integer(c).toString()); //--->new

Integer(c).toString() 是把c转成字符串,和下句是同样的

settings.setProperty("count",newInteger(c).toString()) ;

try{

settings.store(newFileOutputStream("count.txt"),"Program is used:") ;

}catch(Exception e){

e.printStackTrace() ;

}

}

}

 

 

四.System类,.Runtime类

 

System类

System类提供了系统常用的一些属性和方法

exit()方法

java虚拟机停止执行,异常终止用非零值作为参数,正常终止用零作为参数

public static long currentTimeMillis()

当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。日期和时间在计算机中的表示都是这样一个时间值。通过这个时间值可以测试一段程序执行的时间,通过计算开始和结束的时间差。

getProperties和setProperties方法--获取和设置系统属性

Runtime类

java虚拟机进程对应一个Runtime对象,由于java虚拟机进程只有一个,所以Runtime类是单例模式的,不能通过new来创建对象,需要通过静态方法来获得实例对象

Runtime.getRuntime静态方法

获得当前虚拟机进程的Runtime实例

exec方法

在新创建的进程中执行指定的字符串命令,新创建的进程是当前进程的子进程。

与日期和时间有关的类

 

五.Date类,DateFormat类和Calendar类

 

Date,DateFormat和Calender

calendar类

-calendar.add方法

-calendar.get方法

-calendar.set方法

-calendar.getInstance静态方法

-GregoranCalendar子类

编程实例:计算出据当前日期时间315天后的日期时间,并用“Xxx年xx日xx小时:xx分:xx

秒”的格式输出。

import java.util.* ;

public class TestCalendar{

public static void main(String[] args){

Calendar cl = Calendar.getInstance() ;

System.out.println(cl.get(Calendar.YEAR)+"年"+cl.get(cl.MONTH)+"月"+

cl.get(cl.DAY_OF_MONTH)+"日"+cl.get(cl.HOUR)+"时"+

cl.get(cl.MINUTE)+"分"+cl.get(cl.SECOND)+"秒");

cl.add(cl.DAY_OF_YEAR,315) ;

System.out.println(cl.get(Calendar.YEAR)+"年"+cl.get(cl.MONTH)+"月"+

cl.get(cl.DAY_OF_MONTH)+"日"+cl.get(cl.HOUR)+"时"+

cl.get(cl.MINUTE)+"分"+cl.get(cl.SECOND)+"秒");

}

}

 

Date类

java.text.DateFormat与java.text.SimpleDateFormat子类

编程实例:将“2002-03-15”格式日期字符串转换成“2002年03月15日”的格式。

import java.util.* ;

import java.text.* ;

public class TestCalendar{

public static void main(String[] args){

Calendar cl = Calendar.getInstance() ;

System.out.println(cl.get(Calendar.YEAR)+"年"+cl.get(cl.MONTH)+"月"+

cl.get(cl.DAY_OF_MONTH)+"日"+cl.get(cl.HOUR)+"时"+

cl.get(cl.MINUTE)+"分"+cl.get(cl.SECOND)+"秒");

cl.add(cl.DAY_OF_YEAR,315) ;

System.out.println(cl.get(Calendar.YEAR)+"年"+cl.get(cl.MONTH)+"月"+

cl.get(cl.DAY_OF_MONTH)+"日"+cl.get(cl.HOUR)+"时"+

cl.get(cl.MINUTE)+"分"+cl.get(cl.SECOND)+"秒");

SimpleDateFormat sdf1 = newSimpleDateFormat("yyyy-MM-dd") ;

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;

try{

Date date = sdf1.parse("2002-03-15") ;

System.out.println(sdf2.format(date)) ;

}catch(Exception e){

e.printStackTrace() ;

}

}

}

DateFormat类与SimpleDateFormat类 -- 一定格式的字符串<->Date

用来将一定格式的字符串转化为Date对象,或者将Date对象转化为一定格式的字符串,DateFormat是抽象类,SimpleDateFormat是DateFormat的一个子类。

 

六.Timer和TimerTask类

 

定时器,线程池

ScheduledExecutorService timer =Executors.newScheduledThreadPool(num);创建一个排程线程池,排程(Scheduled)的意思就是为一个线程的执行安排好了时间。比如多长时间以后执行,每次执行的时间间隔等等。

ScheduledExecutorService timer=newSingleThreadScheduledExecutor();创建单个线程

timer.scheduleAtFixedRate方法:为某个线程安排执行的时间。

 

Timer类

Timer类启动一个线程,在线程中运行指定的代码,并且可以指定什么时候开始运行,或者多长时间以后开始运行,还可以定期重复执行。

schedule(TimerTask task, Date time) 安排在指定的时间执行指定的任务。
schedule(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定延迟执行。

schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。

schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

TimerTask类:创建一个新的计时器任务,run方法指定此计时器任务要执行的操作。

 

七.Math类,Random类

 

Math类与Random类

Math类包含了所有用于几何和三角运算的方法\

通过一个小例子来演示Math类的常用方法:

Public class MathTest{

Public static void main(String[] args){

//Math类中的方法都是静态方法,直接使用“类名.方法名称()”的形式调用即可

System.out.println("求平方根:"+Math.sqrt(9));

System.out.println("求两数的最大值:"+Math.max(10,30));

System.out.println("求两数的最小值:"+Math.min(10,30));

System.out.println("求2的3次方:"+Math.power(2,3)) ;

System.out.println("四舍五入:"+Math.round(33.6));

}

}

运行结果:

求平方根:3.0

求两数的最大值:30

求两数的最小值:10

求2的3次方:8

四舍五入:34

Random类是一个伪随机数产生器

Random类中的常用方法:

public boolean nextBoolean() 普通 随机生成boolean值

public double nextDouble() 普通 随机生成double值

public int nextInt() 普通 随机生成int值

public int nextInt(int n) 普通 随机生成给定最大值的int值

public float nextFloat() 普通 随机生成float值

public long nextLong() 普通 随机生成long值

Random类在实际生活中的应用。

36选7的彩票,如果要实现自动选号,就可以通过Random完成。

 

八.总结学习API的方法

 

总结:

基本API的学习   进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给我们查看,JAVADOC文档就是这样的文档,它可以说是程序员与程序员交流的文档。   基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查JAVADOC文档,二是使用JBuilder/Eclipse等IDE的代码提示功能。 

特定API的学习   JAVA介入的领域很广泛,不同的领域有不同的API,没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果你做界面开发,那么你需要学习Swing/AWT/SWT等API;如果你进行网络游戏开发,你需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发,就需要熟悉Servlet等API啦。总之,需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。  

 

 

 

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值