您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

JAVA、C、C++基本语法的比较

发表于:2017-08-08 作者:网络转载 来源:

  JAVA的基本数据类型
  一、Java中的基本数据类型有四类八种:

  1、整数类型:byte、short、int、long
  2、浮点类型:float、double
  3、字符类型:char
  4、布尔类型:boolean
  二、Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,保证了Java程序的可移植性,C语言程序编译后没有移植性,同一个变量在不同的系统中占空间不同。
  什么是可移植性?
  可移植性是针对于不同的操作系统而言的,程序在二进制级别是不可能移植的,在API层面上由于不同操作系统的API不同,也是不可能移植的。
  C语言库相当于是一个API层之上的中间层,在这个中间层,封装了操作系统API在其内部的实现细节,C语言提供了代码级别的可移植性。
  但是这个移植性不是完全的移植性,因为有些API没有封装,而Windows下和Linux下API是不一样的,所以就会出现不识别。
  可以通过以下代码在一定程度上解决这个问题:
  #ifdef _WINDOWS_
  CreateThread(); //windows下线程的创建
  #else
  Pthread_create(); //Linux下线程的创建
  #endif
  而且C语言程序移植到另一个平台上之后一定要重新编译才行!
  Java的可移植性就比C语言好得多,老师在课上讲了,Java编译后产生的代码当前的CPU不能直接运行,这些代码是针对JAVA虚拟机(JVM——JAVAVirtualMachine)的,只能被Java虚拟机运行。所以说任何机器上,只要安装了JAVA虚拟机,就能够/才能够运行编译好的Java程序(…….class)。Java的这种可移植性让它在Internet上具有广泛顶点应用前景。
  C语言的程序编译完之后就是这台机器CPU的目标码,针对于这种CPU,放到另一种CPU上就不行了。
  三、Java中没有无符号的数,没有C语言中的unsigned。
  四、Java整数常量默认为int,实数常量默认为double。

  JAVA中,float a=0.1是错的,Java会认为这是把一个双精度的值赋予一个单精度浮点数。这种情况下,java不会为我们自动转换,只会报错提醒。修改的方法有两个:
  1. 明确指定0.1是个单精度浮点数,然后赋值给f1. 即 float f1= 0.1f ; //后加f
  2. 手动强制转换 float f1 = (float) 0.1; //看着好笨!呵呵
  但是byte b = 10;Java是可以的,只有在赋值时,常量不超过表数范围时这样行,如果
  byte b = b1 + b2;就会出错。
  C语言没有这么麻烦。
  C语言的基本数据类型
  1、有符号整数:int、short、short int、long、long int、long long、long longint
  2、无符号整数:unsigned int(等价于unsigned)、unsignedlong、unsigned short
  3、实浮点数:float、double、long double
  4、字符型:char(C标准允许在关键字char前使用signed和unsigned)
  5、C语言用1表示true,用0表示false,C99标准引入了_Bool类型,用于表示布尔型,_Bool只有一位。
  C++语言的基本数据类型
  C++新增了bool类型,可以bool a =true;
  逻辑运算符区别
  关于逻辑运算符,Java中有&&(短路与)、&(与)、|(或)、||(短路或),短路与、短路或只要一个不满足,就不会再计算第二个,但是这不会影响到最终的结果,就是说Java不保证逻辑运算符两边的式子都计算了。而&、|把运算符两边的式子都做了判断。
  而C语言和C++中的逻辑运算符是&&、||,没有Java这么复杂。
  Java与C、C++循环判断语句的比较
  常用的语句像if、for、switch、while大家都相同,只是C语言必须先定义变量,把变量定义在外面才行,不会出现for (int i=0;i