① java 中关于byte数组的赋初值问题
byte short int long
这几种类型都是java中的整数类型
你肯定对int比较了解,byte和int的区别是int是32位,byte是8位,表示的数字范围为回:-128到+127
所以答
第一个byte中元素都没超过范围,都以数字显示。第二个byte数组中的元素都是char类型,char类型是占16位的,一般转换为byte是由大到小,需要强制转换,但这些char并没有超出byte的范围,所以不用
在打印时会将char元素转换成对应的ascii码,具体你可以去查
toString的确是输出字母,但'a'是字符,不是字符串,两个完全不同的概念
字符串+primitive类型就是转换为字符型的最简单方法,例:
4+"" 将数字4转换为字符串4 现在的4不再是数字,而是字符串,懂?
② Java各类型的初始值
基本数据类型作为类的成员时,
即使没有对其进行初始化,
java也会确保它有一个默认值,如下:
基本类型的初始值 基本类型 默认值
boolean false
char \u0000(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
上面的默认值,是当变量作为类的成员使用时才有的,
java这样做是保证基本类型的成员变量得到初始化,
防止产生程序错误,
但这些值在实际的程序中可能都是不合理的,
所以最好明确的给出初始值。
上面的默认值对在程序中非成员变量就不适用了,
非成员变量如果不明确给出初始值,就可能是任何值。
在java程序编译时会提示你一个错误,而不是c++中的警告。
至于那些应用类型,像数组,对象啦,有些复杂,根据你的类型而定,对象一般弄人为null,
数组根据你的类型,按照基本数据类型的默认值来初始化……
明白了么?
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yongpang/archive/2008/01/30/2073765.aspx
③ java 中,char 数组转换成 byte数组(急,在线等)
package com.example.lib;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.*;
import java.nio.charset.Charset;
public class MyClass {
public static void main(String[] args) throws IOException {
FileInputStream fs; //定义流对象变量
fs = new FileInputStream("/Users/mac/AndroidStudioProjects/MyApplication/lib/src/main/java/com/example/lib/mytext.txt");
byte[] bytes = new byte[fs.available()]; //定义接收数据的字节数组,并用流对象初始化数组大小
fs.read(bytes); //装载数据
char[] w = getChars(bytes);//将字节数组转化为字符数组,注意数组末尾会有空字符
String s = new String(w); //利用字符串构造函数来构造字符串,
System.out.println("结果为:"+s.trim());输出时,去掉末尾空格字符
}
private static byte[] getBytes (char[] chars) {
Charset cs = Charset.forName ("UTF-8");//设定字符集编码代号
CharBuffer cb = CharBuffer.allocate (chars.length);//按照字符数组长度进行分配空间
cb.put (chars); //装载数据
cb.flip (); //指针复位
//按照编码规则进行编码
ByteBuffer bb = cs.encode (cb);
return bb.array();
}
private static char[] getChars (byte[] bytes) {
Charset cs = Charset.forName ("UTF-8");//指定字符集编码
ByteBuffer bb = ByteBuffer.allocate (bytes.length);
bb.put (bytes);//装载数据
bb.flip ();//调整回指针为0
CharBuffer cb = cs.decode (bb);//按照指定字符集进行解码
return cb.array();//返回字符数组
}
}
④ 在java中操作 byte数组
没有现成的 一般都是我们自己写工具类 可以给你占几个常用的方法:
public static int splitToArray(String[] strCompName, int count, int len, int amount, int repariFeeIndex, String strPrefix) throws Exception {
String [] strCompNameTemp ;
if(strCompName[count].length() > len) {
strCompNameTemp = splitToArray(strCompName, count, len, strPrefix);
for(int compIndex=0; compIndex<strCompNameTemp.length; compIndex++) {
if((repariFeeIndex + compIndex)>amount) {
break;
}
if(compIndex != 0) {
count++;
}
strCompName[count] = strCompNameTemp[compIndex];
}
} else if(count != 0){
strCompName[count] = strPrefix + strCompName[count];
}
return ++count;
}
⑤ java编程,这是什么意思 new char[] { '0', '1', '2', '3', '
new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E' }[15] = 70;
这句话实际上是两种合在一起了,和下面两句意思一样:
char[] array = new char[]{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E' };
array[15] = 70;
就是让字符数组的下内标为15的元素的ASCII码为70。但容是下标15实际上越界了,会出错的。
不过这种写法在真正写程序的时候不会出现,创建的对象没有引用,而且什么也没有做,没有意义。
⑥ java中如何去掉byte数组中的空值
byte类型的数组不存在空值的,在数组初始化的时候所有元素都会默认被赋值0