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

  • 相关阅读:
    BFS(从数字A变到数字B每次只能换一个数)
    BFS(数字a通过三种操作到数字B)
    dfs+bfs(三种路径问题)
    国际象棋跳马问题
    拓扑排序
    hadoop-hdfs、mapreduce学习随笔
    hive初探2_数据模型
    hive初探_框架组成、简单使用
    Scala学习笔记
    Scala安装
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/bytearray1.html
Copyright © 2011-2022 走看看