導航:首頁 > 編程語言 > java000

java000

發布時間:2025-01-23 12:12:57

1. java中二進制怎麼表示

二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。
1、Java中定義兩個數,然後分別列印出它們的二進製表示:
System.out.println("Java二進制7: "+Integer.toBinaryString(7));
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
輸出:
Java二進制7:
111
Java二進制-7:

可以看到Java中對於數的表示屬於有符號的,那麼這個是怎麼來的?
7好辦,直接是111
-7轉化二進制的過程:
(1)把-7轉化成7,二進制是
111
(2)Java中對於不滿32位的int二進制自動補齊,所以變成了
(29個0)111
(3)然後取反
(29個1)000
(4)然後加1
(29個1)001
這就是-7的整個轉化過程,那麼現在有一個問題,如果有一個文本文件,每一行有八位二進制,表示的范圍是(0~255),也就是用一個位元組表示的無符號整數,如果現在要把這些二進制轉化成整數存到文件里應該怎麼做?
文件:
line1

11111110

(254)
line2

00000000

(0)
假設用Java讀進了第一行,那麼直接列印出來的值是-2,不符合要求,這時讓-2變254有兩種辦法:
(1)用Java自帶的方法,Byte.toUnsignedInt((byte)
-2)(ps.-2的二進製表示就是line1),這樣列印出來的就是254了
System.out.println(Byte.toUnsignedInt((byte) -2));
輸出:254
第二種方法的原理:
Java中-2的二進製表示:(這個二進制的後八位就是line1,可以直接列印的話Java把其當做了負數
-2)
Java中255的二進製表示:(24個『0』,8個『1』)
做與後變為:
這樣做與後表示的數就是正數了
254。可以想一下,假設每一行用2個位元組表示一個無符號數,那麼可以把每一行變成正整數用方法2怎麼做?
2.Java中的>>和>>>
'>>'
算術右移,向右移左邊補符號位
'>>>'
邏輯右移,向右移左邊補0
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
System.out.println("-7>>2: "+Integer.toBinaryString(-7>>2));
System.out.println("-7>>>2: "+Integer.toBinaryString(-7>>>2));輸出:
Java二進制-7:
-7>>2:
-7>>>2: //正常應該這樣(00)左邊的兩個0不顯示

2. char*language[]={"fortran","basic","pascal","java","c#"};

由於char*在C中表示字元串,因此,language[2]就是pascal的首字母地址。
還一種更恰當的理解是[]不考慮內存分配等價於*故language可以看成char**類型,內存分配如下:
fortran0
basic000
pascal00
java0000
c#000000
這里的0是ASCII的\0
language是[0][0]位置,language[2]正好是第三行第一列

第二問同理,記得數組常量始終是指向數組的第一個元素地址即可,因此str+2=str[2]=z

3. java 特殊符號輸出 絕對基礎

JAVA中轉義字元:

1.八進制轉義序列:\ + 1到3位5數字;范圍'\000'~'\377'
\0:空字元
2.Unicode轉義字元:\u + 四個十六進制數字;0~65535
\u0000:空字元
3.特殊字元:就3個
\":雙引號
\':單引號
\\:反斜線
4.控制字元:5個

\' 單引號字元

\\ 反斜杠字元

\r 回車

\n 換行

\f 走紙換頁

\t 橫向跳格

\b 退格

