<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 14,  comments - 7,  trackbacks - 0
      2010年10月15日
           

            剛學(xué)java流技術(shù)IO編程時(shí),一下出來(lái)這么多流,很是不敏感,不感冒,在學(xué)習(xí)了這段時(shí)間,發(fā)現(xiàn)好多項(xiàng)目中的讀寫(xiě)數(shù)據(jù),輸入輸出用到的都是以前學(xué)的最基本的,但是自己卻不是很理解其根本,今天就說(shuō)幾個(gè)流中簡(jiǎn)單但又常用的幾個(gè)知識(shí)點(diǎn)

       Java.io包中定義了多個(gè)流類(lèi)型,來(lái)實(shí)現(xiàn)輸入輸出功能:

      •  按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流。(以程序的角度來(lái)考慮)
      • 如:輸入流InputStream Reader 輸出流 OutputStream Writer
      •  按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流。
      • : 字節(jié)流 InputStream OutputStream 字符流 Reader Writer
      •  按照功能不同可以分為節(jié)點(diǎn)流和處理流。

            通俗的說(shuō)節(jié)點(diǎn)流就是一個(gè)簡(jiǎn)單的輸入輸出流,而處理流是“連接”在已存在的字節(jié)流或處理流之上的,通過(guò)對(duì)數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫(xiě)功能。

     我們最經(jīng)常用到的節(jié)點(diǎn)流類(lèi)型是有關(guān)文件處理的有FileReader FileWriter FileInputStream FileOutputStream

    Ø          FileInputSteam FileOutputStream 類(lèi)支持其父類(lèi)InputStream OutputStream 所提供的數(shù)據(jù)讀寫(xiě)方法。

    Ø       注意:

    §         在實(shí)例化FileInputStreamFileOutputSteam流時(shí)要用trycatch語(yǔ)句以處理其可能拋出的FileNotFoundException。

    §         在讀寫(xiě)數(shù)據(jù)時(shí)也要用trycatch語(yǔ)句以處理可能拋出的 IOException

    §         FileNotFoundExceptionIOException的子類(lèi)

    FileReader FileWriter 分別繼承自ReaderWriter,FileInputSteamFileOutputStream類(lèi)似,所不同的時(shí)FileReaderFileWriter向文件輸入和輸出的數(shù)據(jù)單位為字符。

         處理流中常用到的有緩沖流 、轉(zhuǎn)換流。

    l          緩沖流有BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream ,緩沖流要“套接”在相應(yīng)的節(jié)點(diǎn)流之上,對(duì)讀寫(xiě)的數(shù)據(jù)提供了緩沖的功能,提高了讀寫(xiě)的效率,同時(shí)增加了一些新的方法

    l          BufferedReader提供了readLine方法用于讀取一行字符串(以"r"n           隔)。

    l          BufferedWriter提供了newLine用于寫(xiě)入一個(gè)行分隔符。

    l          對(duì)于輸出的緩沖流,寫(xiě)出的數(shù)據(jù)會(huì)先在內(nèi)存中緩存,使用flush方法將會(huì)使內(nèi)存中的數(shù)據(jù)立刻寫(xiě)出。

    Socket編程中接受信息時(shí),不是直接用InputStream接收,而是把內(nèi)容放入緩沖之中進(jìn)行讀取 ,在Socket中的簡(jiǎn)單應(yīng)用如下
      

    package com.dr.Echo;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class EchoServer {

        
    /**
         * 
    @param args
         * 
    @throws IOException 
         
    */

        
    public static void main(String[] args) throws IOException {
            
    // TODO Auto-generated method stub
             ServerSocket server = null;
             PrintStream out 
    = null;
             BufferedReader buf 
    = null;
             server 
    = new ServerSocket(9999);
             Socket client 
    = null;
             
    while(true){
                 
    //不斷接收數(shù)據(jù)
                 client = server.accept();
                 
    //準(zhǔn)備好像客戶端輸出內(nèi)容
                 out = new PrintStream(client.getOutputStream());
                 
    //而且客戶端要有輸入給服務(wù)器端
                 buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
                 
    //下面先給出一個(gè)完整的信息提示
                 out.println("您好!歡迎光臨:http://wwww.tstc.edu.cn");
                 out.println(
    "輸入bye表示退出哈-");
                 
    while(true){
                     
    //接受客戶端發(fā)送而來(lái)的內(nèi)容
                     String str = buf.readLine();
                     System.out.println(
    "client's data is "+str);
                     
    if(str == null){
                         
    //如果str為空就表示退出
                         break;
                     }
    else{
                         
    //如果輸入的是bye則表示是退出系統(tǒng)
                         if("bye".equals(str)){
                             
    break;
                         }

                         out.println(
    "xiaoxiao:"+str);
                     }

                 }

                 out.close();
                 buf.close();
                 client.close();
             }

        }


    }

     

    package com.dr.Echo;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;

    public class EchoClient {

        
    /**
         * 
    @param args
         * 
    @throws IOException 
         * 
    @throws UnknownHostException 
         
    */

        
    public static void main(String[] args) throws UnknownHostException, IOException {
            
    // TODO Auto-generated method stub
             Socket client = null;
             BufferedReader buf 
    = null;
             PrintStream out 
    = null;
             client 
    = new Socket("127.0.0.1",9999);
             buf 
    = new BufferedReader(new InputStreamReader(client.getInputStream()));
             System.out.println(buf.readLine());
             System.out.println(buf.readLine());
             BufferedReader in 
    = new BufferedReader(new InputStreamReader(System.in));
             
             String userInput 
    = null;
             out 
    = new PrintStream(client.getOutputStream());
             
    while((userInput = in.readLine())!=null){
                 out.println(userInput);
                 System.out.println(buf.readLine());
             }

             out.close();
             in.close();
             client.close();
             
             
        }


    }

       

          轉(zhuǎn)換流InputStreamReader OutputStreamWriter 用于字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間的轉(zhuǎn)換。其中InputStreamReader 需要和InputStream”套接OutputStreamWriter需要和OutputStream套接

          數(shù)據(jù)流DataInputStream DataOutputStream 提供了可以存取與機(jī)器無(wú)關(guān)的java原始數(shù)據(jù)類(lèi)型

    l              Print流:PrintWriterPrintStream都屬于輸出流,分別針對(duì)與字符和字節(jié),PrintWriterPrintStream提供了重載的print,Println方法用于多種數(shù)據(jù)類(lèi)型的輸出。PrintWriterPrintStream的輸出操作不會(huì)拋出異常,用戶通過(guò)檢測(cè)錯(cuò)誤狀態(tài)獲取錯(cuò)誤信息。PrintWriterPrintStream有自動(dòng)flush功能

    l           

     這幾個(gè)流的類(lèi)型都是在以后的學(xué)習(xí)中經(jīng)常用到的。就不一一做例子啦

     

             以后所學(xué)到的所有流類(lèi)型都是繼承 InputStream OutputStream Reader Writer 這四個(gè)抽象的流類(lèi)型

    posted @ 2011-01-18 22:26 迷人笑笑 閱讀(882) | 評(píng)論 (0)編輯 收藏
         摘要:           我相信大多說(shuō)人都對(duì)構(gòu)造方法、方法不陌生,而且很了解,但我也相信有很多像我這樣的沒(méi)有一個(gè)很好很清晰很全面的認(rèn)識(shí),今天就把它整理如下,希望能給大家?guī)?lái)點(diǎn)方便與幫助,也希望大家多多討論。         ...  閱讀全文
    posted @ 2010-11-12 16:43 迷人笑笑 閱讀(39161) | 評(píng)論 (1)編輯 收藏
         摘要:        今天我們用實(shí)例程序說(shuō)一下java中常見(jiàn)的生產(chǎn)者與消費(fèi)者的問(wèn)題。  首先看一下里面線程間的通信問(wèn)題:    一個(gè)線程向數(shù)據(jù)存儲(chǔ)空間添加數(shù)據(jù)(生產(chǎn)者),另一個(gè)線程從數(shù)據(jù)存儲(chǔ)空間去出數(shù)據(jù)(消費(fèi)者)。 這個(gè)程序中有兩個(gè)可能出現(xiàn)的問(wèn)題需要考慮: 1、   ...  閱讀全文
    posted @ 2010-11-10 23:07 迷人笑笑 閱讀(2159) | 評(píng)論 (1)編輯 收藏
         摘要: 項(xiàng)目需求:1.病人來(lái)掛號(hào)時(shí)根據(jù)自己想找的醫(yī)生掛相應(yīng)的醫(yī)生的號(hào),即加到相應(yīng)醫(yī)生的病人隊(duì)列中。                    2.醫(yī)生看見(jiàn)自己的屏幕,點(diǎn)擊自己的名字,得到自己相應(yīng)列表的下一位病人 具體代碼如下: ...  閱讀全文
    posted @ 2010-11-02 16:51 迷人笑笑 閱讀(3464) | 評(píng)論 (1)編輯 收藏
         摘要: 1.當(dāng)我們?nèi)ャy行辦理什么業(yè)務(wù)的時(shí)候總會(huì)先在一個(gè)類(lèi)似電腦的小系統(tǒng)上去一個(gè)號(hào),然后等著,當(dāng)被叫到時(shí)就去相應(yīng)的窗口辦理業(yè)務(wù),這種排隊(duì)的小系統(tǒng)主要用到了接口Queue,因?yàn)樗详?duì)列的要求先進(jìn)先出。 2.還有就是有種特殊情況就是,銀行的金卡用戶,他們的權(quán)限較高,總可以在普通用戶的前面辦理業(yè)務(wù) 相應(yīng)代碼如下: package com.dr.queue; public clas...  閱讀全文
    posted @ 2010-11-01 13:22 迷人笑笑 閱讀(3768) | 評(píng)論 (0)編輯 收藏
    代碼如下:
    package com.dr.exercise6;

    import java.util.Scanner;

    public class Login {
        
    public static void main(String[] args) {
            Scanner s 
    = new Scanner(System.in);
            System.out.println(
    "請(qǐng)輸入用戶名:");
            String name 
    = s.nextLine();
            System.out.println(
    "請(qǐng)輸入密碼:");
            String password 
    = s.nextLine();
            
    if(name.equals("abc")&&password.equals("123")){
                System.out.println(
    "歡迎登入?。?/span>");
                
            }

            
    else{
                System.out.println(
    "用戶名或密碼不正確!!");
            }


        }


    }

    用戶名密碼輸入正確時(shí):
    用戶名或密碼輸入不正確時(shí):
    posted @ 2010-10-20 16:33 迷人笑笑 閱讀(622) | 評(píng)論 (0)編輯 收藏
    答案是兩個(gè),現(xiàn)在我們具體的說(shuō)一下:
    String s = new String("abc");
    首先我們要明白兩個(gè)概念,引用變量和對(duì)象,對(duì)象一般通過(guò)new在堆中創(chuàng)建,s只是一個(gè)引用變量。
    所有的字符串都是String對(duì)象,由于字符串文字的大量使用,java中為了節(jié)省時(shí)間,在編譯階段,會(huì)把字符串文字放在文字池中,文字池的一個(gè)好處就是可以把相同的字符串合并,占用一個(gè)空間,我們可以用==判斷一下兩個(gè)引用變量是否指向了一個(gè)地址即一個(gè)對(duì)象
    public class Demo02 {
        
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            String s1 ="abc";
            String s2 
    = "abc" ;
            
    if( s1 == s2 ) System.out.println("s1,s2 refer to the same object");
            
    else System.out.println("trouble");
        }

    }
    輸出結(jié)果為:
    可以看出指向了一個(gè)對(duì)象,即文字池中保存了一個(gè)對(duì)象。
    二、String s = new String("abc")實(shí)際上是"abc"本身就是文字池中的一個(gè)對(duì)象,在運(yùn)行 new String()時(shí),把文字池即pool中的字符串"abc"復(fù)制到堆中,并把這個(gè)對(duì)象的應(yīng)用交給s,所以創(chuàng)建了兩個(gè)String對(duì)象,一個(gè)在pool中,一個(gè)在堆中。下面看這個(gè)程序,創(chuàng)建了幾個(gè)對(duì)象。
    public class Demo03 {
        
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            String s1 = new String("abc") ;
            String s2 
    = new String("abc") ;
            
    if( s1 == s2 )//不會(huì)執(zhí)行的語(yǔ)句}
           System.out.println("在堆中創(chuàng)建了一個(gè)對(duì)象");

        }

            
    else{
            System.out.println(
    "在堆中創(chuàng)建了兩個(gè)對(duì)象");    
            }

            }

    }
    輸出結(jié)果為:
    可知在堆中創(chuàng)建了兩個(gè)對(duì)象,但是在文字池中有一個(gè)對(duì)象,所以共創(chuàng)建了三個(gè)對(duì)象。
    三、再看下一個(gè)例子:
    public class Demo04 {
        
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            String s = new String("abc");
            s 
    = "cba";
            System.out.println(s); 
        }


    }
    輸出結(jié)果為:
    String s = new String("abc")并不是給s賦值,而是把字符串"abc"的引用交給s持有,現(xiàn)在把s指向字符串"cba","cba"的引用地址把"abc"的引用地址覆蓋,所以輸出結(jié)果為cba

    最后這個(gè)輸出結(jié)果的解釋,希望大家指出不足!!

    posted @ 2010-10-18 14:32 迷人笑笑 閱讀(10653) | 評(píng)論 (0)編輯 收藏
    要求為:寫(xiě)一個(gè)公司員工類(lèi);
                    數(shù)據(jù)成員:?jiǎn)T工號(hào),姓名,薪水,部門(mén);
                    方法:
                    利用構(gòu)造方法完成設(shè)置信息:
                     A.單參,只傳遞員工號(hào);
                     B.雙參,只傳遞員工號(hào)、姓名;
                     C.四參,傳遞員工號(hào)、姓名、薪水、部門(mén);
                     D.無(wú)參,則均為空值;
    main方法中創(chuàng)建兩個(gè)對(duì)象,分別進(jìn)行驗(yàn)證。
    package com.dr.computer;

    public class Worker {
         
    private String id;
         
    private String name;
         
    private float salary;
         
    private String department;
         
    public Worker(String n){
           
    this.setId(n);
           
    this.setName("無(wú)名氏");
           
    this.setSalary(0.0f);
           
    this.setDepartment("未定");
         }

         
    public Worker(String n,String na){
             
    this.setId(n);
             
    this.setName(na);
             
    this.setSalary(1000);
             
    this.setDepartment("后勤");
         }

         
    public Worker (String n,String na,float sa,String dep){
             
    this.setId(n);
             
    this.setName(na);
             
    this.setSalary(sa);
             
    this.setDepartment(dep);
         }

         
    public Worker(){
             
         }

        
    public String getId() {
            
    return id;
        }

        
    public void setId(String n) {
            
    this.id = n;
        }

        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
    public float getSalary() {
            
    return salary;
        }

        
    public void setSalary(float f) {
            
    if(f>0.0f){
            
    this.salary = f;
            }

        }

        
    public String getDepartment() {
            
    return department;
        }

        
    public void setDepartment(String department) {
            
    this.department = department;
        }

        
    public void showWorker(){
            System.out.println(
    "員工信息為:");
            System.out.println(
    "\t+--我的Id號(hào):"+id);
            System.out.println(
    "\t+--我的名字:"+name);
            System.out.println(
    "\t+--我的工資:"+salary);
            System.out.println(
    "\t+--我的部門(mén):"+department);
        }

    }

    package com.dr.computer;

    public class WorkerTest {

        
        
    public static void main(String[] args) {
            Worker w1 
    =new Worker("0001","泉水");
            Worker w2 
    =new Worker("0002","陽(yáng)光",1000.0f,"公關(guān)部");
            w1.showWorker();
            w2.showWorker();
        }

        
        }




        
    posted @ 2010-10-15 22:47 迷人笑笑 閱讀(438) | 評(píng)論 (0)編輯 收藏

     

    類(lèi)是一個(gè)抽象的概念,對(duì)象則是類(lèi)的具體實(shí)例,是真實(shí)的個(gè)體,比如人就是一個(gè)類(lèi),張三、李四等就是一個(gè)個(gè)真實(shí)的

    具體的個(gè)體對(duì)象,人有具備所有人類(lèi)通用的特征,但不能確定是哪個(gè)人,張三、李四等有具體的特征,比如身高性別,即

    屬性。類(lèi)一種看不見(jiàn)摸不著的東西,對(duì)象是“有血有肉”的實(shí)物。
          現(xiàn)實(shí)生活中到處皆對(duì)象,比如一輛汽車(chē),一棟房子,一臺(tái)電腦,一只貓。
          面向?qū)ο缶哂蟹庋b、繼承、多態(tài)三大特征。封裝,即使屬性用private修飾對(duì)外部不可見(jiàn);繼承,如人,有老人、小孩

    、男人、女人,他們都是人的子類(lèi)。多態(tài)包括方法的重載和對(duì)象的多態(tài)性,方法的重載就是方法名相同,但參數(shù)和類(lèi)型不

    同的方法,多態(tài),即人分為老人,小孩,男人,女人等。

    posted @ 2010-10-15 15:13 迷人笑笑 閱讀(810) | 評(píng)論 (0)編輯 收藏
    <2010年10月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿(13)

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲韩国—中文字幕| 亚洲人成网站观看在线播放| 国产亚洲精品不卡在线| 亚洲人成色777777在线观看| 亚洲中文字幕久久精品无码A| 在线涩涩免费观看国产精品| 四虎在线播放免费永久视频| 中文字幕亚洲图片| 亚洲嫩模在线观看| 日韩毛片在线免费观看| aa午夜免费剧场| 日韩视频在线免费观看| 亚洲毛片免费视频| 精品国产亚洲AV麻豆| 97国免费在线视频| 国产乱子伦片免费观看中字| 亚洲卡一卡2卡三卡4麻豆| 久操视频免费观看| 亚洲精品无码久久不卡| 亚洲jizzjizz少妇| 最近更新免费中文字幕大全| 又大又粗又爽a级毛片免费看| 亚洲人成77777在线播放网站不卡| 色欲色香天天天综合网站免费| 国产精品视频免费一区二区| 久久丫精品国产亚洲av| jzzijzzij在线观看亚洲熟妇| 日韩国产免费一区二区三区| 亚洲精品无码你懂的网站| 亚洲另类无码一区二区三区| 女人隐私秘视频黄www免费| 亚洲成人高清在线| 久久精品国产亚洲AV电影网 | 秋霞人成在线观看免费视频| 亚洲国产午夜福利在线播放| 综合一区自拍亚洲综合图区| 在线播放免费播放av片| 亚洲处破女AV日韩精品| 亚洲熟妇无码AV| 99久久免费国产精品特黄| 亚洲码一区二区三区|