Java与VC中的基本数据类型的相关知识
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的字符串相等,两者可以独立
以上是 Java与VC中的基本数据类型的相关知识 的全部内容, 来源链接: utcz.com/z/391183.html