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当成缓冲区放在流中接受内容,所以没有发生引用指向的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值