1、异常处理。
··Java中含有异常处理机制。
··Java中异常的继承关系:
Throwable<——Exception<——RuntimeException、··· ···
··通常有两种情况需要对异常进行处理。
1)产生了运行时的异常,即unchecked异常,及RuntimeException类及其子类。
2)编译器对可能产生异常的代码在编译时强制要求对异常进行处理,即checked异常。包括Exception和除了 RuntimeException意外的异常类。
一般有一下几种情况:
1)Thread.sleep(long);
2) ?对IO流的打开或关闭。
3) ?以后遇到再加。
··对于异常的处理方法:
?
try{ //产生或者可能产生异常的代码 } } catch (Exception e) { // 对于异常的处理的代码 }finally{ //无论是否产生异常都会执行的代码,一般用于IO流的关闭等等 }
?
?
··可以在代码中编写产生异常的代码。如果产生的是unchecked异常,比如RuntimeException re = new RuntimeException(String);然后可用throw关键字对其进行抛出,在编译时不会报错,在运行时会打印出错误代码。
而如果是checked异常,如果不在产生异常的地方加上try—catch结构,可以在产生异常的函数中加上throws关键字将异常交给调用函数的上一级进行捕捉。
比如说:
?
?
public void error(){ RuntimeException re = new RuntimeException("错误啦"); throw re;//这句抛出异常,如果没有这句,这么都不会产生。 }//编译时不会报错,运行结果会打印出错误。 public void error() throws Exception{ //这句将异常交给上级处理。 Exception e = new Exception("错误啦"); throw e; }
---------------------------------------------------------
?
2、Java中的IO
··Java中的IO可以分为字节流和字符流,或者是分为节点流和处理流。
1)字节流:
InputStream<—FileInputStream
其中有函数int read(byte [] b , int off , int len),第一个形参表示将 FileInputStrean对象中的内容放入b中,第二个表示从b的第几位开始放(偏移量),第三个len 表示预计读取的字节数,返回值表示真正读取的字节数。如果什么都没有(读到文件结尾) 返回-1;
OutputStream<—FileOutputStream
其中由函数void write(byte [] b , int off , int len),意义和上面类似。
2)字符流:
FileReader和FileWriter和上面的基本上是一样的。
3)需要注意的是在IO流创建和关闭的时候要加上try—catch结构,因为这些行为都是checked异 常。
··Java中“装饰者模式”:
··为了可以对一大部分类进行一些共同的操作,即对一些类进行“装饰”,Java中可以采用复合的方式,即新建 一个类,其中包含所要“装饰”类的对象,在以该类为参数重载一个构造函数。直接看代码吧,直接说起来有点虚。
?
public class lei{ public static void main(String args[]){ FileReader fr = null; BufferedReader br = null; //BufferedReader是一个用于IO的处理流,也是一个装饰类 String line = null; try{ fr = new FileReader("c:/in.txt"); br = new BufferedReader(fr);//可以用某个IO流作为参数构成BufferedReader对象 while((line = br.readLine())!= null){//经常会利用BufferedReader对象的readLine函数 System.out.println(line); } }catch (Exception e) { }finally{ try{ fr.close(); br.close(); }catch (Exception e) { } } }}?
3、匿名内部类
··在Android开发中经常性地会用到匿名内部类。
··匿名内部类的用法比较简单,即这个类是在某个类之中且不给它赋名字,一般用于一次性产生的对象。
?
startButton.setOnClickListener(new OnClickListener() {//这里就是一个匿名内部类,直接覆写了OnClickListener这个类中的onClick函数,并生成了一个对象。 public void onClick(View v) { new Thread(run1).start();//开始执行run1; } });
?
4、文件下载。
http://edu.gamfe.com/tutor/d/37218.html
··这里只讨论非常简单的文件下载--#
··Java中文件下载一般分为如下一个步骤。
1)新建一个URL对象。
2)用所建的URL对象生成以个URLConnection对象用于建立连接。
3)用URLConnection对象的getInputStream()函数获取该URL的输入流。
4)得到输入流之后可以写入SD卡或是进行其他一系列处理。
public class lei{ public static void main(String args[]){ BufferedReader br = null; String line = null; try{ URL url = new URL("http://baike.baidu.com/view/1007958.htm");//新建一个URL对象 URLConnection con = (URLConnection)url.openConnection();//用URL对象的openConnection()方法新建一个URLConnection对象,注意要向下转型。 InputStream is = con.getInputStream(); br = new BufferedReader(new InputStreamReader(is));//需要先将字节流转为字符流,因为BufferedReader是字符流 while((line = br.readLine())!= null){ System.out.println(line);//这里只是将得到内容输出,最后的输出结果是htm代码。 } }catch (Exception e) { }finally{ try{ br.close(); }catch (Exception e) { } } }}?
?
?
?