Java笔记

来源:互联网 发布:五十岁而知天命 编辑:程序博客网 时间:2024/05/29 10:40

1.异常匹配遵循就近原则。若要捕获所有异常要用基类Exception,即catch(Exception e)

2.对异常的处理,要么处理(即捕捉)异常要么声明异常。声明异常格式:
          void f() throws Sneeze{
                       throw new Sneeze();
         
          }
         
          void g() throws Exception{
               try{
              
               f();
              
               }catch(){}
          }
         
3.Exception有个接口throwable,接口下有四个方法:String getMessage(); String toString(); Void PrintStackTrace(); void printStackTrace(print stream)。

4.如何创建自己的异常,相当于定义自己的异常。

5.Rethrow(异常再次抛出):可抛出不同异常也可抛出相同异常。

6.异常发生可能导致某些操作无法被执行,而这些操作又是必须要被执行,则可以把这些操作代码写在finally{操作代码}。

7.对于执行时异常抛出时可以不声明。

8.class A{
       void f() throws E1{}
}
class B extends A{
        void f() throws E2{}
}
注:在子类里不可以抛出不同于父类的异常,只可抛出父类抛出的异常。上述例不正确。

9.Throwable包括Error和Exception。Error交给系统处理,弹出警告。Exception是异常基类。

10.如果不处理异常,异常向上抛出,出现运行时异常,编译没问题。
         


1.import java.io.*;
  import java.util.*;
  public class DirList{
           public static void main(String[] args){
                  File path = new File(".");
                  String[] List;
                  if(args.Length == 0)
                  List = path.List();
                  else
                      List = path.List(new DirFilter (args[0]));
                  for(int i = 0; i<List.Length; i++)
                      System.out.println(List[i]);   
           }
  }
 
  class DirFilter implements FilenameFilter{
                String afn;
                DirFilter(String afn){
                             this.afn = afn ;
                             }
  public boolean accept(File dir, String name){
                             //strip path information
                             String f = new File(name).getName();
                             return f.indexof(afn) !=-1;     //f获得文件与afn匹配,不成功用-1表示
                             }
  }
         //运行时可查询当前文件夹所在文件 java 文件名 ·要查询文件扩展名
        
2.Input Stream , Reader ; Output Stream , Writer .
  输入源可能是:Byte array , a String array , a file , a pipe
 
3.FilterInputStream可将多个流连接到一起。
  FilterInputStream DateInputStream
                    BufferInputStream
  FilterOutputStream DateOutputStream
                     PrintOutputStream
                     BufferOutputStream
                    
4.InputStreamReader 可将 Input Stream 转换为 Reader ; OutputStreamWriter 可将 Output Stream 转换为 Writer .

5.Buffered Reader in = new BufferedReader(new FileReader("IoStreamDemo.java"));
         String s.s2 = new String();
         while((s=in.readLine()) != null)
             s2 + = s + "\n";
             in.close;
             //输入源是文件
            
6.BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
         System.out.print("Enter a line");
         System.out.println(stdin.readLine());   //输入源是标准输入
        
7.随机文件访问
         RandomAccessFile rf = new RandomAccessFile("rtest.dat","rw")
        
8.System.setIn(InputStream);
  System.setOut(OutputStream);
  System.setErr(OutputStream);  //标准输入、输出、错误的重定向
 
9.ThreadsDemo1 t1 = new ThreadsDemo1(r1);
  ThreadsDemo1 t2 = new ThreadsDemo1(r2);
  t1.start();
  t2.start();
 
10.InputStream/OutputStream 字节流             reader/writer 字符流 


1.Thread t;
  t = new Thread(this);   //线程创建
  t.start();              //线程启动
  可定义在构造方法中。
 
2.线程睡眠可用sleep()方法。

3.生命周期方法:start()/stop(); suspend()/resume(); Thread.sleep(); join(); Thread.yield()。

4.把线程定义在一个组里,可实现多个线程统一挂起或唤醒。

5.关键字synchronized修饰句可加速线程,即只有一个线程可访问。
        synchronized也可修饰方法,即只有一个进程可调用。
       
6.wait和notify All 可协调进程间的合作。

7.线程创建的两种方法:1)继承thread方法;2)定义thread对象。

8.对象a1,a2加锁后synchronized,a1访问f()方法时,a2也可访问f()方法,因锁作用的是对象a1,a2.

9.死锁是由于线程间互相等待出现。比如线程A访问资源a,锁住资源a,请求资源b;而此时线程B访问资源b,锁住资源b,请求资源a。致使线程   A,B陷入死锁状态。

10.IP地址的获得:
            import java.net.*;
            public class WhoAmI{
                public static void main(String[] args)
                        throws Exception{
                        if(args.Length != 1){
                                System.err.println("Usage: WhoAmI MachineName");
                                System.exit(1);
                        }
                InetAddress a = InetAddress.getByName(args[0]);
                        System.out.println(a);
                        }
            }

0 0
原创粉丝点击