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

  • 相关阅读:
    iOS9 News 应用
    swift中,Optional、?与!之间的关系
    [翻译] CotEditor
    [book] iOS 8 Swift Programming Cookbook
    便利的操作plist文件
    消除 Xcode7 中 directory not found for option 'xxxx' 警告
    点击单个cell高度变化的动画效果
    [翻译] LiquidFloatingActionButton
    一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务
    一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/bytearray1.html
Copyright © 2011-2022 走看看