zoukankan      html  css  js  c++  java
  • 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的字符串相等,两者可以独立

  • 相关阅读:
    getopt 命令行参数解析
    Linux下使用indent整理代码
    终端常用快捷键
    gedit 乱码解决
    linux sysrq
    linux下的文件审计功能(audit inotify)
    gdb基本命令
    linux shell 字符截断
    linux 设置时间 date命令
    Ubuntu 时间同步
  • 原文地址:https://www.cnblogs.com/renyuan/p/2582683.html
Copyright © 2011-2022 走看看