关于C/C++与java的异同性的讨论

/部分文字来源于网络/

关于C/C++与java的异同性的讨论

前言:C++和Java都是面向对象的语言,其中C++是编译型语言,Java是解释型语言,Java晚于C++发布,从语言风格上看,很大程度参考了C++,但也删去了其中很多部分,例如,头文件、指针、引用、运算符重载、模板类等等,可以算是简洁版的C++。
C++和Java的最大不同:

  1. 头文件
      c++里有头文件,而Java里没有头文件,但是有比较类似的用法:import。
      **Java里有package关键字的用法。**当一个大型程序交由数个不同的程序人员开发时,很有可能用到相同的类名,所以在java程序开发中为了避免这个问题,提供了一个包的概念,只需要在写的程序第一行使用package关键字来声明一个包。包就是一个文件夹,它将源代码文件(.java)、编译后的文件(.class)和其他的一些用到的文件有组织的放在一起,不同的包对应不同程序人员写的代码,即使有相同类名也不会混淆。
      在c++里有一个经典的命名:using namespace std,这行代码使得我们在使用cin、cout、endl……时不用加std::的前缀。而在Java里有import关键字的用法,它同样能让我们在编写程序时省下写前缀的力气。**import与#include有点相似但却不一样,编译器会在import导入的包里选择与类名对应的包,而#include则是编译器将其他文件的内容载入进来。**Java里有一个java.lang包,里面的类经常用到,几乎没有类不用它的, 所以不管有没有写 import java.lang,编译器都会自动补上。
//c++
#include <iostream>
using namespace std;
//java
package com.foundation;
import java.text.DecimalFormat;
  1. 代码格式不同
    C++主要有函数堆砌而成,通过主函数调用其他函数来实现自己的功能;而Java的方法都在类当中,代码风格为几个类的平行,公有类中的主方法调用其他类中的方法,来实现自己的功能。
//c++
#include <iostream>
using namespace std;
void helloWorld(){
    cout<<"hello world!";
 }
 int main(){
    helloWorld();
    retrn 0;
 }
//java
package com.foundation;
class HelloWorld{
   void helloWorld(){ 
   system.out.print("hello world.");
   }
 }

public static void main(Strin args[]){
   HelloWorld hw=new HelloWorld();
   hw.helloworld();
 }
  1. 函数(方法)的声明与定义
    在C++当中,若函数要在主函数中被调用,则一定要在主函数前声明,函数定义的位置随意。
    在Java当中就没有那么多限制,主方法可以写在类的任意一个位置,但我们还是习惯将主方法写在类的最下面。

  2. 编译结果
    c++的编译结果是一个可执行文件.exe,而Java程序的编译结果,有多少个类就产生多少个和类同名的class文件。

  3. 输入输出
    在c++中,输入输出十分简单,用输入输出流来控制输入输出,cin\cout。
    而在Java语言当中,由于一切的物体都是对象,输入输出就显得麻烦得多,要导入一个基础类。

//java
import java.util.Scanner;
Scanner sc=new Scanner(System.in);
String a=sc.next();
int b=sc.nextInt();
float c=sc.nextFloat();
double d=sc.nextDouble();
boolean e=sc.nextBoolean();
在输入结束后不再需要Scanner了,及时释放内存:
sc.close();
  1. 数组的设定
c++中声明数组的格式:
  int a[10];
 数组元素的数据类型 数组名[数组长度]
Java中声明数组的格式:
 int a[ ]=new integer[5];
 int [ ]a=new integer[5];
 声明时赋初值;
 int a[ ]={1,2,3,4,5};
 int a[ ]=new integer[ ]{1,2,3,4,5};
 在数组声明时,不能规定数组的大小;
 //以下格式
 int a[ ]或in [ ]a;
 只是整型数组的引用而整型数组没有实际内存; 
  1. 字符串
    c++的字符串在使用前比必须引入头文件,声明时类型为string;
#include <string>
string a = "helloc++"

在java当中字符串并不是一个基本数据类型,是通过String类来调用、处理的,做形式参数的时候,从传入的是引用而不是字符串的内容,String类在java.lang包中,自动导入到java文件内,无需手动导入。

String a = new String("hellojava");
String b1 = "test1";
String b2 = "test1";
String b3 = new String("test1");
//用常字符串创建对象,若内存区没有这个字符串则新建一个
//,若内存区已有这个字符串,则对象引用指向这个字符串;
" == " 用于基本数据类型,判断数据是否相同;
用于复合数据类型(类),判断是否指向同一对象
" equal() " 位于Object类中,用于判断对象引用是否指向同一对象;
String类中,equal()被覆盖,用于判断String对象引用指向的对象字
符串内容是否相同。
  1. 指针与引用
    c++当中有引用有指针,Java当中只有引用没有指针。

  2. 垃圾回收机制
    c++中有析构函数回收垃圾,释放内存空间,要善于使用析构函数和release( )函数释放内存。使用c++时,一定要注意内存的申请和释放。
    Java中有自动垃圾回收机制,Java中的所有东西都是类对象,当没有任何对象引用指向一个对象时,这个对象会被视为垃圾对象,在内存不足时会被自动释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值