byte[] byte1 = {0,0,0,0,0,0,0,0}; // 長度 8
public void getCommand(byte[] bytes) {
for(int j=0; j
問題:
bytes[j] 是 byte (基本型別),byte1 是 byte[] (陣列參考)。**基本型別不能與陣列比較**,編譯器會報錯 incomparable types: byte and byte[]。byte1[j],若 bytes.length > 8 會拋出 ArrayIndexOutOfBoundsException。public void compareArrays(byte[] bytes, byte[] target) {
int len = Math.min(bytes.length, target.length);
for (int j = 0; j < len; j++) {
// byte 提升為 int 比較,結果為 boolean
System.out.println("Index " + j + ": " + (bytes[j] == target[j]));
}
if (bytes.length != target.length) {
System.out.println("警告:陣列長度不一致,僅比較前 " + len + " 個元素。");
}
}
public void compareWithSingleValue(byte[] bytes, byte targetValue) {
for (int j = 0; j < bytes.length; j++) {
if (bytes[j] == targetValue) {
System.out.println("索引 " + j + " 符合目標值: " + targetValue);
}
}
}
// 呼叫範例
byte[] data = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09};
byte checkVal = 0x05;
compareWithSingleValue(data, checkVal); // 輸出:索引 4 符合目標值: 5
import java.util.Arrays;
public boolean areArraysEqual(byte[] a, byte[] b) {
return Arrays.equals(a, b); // 內部處理長度檢查、逐元素比較、null 安全
}
Java byte 是**有號** (-128 ~ 127)。若處理協議數據 (如 0xFF = 255),直接列印或比較可能困惑:
byte b = (byte) 0xFF; // -1
System.out.println(b); // -1
System.out.println(b == (byte)0xFF); // true (比較位模式)
// 若要當無號 0~255 處理:
int unsignedVal = b & 0xFF; // 255
System.out.println(unsignedVal == 255); // true
bytes[i] == targetByte。bytes[i] == targetArray[i] (注意長度)。Arrays.equals(arr1, arr2)。& 0xFF 轉無號 int。