『壹』 java位元組數組如何判斷實際元素個數。
byte a[]; //申明一個引用類型變數,a保存在棧內存中
a=new byte[10]; //在堆內存中開辟10個位元組大小空間,默認值為0,實際長度為10
int l=a.length ; //獲取位元組數組的大小
『貳』 JAVA byte數組,判斷其內部不為空
byte數組初始化之後默認每個下標的元素都是0的。你說的內部為空,又是什麼。既然已經new
byte[10]了,當然b就不為空。內部的每一個元素也不為空。
『叄』 java位元組流,字元流問題怎麼判斷一個文件要用位元組流還是用字元流
有中文就用字元流,沒中文可以用位元組流,這個應該根據你具體情況而定,就是看這個文件裡面內容的字元是什麼樣的,像中文就是一個位元組放不下,需要用兩個位元組來存儲,那麼字元流一個字元一個字元的往裡讀,所以能讀出來,你用位元組流就不行了,一個字元一個字元的往裡讀,把一個漢字拆成一半了,到時候操作系統不認識,顯示都問號,
一看到二進制你有啥不明白的,好多人都知道java裡面1個字元等於2個位元組,1個位元組等於8位,像背順口溜一樣,其實啥意思都不知道,我都服了,1個位元組等於8位,8位啥呀?2進制代碼啊,也就是01序列,這個序列是8位數,中文比較大,得佔16位,所以是2個位元組。 答案補充 第三行打錯字了,是:用位元組流就不行了,一個位元組一個位元組的往裡讀 答案補充 誰拷貝答案了,哪些答案都是垃圾,沒一個正確的,我拷貝它干什麼,
內存的存儲體上面分若干個存儲單元,一個存儲單元可以存儲8位或者16為,或者32位的,或者....的01序列,一個位元組等於8位,比如11111111,一個漢字在計算機內部要使用2個位元組來存儲,一個裝不下,也就是16位的01,你用位元組流讀,一下讀8位出來,還有8位給人家仍了那能行,么 答案補充 趕緊看 計算機組成原理 去吧
『肆』 JAVA中byte類型的介紹。 謝謝
1、在Java中,byte類型的數據是8位帶符號的二進制數。最高位表示正負,0為正,1為負。
2、java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。
3、正數的最高位都是 0 ,正數的值就是二進製表示的值。
4、負數的最高位都是 1 ,負數的值是 取反後加一 然後加個負號得到的值。
(4)javabyte判斷擴展閱讀
1、java基本數據類型
JAVA中一共有八種基本數據類型,分別是byte、short、int、long、float、double、char、boolean。
2、java各數據類型取值范圍
byte,整型,1個位元組,范圍:-2的7次方 ~ 2的7次方-1;
short,整型,2個位元組,范圍:-2的15次方 ~ 2的15次方-1;
int,整型,4個位元組,范圍:-2的31次方 ~ 2的31次方-1;
long,整型,8個位元組,范圍:-2的63次方 ~ 2的63次方-1;
float,浮點型,4個位元組,范圍:3.402823e+38 ~ 1.401298e-45;
double,浮點型,8個位元組,范圍:1.797693e+308~ 4.9000000e-324;
char,文本型,2個位元組,范圍:0~2的16次方-1;
boolean,布爾型,1個位元組,范圍:true/false;
參考資料
網路-java字元型
『伍』 java中的byte有什麼作用
在今天,byte位元組就是一個八位元組,使用其它位數的機器都進了博物館。 java也提供了一個byte數據類型,並且是基本類型。java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。不幸的是,byte的用作計數的時間遠少於用表達基本內存單元的時間。比如從stream里讀入一個雙位元組字元,我們先收到2個byte。為了把byte轉換成適當的形式,需要對byte值做一些比較,比如判斷字元集要比較其是否在某個編碼范圍內,比如GBK 0x8140~0xFEFE,然後new適當的string。 signed byte 把 0x00 ~ 0xff 映射成 0~127 -128~-1 兩段,注意當與literal比較時,java自動將literal識別成int 可以用 下面的小程序來驗證: 1 public class JavaByte 2 { 3 public static void main(String[] args) 4 { 5 byte b = 0; 6 for ( int i = 0; i <= 0xff; ++i ) 7 { 8 b = (byte)i; 9 System.out.print(" "+i+":"+b+", "); 10 } 11 } 12 } 當收到(0xC7B0)這個GBK字元時,要判斷 0x81 <= 0xC7 <= 0xFE 是否成立,實際變成判斷 -127 < -57 < -2,唔,萬幸,可以直接比較 low < ch < high。如果要判斷 0x00 <= 0xC7 <= 0x80 (ASC Char),這回麻煩了,變成判斷 (0 <= -57 <= 127) || ( 0x57 == -128 )。比較簡單的辦法用 (b+256)%256的辦法令其值回到0~255,或者用&0xff並賦給一個int。考慮到jvm里的byte其實也是32位的,所以在計劃用byte的地方,直接用integer並不會有什麼實際的損失,而 DataInputStream也提供了一個readUnsignedByte()方法返回的是int。所以真正的解決方案是忘掉byte,直接上 int。至於為什麼java沒有unsigned數據類型,照下面這個interview里Jams Golsing的意思,應該是java應該簡單而unsigned算術過於復雜了會讓大多數程序員產生誤解誤用:
『陸』 java 如何判斷一個byte型的數為BCD碼
你將0~9的數字也轉換成同樣類型的數據,並且放在一個map中,用Byte的BCD嘛對map取值,如果取map返回的對象不為null,就說明達到了你的效果了
『柒』 java中byte類型的數據怎麼與數字比較大小
byte
num1=(byte)126;//整數默認為int類型,大類型給小類型,有損精度,強制轉換。
byte
num2=(byte)97;
System.out.println(num1+">"+num2);//
126>97
希望對你有所幫助。
『捌』 在java中如何判斷一個字元串是中文的還是英文的
下滿給出示例代碼,希望對你有幫助
Java中判斷字元串的編碼有兩種思路:
一種是根據byte的長度判斷,英文的字母數字好標點符號都是一個byte,且值在0-255之間
另一種是根據中文的Unicode取值范圍判斷,這個就是把所以的范圍都包含,才能判斷正確,參考unicode中文范圍:
示例代碼:
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassStringTest{
//英文佔1byte,非英文(可認為是中文)佔2byte,根據這個特性來判斷字元
publicstaticbooleancheckChar(charch){
if((ch+"").getBytes().length==1){
returntrue;//英文
}else{
returnfalse;//中文
}
}
publicstaticStringcheckString(Stringstr){
Stringres="";
if(str!=null){
for(inti=0;i<str.length();i++){
//只要字元串中有中文則為中文
if(!checkChar(str.charAt(i))){
res="中文";
break;
}else{
res="英文";
}
}
}
returnres;
}
//判斷是不是中文
publicstaticbooleanisChinese(charc){
Character.UnicodeBlockub=Character.UnicodeBlock.of(c);
if(ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
||ub==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
||ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
||ub==Character.UnicodeBlock.GENERAL_PUNCTUATION
||ub==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
||ub==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){
returntrue;
}
returnfalse;
}
//判斷是不是英文字母
publicstaticbooleanisEnglish(StringcharaString){
returncharaString.matches("^[a-zA-Z]*");
}
//根據中文unicode范圍判斷u4e00~u9fa5不全
publicstaticStringisChinese(Stringstr){
StringregEx1="[\u4e00-\u9fa5]+";
StringregEx2="[\uFF00-\uFFEF]+";
StringregEx3="[\u2E80-\u2EFF]+";
StringregEx4="[\u3000-\u303F]+";
StringregEx5="[\u31C0-\u31EF]+";
Patternp1=Pattern.compile(regEx1);
Patternp2=Pattern.compile(regEx2);
Patternp3=Pattern.compile(regEx3);
Patternp4=Pattern.compile(regEx4);
Patternp5=Pattern.compile(regEx5);
Matcherm1=p1.matcher(str);
Matcherm2=p2.matcher(str);
Matcherm3=p3.matcher(str);
Matcherm4=p4.matcher(str);
Matcherm5=p5.matcher(str);
if(m1.find()||m2.find()||m3.find()||m4.find()||m5.find())
return"中文";
else
return"英文";
}
publicstaticvoidmain(String[]args){
System.out.println("使用長度判斷:");
System.out.println(checkString("Hello++"));
System.out.println(checkString("Hello++。、,?"));
System.out.println(checkString("Hello++編程"));
System.out.println(checkString("編程"));
System.out.println(" 使用正則表達式判斷:");
System.out.println(isChinese("Hello++"));
System.out.println(isChinese("Hello++。、,?"));
System.out.println(isChinese("Hello++編程"));
System.out.println(isChinese("編程"));
System.out.println(" 使用Character.UnicodeBlock");
System.out.println(isChinese('h')?"中文":"英文");
System.out.println(isChinese(',')?"中文":"英文");
System.out.println(isChinese('。')?"中文":"英文");
System.out.println(isChinese('編')?"中文":"英文");
}
}