久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

System類,、BufferedReader類

 英昌知識匯聚館 2012-02-29
System類是一個系統(tǒng)類,,是一個陪伴我們時間最長的一個類,例如 System.out.println();就是類中提供的操作,。
1.取得計算時間
         使用此類可以取得計算的時間,。例如:想知道一個程序執(zhí)行時一共花了多少時間。
         .得到當前的時間: Public  static  long  currentTimeMills(); 看下面代碼:
          package org.lxh.systemdemo;

public class SystemDemo01 {
    public static void main(String[] args) {
        long begin = System.currentTimeMillis(); // 取得當前時間
        String str = "";
        for (int i = 0; i < 10000; i++) {
            str += i; // 會產(chǎn)生大量的垃圾
        }
        long end = System.currentTimeMillis(); // 取得當前時間
        System.out.println(end - begin);// 取得計算的時間
    }
}

2.System與垃圾收集
    在System類中存在一個gc()方法,。public  static  void gc();  
    調(diào)用此方法實際上就是調(diào)用了Runtime類中的gc()方法,。
     如果一個對象不用的話,則就有可能進行垃圾回集,。但是如果一個對象在被收集前需要做一些收尾工作,。
     在Object類中存在一個方法,此方法在對象被回收前調(diào)用:protected  void  finalize()  throws  Throwable.看下面代碼:
package org.lxh.systemdemo;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return "姓名:" + this.name + ",,年齡:" + this.age;
    }

    public void finalize() throws Throwable {
        System.out.println("我被回收了,,我完蛋了。,。,。(" + this + ")");
    }
}

public class SystemDemo02 {
    public static void main(String[] args) {
        Person per = new Person("張三", 99);
        per = null; // 取消引用
        System.gc();// 強制進行垃圾收集
    }
}
從一般的開發(fā)角度上看,很少說有專門的開發(fā)在對象回收前進行操作的,,所以,,此操作理解即可。
面試題:請說出final,finally,finalize的區(qū)別,?
System對IO的支持
System類中存在三個常量:
 序號 常量 描述
 1 public static final PrintStream  out
 表示的是一個標準的輸出,,輸出的位置是顯示器
 2 public static final PrintStream  err
 表示錯誤,,錯誤的輸出
 3 public static final InputStream  in
 表示的是鍵盤的輸入,,標準輸入
1.System.out是PrintStream類的實例,,常用的方法就是向屏幕上打印信息,。當然,如果使用System.out的話,,也可以直接
為OutputStream類實例化,。如下代碼:

 package org.lxh.sytemiodemo;

import java.io.OutputStream;

public class SysteOutDemo {
    public static void main(String[] args) throws Exception {
        OutputStream out = System.out; // 此時具備了向屏幕輸出的能力
        out.write("hello world".getBytes());// 輸出內(nèi)容
        out.close();
    }

}
2.System.err:表示的是錯誤輸出,??聪旅娲a:
package org.lxh.sytemiodemo;

public class SystemErrDemo {
    public static void main(String[] args) {
        try {
            Integer.parseInt("hello");
        } catch (Exception e) {
            System.out.println(e);
            System.err.println(e);
        }
    }
}
從代碼本身觀察不出任何本質(zhì)問題,,只有在eclipse下才會出現(xiàn)紅色的字。實際上對于以上兩個常量想?yún)^(qū)分區(qū)別,,
  只能從概念上講:
  System.out:一般的信息是愿意展示給用戶看見的
  System.err:一般的信息是不愿意展示給用戶看見的
  3.System.in實際上表示的就是一個鍵盤的輸入,,使用此操作可以完成鍵盤輸入數(shù)據(jù)的功能??聪旅娲a:
package org.lxh.sytemiodemo;

import java.io.InputStream;

public class SystemInDemo01 {

    public static void main(String[] args) throws Exception {
        InputStream input = System.in; // 準備鍵盤輸入數(shù)據(jù)
        byte b[] = new byte[20]; // 開辟空間接收內(nèi)容
        System.out.print("請輸入內(nèi)容:");
        int len = input.read(b); // 接收內(nèi)容
        System.out.println("輸入的內(nèi)容是:" + new String(b, 0, len));
    }
}
此時,,已經(jīng)實現(xiàn)了鍵盤輸入功能。但此程序在使用時會存在長度限制,。而且輸入中文時,,也會存在問題,,那么,
此時就可以通過另一種方法,,不指定大小,邊讀邊判斷是否結(jié)束,。請看下面代碼:
package org.lxh.sytemiodemo;

import java.io.InputStream;

public class SystemInDemo03 {

