Android基礎知識總結(一)

1.面向對象(OOP):針對業(yè)務處理過程的實體及其屬性和行為進行抽象封裝以獲得高效清晰的邏輯單元劃分庵朝。

三大特性:①封裝(隱藏對象的屬性和實現細節(jié),僅對外提供公共訪問方式侮腹,將變量隔離便于使用嘲碧,提高代碼的服用小和安全性);②繼承(提高代碼的復用性父阻,繼承是多態(tài)的前提)愈涩;③多態(tài)(父類或接口定義的引用變量可以指向子類或具體實現類的形象,提高了程序的拓展性)至非。

五大原則單一職責钠署、開放封閉、里氏替換荒椭、依賴倒置谐鼎、接口分離。

2.數據類型:byte 1個字符趣惠,short 狸棍、char2 個字符,int 味悄、float 4個字符草戈,long 、double 8個字符侍瑟。

volatile是一個類型修飾符(type specifier)volatile的作用是作為指令關鍵字唐片,確保本條指令不會因編譯器的優(yōu)化而省略丙猬,且要求每次直接讀值。(from百度)

volatile的變量是說這變量可能會被意想不到地改變费韭,這樣茧球,編譯器就不會去假設這個變量的值了。

在JDK1.7之前星持,switch語句僅支持byte抢埋、short、char督暂、int揪垄,在JDK1.7之后,枚舉逻翁、字符串類型都可以饥努,通過String.hashcode轉成int進行判斷。

String不可變原因:字符串常量池的需要卢未;運行String對象緩存HashCode肪凛,提高效率;多線程安全辽社。

String 轉integer的方法和原理

?①Integer.parseInt(String str)調用Integer內部的;

②Integer.parseInt(String s, int radix)parseInt內部首先判斷字符串是否包含符號(-或者+)翘鸭,則對相應的negative和limit進行賦值滴铅,然后再循環(huán)字符串,對單個char進行數值計算

③Character.digit(char ch, int radix)?返回指定基數中字符表示的數值就乓。函數肯定進入到0-9字符的判斷(相對于string轉換到int)汉匙,否則會拋出異常,數字就是如上面進行拼接然后生成的int類型數值生蚁。

限定參數類型的上界:參數類型必須是T或T的子類型

<? super T> 限定參數類型的下界:參數類型必須是T或T的超類型

3.equal和==的區(qū)別:equal 比較對象噩翠,==比較原生類型

equal:存儲空間的值是否相同,字符串內容比較邦投,值是否相同

==:是否為同一內存空間伤锚,內存空間是否相同,引用是否相同

如果一個類重寫了equals()方法志衣,則一定也要重寫hashCode()方法屯援,原因是:雖然equals()方法重寫可以保證正確判斷兩個對象在邏輯是否相同,但是hashCode()方法映射的物理地址是不相同的念脯,依然會將邏輯上相同的兩個元素存入集合狞洋,但是第二個對象的內容會是Null.

參考文章:關于java中Object類中的equals()和hashCode()方法的使用個人總結 - 張森(ZhangSen) - 博客園

4.字符串運行速度:StringBuilder > StringBuffer (線程安全)> String ,String為常量绿店,其它為變量吉懊,所以運行慢庐橙。

? ? StringBuffer對象則代表一個字符序列可變的字符串,當一個StringBuffer被創(chuàng)建以后借嗽,通過StringBuffer提供的append()态鳖、insert()、reverse()淹魄、setCharAt()郁惜、setLength()等方法可以改變這個字符串對象的字符序列。一旦通過StringBuffer生成了最終想要的字符串甲锡,就可以調用它的toString()方法將其轉換為一個String對象兆蕉。StringBuffer對象是一個字符序列可變的字符串,它沒有重新生成一個對象缤沦,而且在原來的對象中可以連接新的字符串虎韵。

StringBuilder和StringBuffer基本相似,兩個類的構造器和方法也基本相同缸废。不同的是:StringBuffer是線程安全的包蓝,而StringBuilder則沒有實現線程安全功能,所以性能略高

5.Queue 隊列:先進先出企量,Stack 棧:后進先出测萎。Collect -->List/Set/Map

6.ListView機制:用到的適配器有ArrayAdapter、SimpleAdapter届巩、BaseAdapter

