Java與VC中的基礎資料型別 (Elementary Data Type)的相關知識

來源:互聯網
上載者:User

java中:

資料類型

大小

最小值

最大值

boolean

 

 

 

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的字串相等,兩者可以獨立

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.