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

  • 相关阅读:
    Git使用及关联远程仓库
    Ceres Solver
    Halcon手眼标定
    Halcon 3D定位方法
    机器学习-数学基础
    Halcon匹配方法
    手眼标定
    C动态内存分配
    Halcon Calibration Assistant
    Visualization
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/bytearray1.html
Copyright © 2011-2022 走看看