點的轉義:. ==> u002E
美元符號的轉義:$ ==> u0024
乘方符號的轉義:^ ==> u005E
左大括弧的轉義:{ ==> u007B
左方括弧的轉義:[ ==> u005B
左圓括弧的轉義:( ==> u0028
豎線的轉義:| ==> u007C
右圓括弧的轉義:) ==> u0029
星號的轉義:* ==> u002A
加號的轉義:+ ==> u002B
問號的轉義:? ==> u003F
反斜杠的轉義: ==> u005C
======================================================================
下面的程序使用了兩個Unicode的轉義字元,它們是用其十六進制代碼來表示Unicode字元。那麼,這個程序會列印什麼呢?
Java代碼
public class EscapeRout{
public static void main(String[] args){
// \u0022 是雙引號的Unicode轉義字元
System.out.println("a\u0022.length()
+\u0022b".length());
}
}

public class EscapeRout{
public static void main(String[] args){
// \u0022 是雙引號的Unicode轉義字元
System.out.println("a\u0022.length()
+\u0022b".length());
}
}

對該程序的一種很膚淺的分析會認為它應該列印出26,因為在由兩個雙引號"a\u0022.length()+\u0022b"標識的字元串之間總共有26個字元。
稍微深入一點的分析會認為該程序應該列印16,因為兩個Unicode轉義字元每一個在源文件中都需要用6個字元來表示,但是它們只表示字元串中的一個字元。因此這個字元串應該比它的外表看其來要短10個字元。 如果你運行這個程序,就會發現事情遠不是這么回事。它列印的既不是26也不是16,而是2。

理解這個謎題的關鍵是要知道:Java對在字元串字面常量中的Unicode轉義字元沒有提供任何特殊處理。編譯器在將程序解析成各種符號之前,先將Unicode轉義字元轉換成為它們所表示的字元[JLS 3.2]。因此,程序中的第一個Unicode轉義字元將作為一個單字元字元串字面常量("a")的結束引號,而第二個Unicode轉義字元將作為另一個單字元字元串字面常量("b")的開始引號。程序列印的是表達式"a".length()+"b".length(),即2。

如果該程序的作者確實希望得到這種行為,那麼下面的語句將要清楚得多:

Java代碼
System.out.println("a".length()+"b".length());

更有可能的情況是該作者希望將兩個雙引號字元置於字元串字面常量的內部。使用Unicode轉義字元你是不能實現這一點的,但是你可以使用轉義字元序列來實現[JLS 3.10.6]。表示一個雙引號的轉義字元序列是一個反斜杠後面緊跟著一個雙引號(\」)。如果將最初的程序中的Unicode轉義字元用轉義字元序列來替換,那麼它將列印出所期望的16(錯誤,應該是14,不知道是怎麼會出來16):

Java代碼
System.out.println("a\".length()+\"b".length());

許多字元都有相應的轉義字元序列,包括單引號(\')、換行(\n)、製表符(\t)和反斜線(\\)。你可以在字元字面常量和字元串字面常量中使用轉義字元序列。
實際上,你可以通過使用被稱為八進制轉義字元的特殊類型的轉義字元序列,將任何ASCII字元置於一個字元串字面常量或一個字元字面常量中,但是最好是盡可能地使用普通的轉義字元序列。

普通的轉義字元序列和八進制轉義字元都比Unicode轉義字元要好得多,因為與Unicode轉義字元不同,轉義字元序列是在程序被解析為各種符號之後被處理的。

ASCII是字元集的最小公共特性集,它只有128個字元,但是Unicode有超過65,000個字元。一個Unicode轉義字元可以被用來在只使用ASCII字元的程序中插入一個Unicode字元。一個Unicode轉義字元精確地等價於它所表示的字元。

Unicode轉義字元被設計為用於在程序員需要插入一個不能用源文件字元集表示的字元的情況。它們主要用於將非ASCII字元置於標識符、字元串字面常量、字元字面常量以及注釋中。偶爾地,Unicode轉義字元也被用來在看起來頗為相似的數個字元中明確地標識其中的某一個,從而增加程序的清晰度。

總之,在字元串和字元字面常量中要優先選擇的是轉義字元序列,而不是Unicode轉義字元。Unicode轉義字元可能會因為它們在編譯序列中被處理得過早而引起混亂。不要使用Unicode轉義字元來表示ASCII字元。在字元串和字元字面常量中,應該使用轉義字元序列;對於除這些字面常量之外的情況,應該直接將ASCII字元插入到源文件中。

閱讀全文

與java000相關的資料

熱點內容
表格怎麼轉移到另一個文件夾 瀏覽:923
同態加密gpu 瀏覽:216
程序員告訴你網賭為什麼贏不了 瀏覽:971
程序員最帥操作 瀏覽:72
雲伺服器可以隨時更換嗎 瀏覽:489
老款車在哪裡可以買到app 瀏覽:460
程序員事業單位 瀏覽:68
特來電需要用哪個App 瀏覽:881
電腦如何共享其他伺服器 瀏覽:260
php網站性能優化 瀏覽:354
被子收納袋壓縮真空 瀏覽:30
h1z1選什麼伺服器 瀏覽:484
蘋果版三國殺怎麼在安卓上下載 瀏覽:728
安潤國際app在哪裡下載 瀏覽:438
iospdf教程下載 瀏覽:332
加密貨幣換手率300表示什麼 瀏覽:727
手機wps新建文件夾存照片 瀏覽:399
單片機rgbled 瀏覽:963
怎麼通過文件加密後發給微信好友 瀏覽:90
用虛擬機編程 瀏覽:821