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;