BaseAdapter 重寫的方法getCount()硅瞧、getItem()、getItemId()恕汇、getView()腕唧,每繪制一次就調用一次getView(),在getView()中將事先定好的layout布局確定顯示的效果并返回一個view對象作為一個item 顯示出來瘾英,getItem()枣接、getItemId()在調用LIstView響應方法時調用。

7.Fragment生命周期?

參考文章:Fragment各種情況的生命周期 - 貓吻魚的博客 - CSDN博客

onAttach(): 完成Fragment和Activity的綁定缺谴,參數中的Activity即為要綁定的Activity但惶,可以進行賦值等操作。

onCreate() : 完成Fragment的初始化

onCreateView() : 加載Fragment布局瓣赂,綁定布局文件

onActivityCreated() : 表名與Fragment綁定的Activity已經執(zhí)行完成了onCreate榆骚,可以與Activity進行交互操作。

onStart() : Fragment變?yōu)榭梢姞顟B(tài)

onResume() : Fragment變?yōu)榭山换顟B(tài)

onPause(): Fragment變?yōu)椴豢山换顟B(tài)(不代表不可見)

onSaveInstanceState():保存當前Fragment的狀態(tài)煌集。記錄一些數據妓肢,比如EditText鍵入的文本,即使Fragment被回收又重新創(chuàng)建苫纤,一樣能恢復EditText之前鍵入的文本碉钠。

onStop(): Fragment變?yōu)椴豢梢姞顟B(tài)

onDestroyView() : 銷毀Fragment的有關視圖纲缓,但并未和Activity解綁,可以通過onCreateView()重新創(chuàng)建視圖喊废。Fragment銷毀時或者ViewPager+Fragment情況下會調用

onDestroy() : 銷毀Fragment時調用

onDetach() : 解除和Activity的綁定祝高。Fragmen銷毀最后一步。

8.四大引用類型

強引用:?是指創(chuàng)建一個對象并把這個對象賦給一個引用變量污筷。?強引用有引用變量指向時永遠不會被垃圾回收工闺,JVM寧愿拋出OutOfMemory錯誤也不會回收這種對象。

軟引用(SoftReference):如果一個對象具有軟引用瓣蛀,內存空間足夠陆蟆,垃圾回收器就不會回收它;如果內存空間不足了惋增,就會回收這些對象的內存叠殷。只要垃圾回收器沒有回收它,該對象就可以被程序使用诈皿。軟引用可用來實現內存敏感的高速緩存,比如網頁緩存林束、圖片緩存等。使用軟引用能防止內存泄露稽亏,增強程序的健壯性壶冒。SoftReference的特點是它的一個實例保存對一個Java對象的軟引用, 該軟引用的存在不妨礙垃圾收集線程對該Java對象的回收截歉。也就是說依痊,一旦SoftReference保存了對一個Java對象的軟引用后,在垃圾線程對 這個Java對象回收前怎披,SoftReference類所提供的get()方法返回Java對象的強引用。另外瓶摆,一旦垃圾線程回收該Java對象之 后凉逛,get()方法將返回null。

弱引用(WeakReference):弱引用也是用來描述非必需對象的群井,當JVM進行垃圾回收時状飞,無論內存是否充足,都會回收被弱引用關聯的對象书斜。在java中诬辈,用java.lang.ref.WeakReference類來表示。

虛引用(PhantomReference):虛引用和前面的軟引用荐吉、弱引用不同焙糟,它并不影響對象的生命周期。在java中用java.lang.ref.PhantomReference類表示样屠。如果一個對象與虛引用關聯穿撮,則跟沒有引用與之關聯一樣缺脉,在任何時候都可能被垃圾回收器回收。要注意的是悦穿,虛引用必須和引用隊列關聯使用攻礼,當垃圾回收器準備回收一個對象時,如果發(fā)現它還有虛引用栗柒,就會把這個虛引用加入到與之 關聯的引用隊列中礁扮。程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收瞬沦。如果程序發(fā)現某個虛引用已經被加入到引用隊列太伊,那么就可以在所引用的對象的內存被回收之前采取必要的行動。

