java中:
byte |
8-bit(一個位元組) |
-128 |
+127 |
char |
16-bit(2個位元組) |
Unicode 0 |
Unicode 216-1 |
short |
16-bit(2個位元組) |
-215 |
+215-1 |
int |
32-bit(4個位元組) |
-231 |
+231-1 |
float |
32-bit(4個位元組) |
IEEE754 |
IEEE754 |
long |
64-bit(8個位元組) |
-263 |
263-1 |
double |
64-bit(8個位元組) |
IEEE754 |
IEEE754 |
vc中:
|
Type |
Default Size |
Description |
基 礎 類 型 全 是 小 寫 |
說明:這些基礎資料類型對於MFC還是API都是被支援的 |
boolean (數值型) |
unsigned 8 bit , |
取值TRUE/FALSE |
byte |
unsigned 8 bit, |
整數,輸出按字元輸出 |
char |
unsigned 8 bit, |
字元 |
double |
signed 64 bit |
浮點型 |
float |
signed32 bit |
浮點型 |
handle_t |
|
Primitive handle type |
hyper |
signed 64 bit |
整型 |
int |
signed 32 bit |
整型 |
long |
signed 32 bit |
整型 |
short |
signed 16 bit |
整型 |
small |
signed 8 bit |
整型 |
void * |
32-bit |
指向未知類型的指標 |
wchar_t |
unsigned 16 bit |
16位字元,比char可容納更多的字元 |
|
|
|
Win32 API 常 用 數 據 類 型 全 大 寫 |
說明: 這些Win32API支援的單一資料型別主要是用來定義函數傳回值,訊息參數,結構成員。這類資料類型大致可以分為五大類:字元型、布爾型、整型、指標型和控制代碼型(?). 總共大概有100多種不同的類型, |
BOOL/BOOLEAN |
8bit,TRUE/FALSE |
布爾型 |
BYTE |
unsigned 8 bit |
|
BSTR CComBSTR _bstr_t |
32 bit |
BSTR是指向字串的32位指標 是對BSTR的封裝 是對BSTR的封裝 |
CHAR |
8 bit |
(ANSI)字元類型 |
COLORREF |
32 bit |
RGB顏色值 整型 |
DWORD |
unsigned 32 bit |
整型 |
FLOAT |
float型 |
float型 |
HANDLE |
|
Object控制代碼 |
HBITMAP |
|
bitmap控制代碼 |
HBRUSH |
|
brush控制代碼 |
HCURSOR |
|
cursor控制代碼 |
HDC |
|
裝置上下文控制代碼 |
HFILE |
|
OpenFile開啟的File控制代碼 |
HFONT |
|
font控制代碼 |
HHOOK |
|
hook控制代碼 |
HKEY |
|
註冊表鍵控制代碼 |
HPEN |
|
pen控制代碼 |
HWND |
|
window控制代碼 |
INT |
-------- |
-------- |
LONG |
-------- |
--------- |
LONGLONG |
|
64位帶符號整型 |
LPARAM |
32 bit |
訊息參數 |
LPBOOL |
|
BOOL型指標 |
LPBYTE |
|
BYTE型指標 |
LPCOLOREF |
|
COLORREF型指標 |
LPCSTR/LPSTR/PCSTR |
|
指向8位(ANSI)字串類型指標 |
LPCWSTR/LPWSTR/PCWSTR |
|
指向16位Unicode字串類型 |
LPCTSTR/LPTSTR/PCTSTR |
|
指向一8位或16位字串類型指標 |
LPVOID |
|
指向一個未指定類型的32位指標 |
LPDWORD |
|
指向一個DWORD型指標 |
其他相似類型: LPHANDLE、LPINT、LPLONG、LPWORD、LPRESULT PBOOL、PBOOLEAN、PBYTE、PCHAR、PDWORD、PFLOAT、PHANDLE、PINT、PLONG、PSHORT…… 說明:(1)在16位系統中 LP為16bit,P為8bit,在32位系統中都是32bit(此時等價) (2)LPCSTR等 中的C指Const,T表示TCHAR模式即可以工作在ANSI下也可UNICODE |
SHORT |
usigned |
整型 |
其他UCHAR、UINT、ULONG、ULONGLONG、USHORT為無符號相應類型 |
TBYTE |
|
WCHAR型或者CHAR型 |
TCHAR |
|
ANSI與unicode均可 |
VARIANT _variant_t COleVariant |
|
一個結構體參考OAIDL.H _variant_t是VARIANT的封裝類 COleVariant也是VARIANT的封裝類 |
|
|
|
|
|
|
WNDPROC |
|
指向一個視窗過程的32位指標 |
WCHAR |
|
16位Unicode字元型 |
WORD |
|
16位無符號整型 |
WPARAM |
|
訊息參數 |
MFC 專屬 資料 類型 |
下面兩個資料類型是微軟基礎類庫中專屬的資料類型 |
POSITION |
標記集合中一個元素的位置的值,被MFC中的集合類所使用 |
LPCRECT |
指向一個RECT結構體常量(不能修改)的32位指標 |
CString |
其實是MFC中的一個類 |
|
|
|
Java與C++的差別
1. Java中boolean類型和int類型不相容,即不能互相轉換,而且boolean型的true和fasle是不能比大小的;C++中true == 1; false == 0; (true > flase) == 1;
2. Java中char型是16位的,即兩個位元組;而C++中的char型是1一個位元組即8位的。
3. Java中運算式中char、byte、short類型計算時會自動先轉換成int型,即兩個byte型相加產生的是int型變數。有以下定義byte b1 = 1,b2 = 2,b3;要將b3賦值成b1和b2的和,必須寫成b3 = (byte)(b1 + b2);因為b1+b2是int型的,不強制轉換類型編譯器會報錯。而C中則不會將char、byte、short類型自動轉換成int型。
4. Java中常數(即字面值)中,整數是預設int型的,小數是預設double型的。char、byte、short變數可以直接賦值成整數,不改變類型,而long變數賦值時要加上尾碼l,float變數賦值小數時要加上尾碼f(float賦值不加尾碼會報錯)。例如long t1 = 20l;float f1 = 2.3f;C++中的類型轉換則不是很嚴格;
5. Java中控制語句的運算式必須是boolean型的,不能是int型的,因為兩者不相容;C++則兩者都可;
6. Java中沒有指標,申明數組時有Type name[];其中[]裡面不能填數字。name有length成員表示數組的大小;C++中數組[]可以填數字進去,一般類型的數組沒有length成員。Java中可以初始化如Type name[] = {new Type(), new Type(),…,new Type()};其中簡單類型的數組(例如int)可以在{}中直接賦值。C++中簡單類型的Java中多維陣列以二位元組int型為例,int a[][] = new int [2][],即第二維可以先不申明,然後可以申明不規則數組,即a[0] = new int[1]; a[1] = new int[2]; a[3] = new int [3];C++中高維數組無法動態分配,只能靜態分配,因此也無法實現不規則數組
7. Java中繼承類中的方法重寫時相當於C++中的虛函數,Java中的abstract方法相當於C++中的純虛函數,Java中含有abstract方法的類必須申明為abstract類,即類前要加上abstract修飾語,此時這個類無法被執行個體化,而且產生的子類必須重寫超類(即父類)的abstract方法,否則子類也不能被執行個體化,並且要顯示地申明為abstract類。C++中不用修飾抽象類別。
8. Java中有超類的引用變數可以引用子類的執行個體,相當於C++基類的指標可以指向衍生類別的執行個體。類似的,超類的引用雖然指向了子類,但是在子類中有的成員或者方法卻在超類中沒有時,超類的引用仍然無法使用。在C++也是如此,使用基類指標產生衍生類別的對象,但是這個指標指向的成員必須是基類擁有的。
9. Java中String(申明類型時注意S大寫)的兩個變數str1、str2如果相等,是意味著它們引用的同一個字串(相當於用同一個記憶體),若要表示獨立的兩個變數所含的字串相同,則String類有方法boolean equals(String str)可以調用。即如果str1.equeals(str)的值為true,則str1與str2所含的字串相等。String還有一些其他方法:
boolean equals(String str)
如果調用字串包含的字元序列與str一樣,則返回true,
int length()
擷取字串的長度
char charAt(int index)
擷取index指定的索引位置的字元
int compareTo(String str)
調用字串小於str,則返回小於0的數;大於返回大於0的數;相等則返回0
int indexOf(String str)
返回調用字串中第一個與str匹配的索引,沒有匹配則返回-1
int lastIndexOf(String str)
返回調用字串中最後一個與str匹配的索引,沒有匹配則返回-1
C++中如果str1 == str2值為1,則表示str1的字串與str2的字串相等,兩者可以獨立