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[];
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[]; 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[];
try{
FileInputStream fileInputStream=new FileInputStream(new File("./file/test.txt"));
fileInputStream.read(array);
System.out.println("length: "+array.length);
}
catch(IOException){
//dosomething
}
答案是:
5.
因为这和上个例子的赋值操作时不同的,这次是将array当成缓冲区放在流中接受内容,所以没有发生引用指向的改变。
Java的byte数组的更多相关文章
- 【转】java中byte数组与int类型的转换(两种方式)----不错
原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...
- java 中byte[] 数组的合并
因工作的需要,在从事 .Net 的开发中接触到了 Java, 虽然在大学的时候学过一段Java 编程,但并没有在实际的工作中使用过, Java 和 .Net的C#语法很相似,都是面向对象的,感觉在语法 ...
- [转载] java中byte数组与int,long,short间的转换
文章转载自http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * ...
- Java根据byte数组,生成文件
原文出自:https://blog.csdn.net/seesun2012 根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; i ...
- java中byte数组与int,long,short间的转换
http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * <l ...
- JAVA中将byte[]数组转成16进制字符串
方法一: /** * byte数组转化为16进制字符串 * @param bytes * @return */ public static String byteToHexString(byte[] ...
- [Java]获取byte数组的实际使用长度
背景:byte.length只能获取到初始化的byte数组长度,而不是实际使用的长度,因此想要获取到实际的使用长度只能靠其他方法实现. 方法一: public class ByteActualLeng ...
- JAVA关于byte数组与String转换的问题
1 public class ToString{ public static void main(String[] args){ String aa = "hellow"; byt ...
- JAVA将Byte数组(byte[])转换成文件
/** * 将Byte数组转换成文件 * @param bytes byte数组 * @param filePath 文件路径 如 D://test/ 最后"/"结尾 * @par ...
随机推荐
- 重操JS旧业第四弹:Date与Global对象
1 Date原理 Date类型表示时间,js中采用UTC国际协调时间,以1971年1月1日0分0秒0微秒开始,经过的毫秒数来表示时间,比如一年的时间计算 1分:1000*60: 1小时:1000(毫秒 ...
- cocos2d-x游戏开发系列教程-坦克大战游戏启动界面的编写
用前面介绍的方法,创建一个cocos2d-x项目,可以看到新项目内容如下图:
- 开源力量公开课第三十期- 跟我一起玩转OpenStack
开源力量公开课第三十期- 跟我一起玩转OpenStack 开课时间:2013年9月10日 18:30 - 21:30 形式:现场(北京3W咖啡) + 线上直播, 免费报名:http://www.o ...
- Google Ads Encryption Key
aes | floyd's Google Ads Encryption Key
- 在 SSIS package 中使用FTP
在ssis 包中使用FTP 实际上很简单, 直接拿一个FTP控制流(FTP 任务) ,配置一下FTP 服务器就可以了, 但是当我想在SQL Server Job 中使用这个功能时却报了个错(如下), ...
- HDU 2098 分拆素数和(素数)
HDU 2098 分拆素数和(素数) http://acm.hdu.edu.cn/showproblem.php?pid=2098 题意: 给你一个偶数,问你这个偶数有多少种方式能由两个不同的素数构成 ...
- 分享一些免费的,开源的邮件server软件
因为企业的须要,我们非常可能须要架设一个邮件server,微软的Exchange太复杂?GOOGLE出来的又收费!头大了吧,OK,贾芸斐在这里给大家分享推荐几个免费的开源的邮件server软件.希望你 ...
- 手动配置S2SH三大框架报错(二)
十二月 08, 2013 9:34:39 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...
- VC/MFC 使edit控件不能进行粘贴操作
这里使用消息拦截的方法 BOOL PersonDlg::PreTranslateMessage(MSG* pMsg) { if (GetDlgItem(IDC_EDIT_USER_ID)->m_ ...
- [页面模板框架对比] Apache Tiles VS Sitemesh
1. 原理对比 (1) Apache Tiles 顾名思义,Tile是瓷砖的意思,也就是说一个网页是由多个Tile组成的. 用户通过访问一个页面的Apache Tiles定义名,就可以访问一个由定义文 ...