① 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