1:進制轉換
轉換規則:
先把資料的每一位上的系數乘以對應基數的次幂(低位從零開始),然後相加即可
十進制到其他進制
規則:除基取餘,直到商為0,最後将餘數反轉
十進制到二進制: 除2取餘,直到商為0,最後将餘數反轉
例: 十進制13對應的二進制資料是1101
二進制到十進制的技巧(8421碼)
十進制到八進制: 除8取餘,直到商為0,最後将餘數反轉
例: 十進制13對應的八進制資料是15
十進制--二進制--八進制
A. 首先把十進制轉成二進制
B. 其次把二進制資料每三位組合。左邊不夠三位用0補位
C. 然後把每個組合計算成對應的十進制資料
D. 最後從左到右把資料相連接配接即可得到八進制
十進制到十六進制: 除16取餘,直到商為0,最後将餘數反轉
例:十進制13對應的把進制資料是D
十進制--二進制--十六進制
B. 其次把二進制資料每四位組合。左邊不夠四位用0補位
D. 最後從左到右把資料相連接配接即可得到十六進制
快速轉換法
如果你是搞網絡的,我覺得你一定要記住以下幾種二進制數的轉換值。你是一個網絡工程 師,當看到一串二進制數時,你不要告訴我你會拿出筆紙或掰手指算半天才知道它轉化成十進制的數值。要想快,那就記下下面幾種常見的二進制--十進制轉換:
以8位 來示範:
1.第一種:
00000001 1
00000010 2
00000100 4
00001000 8
00010000 16
00100000 32
01000000 64
10000000 128
2.第二種:
00000001 1
00000011 3
00000111 7
00001111 15
00011111 31
00111111 63
01111111 127
3.第三種:
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
舉個例子: 11101011
可分為:
11100000(上面第三種類型) 224
00001000(上面第一種類型) 8
00000011(上面第二種類型) 3
我們通過記住上面三種類型的轉換,再用加 法(加法口算你會吧)立即得到結果:235
==================================================================================
方法二:
熟記以下排列,其實很Easy了,從右往 左,依次是前一個數的2倍:
256 128 64 32 16 8 4 2 1
随便寫個數字比如48
48 = 32 + 16,是以在32 和 16所在的位置為1,其餘為0,
轉為2進制就是
256 128 64 32 16 8 4 2 1
0 0 0 1 1 0 0 0 0
二進制轉十進制就更簡單了,
比如随便寫的一串 01111101
先寫上 : 0 1 1 1 1 1 0 1
然後填充 128 64 32 16 8 4 2 1
十進制為 64+32+16+8+4+1=125
2. 計算機中有符号資料表示法
原碼
反碼
補碼
3. 變量
在程式的運作過程中,其值在指定範圍内變化的值
是記憶體中一個區域,用于存儲資料
變量的定義格式:
A:資料類型 變量名 = 初始化值;
變量在使用的時候
A:第一種,在聲明的時候,就初始化值
資料類型 變量名 = 初始化值;
舉例:byte b = 100; System.out.println(b);
B:第二種 在使用前,指派 聲明
指派
使用
舉例: byte b2;
b2 = 100;
System.out.println(b2);
4. 資料類型
java語言分為兩種資料類型
A:基本資料類型
B:引用資料類型(類,接口,數組)
基本資料類型
A:差別 在記憶體中配置設定的空間大小不同,進而導緻它表示的資料範圍不同
B:4類8種
◾整數
◾byte 占1個位元組//8個開關,8個二進制位 1byte = 8bit
◾short 占2個位元組
◾int 占4個位元組0
◾long 占8個位元組 其後加L或l辨別
◾浮點數
◾ float 占4個位元組 其後加F或f辨別3.3f 2^63
◾32個二進制位
◾1位符号位
◾8位代表指數位
◾23位尾數位0.9999999
◾0000000000 - 111111111 0 - 255
◾IEEE 754 0 255 特殊的值
◾1 - 254 - 127
◾1 - 127 = -126
◾254 - 127 = 127
◾double 占8個位元組
◾ 字元
◾char 占2個位元組 0 - 65535
◾ 布爾型
◾boolean This data type represents one bit of information,
◾but its "size" isn't something that's precisely defined.
◾這個資料類型代表一個比特的資訊,但它的“大小”不是精确定義的東西.
◾true,false
C:預設情況下:
整數是int類型
浮點數是double類型
5. 資料類型轉換
資料參與運算
A:整型,字元型,浮點型的資料在混合運算中互相轉換,轉換時遵循以下原則
a.容量小的類型與容量大的類型進行計算,預設轉換為容量大的資料類型;
b.資料類型按容量大小排序為: byte,short,char->int->long->float->double
c.byte 和 short運算時不能和char之間互相轉換,byte可以直接指派給short,但是他們三者在計算時首先會轉換為int類型
◾容量大的資料類型轉換為容量小的資料類型時,要加上強制轉換符,但可能造成精度降低或溢出;使用時要格外注意。
◾有多種類型的資料混合運算時,系統首先自動的将所有資料轉換成容量最大的那一種資料類型,然後再進行計算。
B:強制轉換符
◾格式:(資料類型)(要被轉換的資料) byte b = (byte)(300);
C:字元型參與運算
◾首先會去找對應字元的unicode碼值。然後運算。
◾char 類型取值範圍0~2(16)-1,我就有了一個問題?能不能把整數直接指派給char類型的變量
D:布爾型參與運算
◾不能參與運算
E:字元串參與運算
◾它是和參與運算的資料相連接配接組成了一個新的字元串。
思考:哪句是編譯失敗的呢?為什麼呢?
byte b1=3,b2=4,b;
b=b1+b2;
(1)byte,short,char三種資料類型在記憶體中運算的時候會自動類型提升為int去運算
(2)b1和b2是兩個變量值,jvm無法判斷裡面值的大小
b=3+4;
java 編譯器有常量優化機制,在編譯的時候已經将3+4的結果指派給b了
6:算術運算符+,-,*,/,%,++,--
A:%
當左邊的絕對值小于右邊:結果是左邊
當左邊的絕對值等于右邊或者是右邊倍數的時候:結果是0
當左邊的絕對值大于右邊:結果是餘數,符号取決與左邊的的符号
取餘的正負号取決于左邊,右邊忽略不記
用途:任意正整數%2 結果是要麼0,要麼1。用于切換條件
B:++,--
遞增,遞減運算符。就是加1或者減1
單獨存在,放在操作數的前面或者後面,結果一樣
參與運算時:
◾放在變量的前面,先自身加或者減1,然後再參與運算
◾放在變量的後面,先參與運算,然後再自身加或者減1
•C:+
作為資料的符号(正号)
做加法運算
字元串連接配接符"5 + 5 =" + (5 + 5);
7:指派運算符=,+=,*=
指派運算符 ◦A:=:指派運算符 把右邊的值賦給左邊
舉例:int x = 3; 把3賦給int類型變量x
int a,b,c;
a = b = c = 5;
B:+=:加指派運算符 把左邊和右邊的和賦給左邊 ◦舉例:int x = 3; x+=2;等同于 x = x + 2;
面試題
byte b = 5;
b = b + 2;//can't revert into byte;
b += 2;
b = (byte)(b + 2);
System.out.println(b);會不會報錯?
+=運算符在給b指派時,自動完成了強轉操作。
8:比較運算符==,!=,>,<,>=,<=
比較運算符的結果都是boolean型,也就是要麼是true,要麼是false。
9:邏輯運算符
邏輯與運算符 &
第一個條件 第二個條件 結果
true true true
false true false
true false false
false false false
簡單記:左右兩邊同時為true,結果為true。
邏輯或運算符 |
false true true
true false true
簡單記:左右兩邊隻要有一個結果是true,結果為true。
邏輯異或運算符 ^
true true false
簡單記:左右兩邊相同,結果為false。
邏輯非運算符 !
!true false
!false true
!!true true
短路與:
&:左邊無論什麼結果,右邊都執行。
&&:左邊為false,右邊不執行,結果為false。
int x = 10;
x > 11 && x < 15
短路或:
|:左邊無論什麼結果,右邊都執行。
作者:習慣沉澱
如果文中有誤或對本文有不同的見解,歡迎在評論區留言。
如果覺得文章對你有幫助,請點選文章右下角【推薦】一下。您的鼓勵是部落客的最大動力!
掃碼關注一線碼農的學習見聞與思考。
回複"大資料","微服務","架構師","面試總結",擷取更多學習資源!