對于強引用蛙埂,我們平時在編寫代碼時經常會用到倦畅。而對于其他三種類型的引用,使用得最多的就是軟引用和弱引用绣的,這2種既有相似之處又有區(qū)別叠赐。它們都是用來描述非必需對象的,但是被軟引用關聯的對象只有在內存不足時才會被回收屡江,而被弱引用關聯的對象在JVM進行垃圾回收時總會被回收芭概。

9.線程是進程的子集,一個進程可有多個線程惩嘉。

線程間通訊方式:①共享變量罢洲;②管道;③handler文黎;④runOnUiThread(Runnable)惹苗;⑤view.post(Runnable)。

?進程間通訊方式:①管道耸峭;②FIFO桩蓉;③消息隊列;④信號量劳闹;⑤共享內存區(qū)院究;⑥套接字socket信號。

?Activity間的通信方式:①Intent本涕;②借助類的靜態(tài)變量业汰;③借助全局變量/Application;④借助外部工具(SharedPreference菩颖、SQLite样漆、File、剪貼板)位他;⑤借助Service氛濒。

10.PackageManagerService APP安裝有關的service产场,WindowManagerService APP調用窗口相關的service,ActivityManagerService 系統(tǒng)的引導服務舞竿,支持應用進程的啟動京景、切換、調度骗奖、四大組件的啟動和管理确徙。

自定義系統(tǒng)服務:在ServiceManager注冊,在Framework/base增加JNI执桌,C++ 文件鄙皇,在build 配置mk文件,全部編譯仰挣,才可調用伴逸。

上一篇:Android面試總結

下一篇:Android基礎知識總結(二)

每天進步一點點(190507)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市膘壶,隨后出現的幾起案子错蝴,更是在濱河造成了極大的恐慌,老刑警劉巖颓芭,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顷锰,死亡現場離奇詭異,居然都是意外死亡亡问,警方通過查閱死者的電腦和手機官紫,發(fā)現死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來州藕,“玉大人束世,你說我怎么就攤上這事〈膊#” “怎么了良狈?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長笨枯。 經常有香客問我,道長遇西,這世上最難降的妖魔是什么馅精? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮粱檀,結果婚禮上洲敢,老公的妹妹穿的比我還像新娘。我一直安慰自己茄蚯,他們只是感情好压彭,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布睦优。 她就那樣靜靜地躺著,像睡著了一般壮不。 火紅的嫁衣襯著肌膚如雪汗盘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天询一,我揣著相機與錄音隐孽,去河邊找鬼。 笑死健蕊,一個胖子當著我的面吹牛菱阵,可吹牛的內容都是我干的。 我是一名探鬼主播缩功,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼晴及,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嫡锌?” 一聲冷哼從身側響起虑稼,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎世舰,沒想到半個月后动雹,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡跟压,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年胰蝠,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片震蒋。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡茸塞,死狀恐怖,靈堂內的尸體忽然破棺而出查剖,到底是詐尸還是另有隱情钾虐,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布笋庄,位于F島的核電站效扫,受9級特大地震影響,放射性物質發(fā)生泄漏直砂。R本人自食惡果不足惜菌仁,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望静暂。 院中可真熱鬧济丘,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峡碉,卻和暖如春近哟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背异赫。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工椅挣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塔拳。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓鼠证,卻偏偏與公主長得像,于是被迫代替她去往敵國和親靠抑。 傳聞我的和親對象是個殘疾皇子量九,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容

  • 所有知識點已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數? 在 Jav...
    侯蛋蛋_閱讀 2,407評論 1 4
  • 九種基本數據類型的大小颂碧,以及他們的封裝類荠列。(1)九種基本數據類型和封裝類 (2)自動裝箱和自動拆箱 什么是自動裝箱...
    關瑋琳linSir閱讀 1,880評論 0 47
  • 一、基礎知識:1载城、JVM肌似、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機...
    殺小賊閱讀 2,365評論 0 4
  • 在一個方法內部定義的變量都存儲在棧中,當這個函數運行結束后诉瓦,其對應的棧就會被回收川队,此時,在其方法體中定義的變量將不...
    Y了個J閱讀 4,413評論 1 14
  • 面向對象的三個特征 封裝,繼承,多態(tài).這個應該是人人皆知.有時候也會加上抽象. 多態(tài)的好處 允許不同類對象對同一消...
    Blizzard_liu閱讀 1,302評論 0 6