C++ Java要點記錄

簡單介紹

依舊記得當初學習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是一個宏定義命令,用來定義一個常量(包含無參常量和有參常量),它自己並不在編譯過程當中運行,而是在預處理階段就已經完畢了,所以不做不論什麼正確性檢查,僅僅進行不關含義的字符串替換。

 
指針/智能指針 指針是一個指示器,它告訴程序在內存的哪塊區域可以找到數據。 智能指針其實是一個棧對象,並不是指針類型,在棧對象生命期即將結束時,智能指針經過析構函數釋放有它管理的堆內存。


std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost:: intrusive_ptr。編程

模板與泛型編 泛型編程就是以獨立於不論什麼特定類型的方式編寫代碼。而模板是泛型編程的基礎。

 
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++的認識更加深入了。安全

相關文章
相關標籤/搜索