    public static void main(String[] args) throws Exception {
        InputStream input = System.in; // 準備鍵盤輸入數(shù)據(jù)
        System.out.print("請輸入內(nèi)容:");
        int temp = 0; // 接收內(nèi)容
        StringBuffer buf = new StringBuffer();
        while ((temp = input.read()) != -1) {
            char c = (char) temp; // 轉(zhuǎn)型
            if (c == '\n') {// 判斷是否是回車
                break;// 退出循環(huán)
            }
            buf.append(c);
        }
        System.out.println("輸入的內(nèi)容是:" + buf);
    }
}
此時,,數(shù)據(jù)讀取的時候沒有長度限制了。但是在輸入中文時,,就無法正確地讀取,,因為每次讀的是一個字節(jié)。
應該按照整體讀取,,那么要想完成更好的讀取操作,,則只能使用后續(xù)的BufferReader類來完成。
BufferReader類:
該類表示的是緩沖區(qū)讀取,,可以一次性的將內(nèi)容全部讀取出來,。
BufferReader類的構(gòu)造方法:BufferedReader(Reader in);
那么,如果想要使用BufferReader類接收鍵盤的輸入內(nèi)容的話,,則此時就無法直接實例化了,,
System.in屬于InputStream類型的。
在java中,,提供了兩個專門的類,。字節(jié)到字符流的轉(zhuǎn)換:
InputStreamReader:表示將字節(jié)的輸入流轉(zhuǎn)換成字符流
OutputStreamWriter:表示將字符的輸出流轉(zhuǎn)換成字節(jié)的輸出流
直接使用以上的類,就可以完成轉(zhuǎn)換功能,。使用public String readLine() throws IOException方法可以讀取數(shù)據(jù),。該方法表示
一次性讀取一行數(shù)據(jù),而且一定要記住的是,,如果返回的類容是String是最好操作的,。
例如:
package org.lxh.bufferdemo;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BufferedReaderDemo {

    public static void main(String[] args) throws Exception {
        BufferedReader buf = null;
        // 將字節(jié)輸入流變?yōu)樽址斎肓鞣旁谧址鞯木彌_區(qū)之中
        buf = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("請輸入內(nèi)容:");
        String str = buf.readLine();
        System.out.println("輸入的內(nèi)容是:" + str);
    }
}
如果想要完成鍵盤的輸入功能,使用以上的操作是最合適的,。也是鍵盤輸入數(shù)據(jù)的標準格式,。
4.輸出輸入重定向
System.out、Sytem.err都有固定的輸出目標,,都是屏幕
System.in有固定輸入目標,,是鍵盤
但,在System類中提供了一系列的輸出輸入重定向方法 ,,可以改變System.out,、Sytem.err、System.in的輸入輸出位置,。
System.out重定向:public static void setOut(PrintStream out)
Sytem.err重定向:public static void setErr(PrintStream err)
System.in重定向:public static void setIn(InputStream in)
范例:輸出重定向
package org.lxh.sytemiodemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class RedirectSystemOutDemo {
    public static void main(String[] args) throws Exception {
        File file = new File("d:" + File.separator + "demo.txt");
        System.setOut(new PrintStream(new FileOutputStream(file)));
        System.out.println("hello world") ;
    }
}
范例:錯誤重定向
package org.lxh.sytemiodemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class RedirectSystemErrDemo {
    public static void main(String[] args) throws Exception {
        File file = new File("d:" + File.separator + "demo.txt");
        System.setErr(new PrintStream(new FileOutputStream(file)));
        System.err.println("hello world") ;
    }
}
提示:之前曾經(jīng)說過System.err是不希望用戶看到的,,而System.out是希望用戶看到的,。所以在開發(fā)中,
不建議改變System.err的輸出位置,,而只建議修改System.out的輸出位置,。
package org.lxh.sytemiodemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class ErrDemo {
    public static void main(String[] args) throws Exception  {
        File file = new File("d:" + File.separator + "err.log");
        System.setOut(new PrintStream(new FileOutputStream(file)));
        try {
            Integer.parseInt("hello");
        } catch (Exception e) {
            System.out.println(e);
            System.err.println(e);
        }
    }
}
范例:輸入重定向
package org.lxh.sytemiodemo;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class RedirectSystemInDemo {
    public static void main(String[] args) throws Exception {
        File file = new File("d:" + File.separator + "demo.txt");
        System.setIn(new FileInputStream(file));
        InputStream input = System.in;
        byte b[] = new byte[20]; // 開辟空間接收內(nèi)容
        int len = input.read(b); // 接收內(nèi)容
        System.out.println("內(nèi)容是:" + new String(b, 0, len));
    }
}
一般,System.in的操作最好不要去修改,。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多