Java的byte數組


  今天我們討論一下Java的byte數組。byte數組就是字節數組,每一位存一個字節。看下面程序,猜猜輸出多少?

package com.wjy.bytes;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ByteArrayTest {
    public static void main(String args[]){
        
        byte array[]=new byte[5];
        System.out.println("length: "+array.length);
        
    }
}

答案:

        當然是5了。

但是,如果程序編程這樣呢?

package com.wjy.bytes;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ByteArrayTest {
    public static void main(String args[]){
        byte array[]=new byte[5];

        array="Yes".getBytes();
        System.out.println("length: "+array.length);    
    }
}

就是將一個字符串轉化成byte數組賦值給當前數組,答案是多少呢?

答案:

      應該是3了。為什么呢?

                                  因為array實際是一個引用(可以理解為指針),將字符串轉化的字符數組賦值給array變量,實際上array以前是指向堆區那個初始化的字節數組的,現在轉而指向了string轉化成的數組。

byte array[]="Yes".getBytes();
System.out.println("length: "+array.length); 

以上語句其實也是合法的。

 

 

再來看一個問題:若test.txt中只有一個字母a。想想會輸出多少呢?

byte array[]=new byte[5];
try{
        FileInputStream fileInputStream=new FileInputStream(new File("./file/test.txt"));
        fileInputStream.read(array);
        System.out.println("length: "+array.length);
    }
    catch(IOException){
                //dosomething
            }

答案是:

            5.

          因為這和上個例子的賦值操作時不同的,這次是將array當成緩沖區放在流中接受內容,所以沒有發生引用指向的改變。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM