依舊記得當初學習C++的理想----開發遊戲外掛,記得在大學開發的第一款遊戲外掛是連連看,讀取地址數據,而後算法匹配,模擬單擊事件,當時被不少同窗羨慕妒忌。java
JAVA開發是2012年3月份開始開發Android後專一的,Java的學習是在大學完畢的,當時JAVA考試95分滿覺得Java沒啥難的。後來從事android開發發現本身對java的理解不深。android
Java要點
c++
要點 | 定義 | 描寫敘述 |
基本數據類型 | 一、byte(8) 二、shot (16) 三、int(32) 四、long(64) 五、float(32) 六、double(62) 七、char(16) 八、boolean(1) |
|
持有對象 | Collection(接口) ->List(子接口 前後順序 可反覆) ->LinkedList (鏈表 不一樣步 線程不安全) ->ArrayList (數組 不一樣步 線程不安全) ->Vector (數組 同步 線程安全) ->Stack ->Set (子接口 僅僅接收一次 內部排序) ->HashSet ->LinkedHashSet ->TreeSet Map(接口 鍵值) ->Hashtable (同步 安全) ->LinkedHashMap (不一樣步 不安全) ->WeakHashMap ->TreeMap ->IdentifyHashMap |
Collection 是對象集合。 Collection 有兩個子接口 List 和 Set List 可以經過下標 (1,2..) 來取得值,值可以反覆 而 Set 僅僅能經過遊標來取值。並且值是不能反覆的 ArrayList , Vector , LinkedList 是 List 的實現類 ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數組實現的 LinkedList 是線程不安全的。底層是由鏈表實現的 Map 是鍵值對集合 HashTable 和 HashMap 是 Map 的實現類 HashTable 是線程安全的,不能存儲 null 值 HashMap 不是線程安全的,可以存儲 null 值 |
泛型 | 參數化類型,也就是說所操做的數據類型被指定爲一個參數。這樣的參數類型可以用在類、接口和方法的建立中,分別稱爲泛型類、泛型接口、泛型方法。 Java語言引入泛型的優勢是安全簡單。 | 相應C++的是模塊 |
I/O系統 | Java的I/O就是Java的輸入與輸出操做 | 抽象類InputStream和OutputStream是所有字節流的基類,它們分別提供了輸入和輸出處理的基本接口,並且分別實現了當中的某些方法.由於InputStream和OutputStream都是抽象類,因此不能直接建立它們的對象.InputStream類中所提供的方法主要有:從流中讀取數據,關閉流並且釋放與該流相關的系統資源和使用輸入流中的標記等.OutputStream類中所提供的方法主要有:輸出數據,更新輸出流和關閉流等. 涉及的類: 字節輸入流包含FileInputStream、BufferedInputStream和DateInputStream。 與之相應的字節輸出流包含FileOutputStream、BufferedOutputStream和DateOutputStream。 |
垃圾回收器 | Java虛擬機(JVM)的三個重要模塊(另外兩個是解釋器和多線程機制)之中的一個。 | 經過垃圾收集器(Garbage Collection。GC)本身主動管理內存的回收。程序猿不需要經過調用函數來釋放內存。 |
初始化順序 | 一、靜態成員 二、靜態函數 三、靜態區 四、其餘 |
|
引用 | 主要的變量類型僅僅有一塊存儲空間(分配在stack中), 而引用類型有兩塊存儲空間(一塊在stack中,一塊在heap中), 方法形參的值傳遞(引用)是指形參和傳進來的參數指向同一個值的內存(heap)中; | java是傳值仍是傳引用? 基本類型是傳值 |
併發 | 多進程編程 | Java提供底層的協調機制,以控制對共享資源的訪問。這裏的協調,包含競爭,合做和通訊。 競爭:synchronized、lock 合做:notifyAll、interrupt、signalAll 通訊:PipedReader / PipedWriter |
C++要點算法
要點 | 定義 | 描寫敘述 |
typedef 和#define | typedef是用來聲明類型別名的,在實際編寫代碼過程使用typedef每每是爲了添加代碼的可讀性。 #define是一個宏定義命令,用來定義一個常量(包含無參常量和有參常量),它自己並不在編譯過程當中運行,而是在預處理階段就已經完畢了,所以不做不論什麼正確性檢查,僅僅進行不關含義的字符串替換。 |
|
指針/智能指針 | 指針是一個指示器,它告訴程序在內存的哪塊區域可以找到數據。 | 智能指針其實是一個棧對象,並不是指針類型,在棧對象生命期即將結束時,智能指針經過析構函數釋放有它管理的堆內存。
|
模板與泛型編 | 泛型編程就是以獨立於不論什麼特定類型的方式編寫代碼。而模板是泛型編程的基礎。 | |
STL 容器 | 標準STL序列容器:vector、string、deque和list。 標準STL關聯容器:set、multiset、map和multimap。 非標準序列容器slist和rope。slist是一個單向鏈表,rope本質上是一「重型」string。 非標準的關聯容器hash_set、hase_multiset、hash_map和hash_multimap。 |
|
線程池 | 線程池的做用正是有效的減小頻繁建立銷燬線程所帶來的額外開銷。 | |
C++和Java的差異數組
要點 | 定義 | 描寫敘述 |
Java無指針 | ||
Java不支持頭文件、Java不支持宏定義 | ||
java是運行在JVM中的,並且是編譯成JVM可識別載入的.class,並不是全然編譯成計算機直接可運行的程序,C++ 程序直接可在計算機中運行。 | ||
在C++和Java中都存在類引用,C++中是要明白指出的。顯性的。而Java中是隱形的。 | ||
Java對每種數據類型都分配固定長度. | ||
類型轉換不一樣 | 在C和C++中,可經過指針進行隨意的類型轉換,常常帶來不安全性,而在Java中,運行時系統對對象的處理要進行類型相容性檢查,以防止不安全的轉換. | |
結構和聯合的處理 | 在C和C++中,結構和聯合的所有成員均爲公有,這就帶來了安全性問題,而在Java中根本就不包含結構和聯合,所有的內容都封裝在類裏面 | |
JAVA的應用在高層。C++在中間件和底層 | ||
垃圾回收。c++用析構函數回收垃圾。java本身主動回收 | ||
Java的對象都從堆中分配,C++的本身主動變量都是從棧裏面分配的 |
又一次C++和Java複習要點。對java、C++的認識更加深入了。安全