现在的位置: 首页 > 综合 > 正文

Java与VC中的基本数据类型的相关知识

2012年01月11日 ⁄ 综合 ⁄ 共 3678字 ⁄ 字号 评论关闭

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的字符串相等,两者可以独立

抱歉!评论已关闭.