Java vs C++ 基础异同比较

数据类型

  • Java 中只有8种数据基本类型,C++的基本数据类型较多

Java 中的8种基本数据类型为:boolean, byte, short, int, long, float, double, char

c++ 中的数据类型较多,且部分写法有所区别:bool, short, int, long, float, double, char

  • 基本数据类型占用的字节数有所区别,因为 Java 支持跨平台,所以每个基本数据类型占用的字节数是固定的。而 c++ 在不同平台会有所差别。

Java 中的boolean, byte 一个字节, char,short 两个字节, int, float 四个字节, long, double八个字节。

c++ 中,规定了最小尺寸,bool, char一个字节,int, short两个字节,long 四个字节,规定了大数据类型不得小于小数据类型。比如long 所占字节数不得小于int所占字节数。

  • Java 中的数字变量都是有符号的,c++可以定义为有符号和无符号两种。

在c++中,当有符号数跟无符号数相加的时候,有符号数会转换为无符号数,所以在c++中有符号和无符号相加也许是出现异常。

  • 在Java中整数型不能与布尔型相互转换,而c++中可以,非0代表真,0代表假

变量

  • Java 中变量的声明必须赋值,而c++可以不进行赋值。

Java中,如果变量在类中,那么创建对象的时候,会为其赋与默认值。

c++的变量如果在函数外定义,未赋值,也会被赋予默认值。但是在函数内的话,值取决于内存的位置。

public class Learn{ 
    public static void main(String[] args) { 
        Test test = new Test();
        System.out.println(test.a);
    }
}

class Test{
    int a;
}

//输出 
//0
int b;
int main() {
    int a;
    cout << b << endl;
    cout << a << endl;
}

// 输出
//0
//4354430
  • C++中的 extern 关键词可以声明变量,告诉编译器这个变量的值可以在其他文件中找到。
  • 变量的赋值方式,c++ 花样比较多
int main() {
    int a{1};
    int b = 2;
    int c = {3};
    int d(4);
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    cout << d << endl;
}

复合类型(c++的引用和指针)

  • 引用

引用是对对象的绑定,一旦绑定后就不允许进行修改。所以一定需要对引用进行初始化操作。

int a = 1; 
int &b = a;
  • 指针

指针是一个对象,所以可以不对其进行赋值初始化操作。指针可以进行多次赋值操作。如果想为空指针,可以有下面的几种方式:

int *p = 0;
int *p = NULL;
int *p = nullptr;
posted @ 2020-03-26 22:48  土堆碎念  阅读(492)  评论(0编辑  收藏  举报