C++ Java要點記錄
阿新 • • 發佈:2017-07-17
都是 eem 垃圾 vector style hashtable 固定 class 類型
簡單介紹
依舊記得當初學習C++的理想----開發遊戲外掛,記得在大學開發的第一款遊戲外掛是連連看,讀取地址數據,然後算法匹配,模擬單擊事件,當時被很多同學羨慕妒忌。
JAVA開發是2012年3月份開始開發Android後專註的,Java的學習是在大學完畢的,當時JAVA考試95分滿以為Java沒啥難的。後來從事android開發發現自己對java的理解不深。
內容
Java要點
要點 | 定義 | 描寫敘述 |
基本數據類型 | 1、byte(8) 2、shot (16) 3、int(32) 4、long(64) 5、float(32) 6、double(62) 7、char(16) 8、boolean(1) | |
持有對象 | Collection(接口) ->List(子接口 先後順序 可反復) ->LinkedList (鏈表 不同步 線程不安全) ->ArrayList (數組 不同步 線程不安全) ->Vector (數組 同步 線程安全) ->Stack ->Set (子接口 僅僅接收一次 內部排序) ->HashSet ->LinkedHashSet ->TreeSet Map(接口 鍵值) ->Hashtable (同步 安全) ->WeakHashMap ->TreeMap ->IdentifyHashMap | Collection 是對象集合。 Collection 有兩個子接口 List 和 Set List 能夠通過下標 (1,2..) 來取得值,值能夠反復 而 Set 僅僅能通過遊標來取值。而且值是不能反復的 ArrayList , Vector , LinkedList 是 List 的實現類 ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數組實現的 LinkedList 是線程不安全的。底層是由鏈表實現的 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)自己主動管理內存的回收。程序猿不須要通過調用函數來釋放內存。 |
初始化順序 | 1、靜態成員 2、靜態函數 3、靜態區 4、其他 | |
引用 | 主要的變量類型僅僅有一塊存儲空間(分配在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++的認識更加深刻了。
C++ Java要點記錄