zoukankan      html  css  js  c++  java
  • c++与java的几个不同点

       Java、C、C++在近两年一直稳居世界编程语言排行榜前三名。Java与c++都是面向对象的语言,但Java晚于C++发布,部分语法和思想也参考了C++,只是Java 没有头文件、指针、运算符重载、虚基类等等,算是c++语言的“纯净版”。如果学过C++,那学起Java来就不会感觉很难了,应当注意的是Java与c++有很多不同点。

    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,编译器都会自动补上。

    #include<iostream>       //头文件
    using namespace std;     //命名空间
    package java.xingchen;          //声明所在包
    import java.lang.*;               //导包

    2.代码格式

    缩进、换行和{}这些是个人代码习惯,不算是代码格式的差异。

    C/C++程序基本上是由n个函数组成,主函数调用其他函数实现所需功能。

    Java程序是由n个类、m个方法组成,某个public类的主方法调用当前类的方法,或是调用其他类的公有(public)方法实现所需功能。

    Java的m个方法类似于C/C++的n个函数,只不过是将这m个方法放到n个类里,目录结构更清晰一些。

    c++程序基本格式如下:

    #include<iostream>       //头文件,必写
    using namespace std;     //命名空间
    void hello();   //如果某个函数是在主函数之后定义的,那么必须在主函数之前声明,主函数才能调用这个函数
    int main()
    {
        hello();
        return 0;
    }
    void hello()
    {
        cout << "Hello World!" << endl;
    }

    Java程序基本格式如下:

    package java.xingchen;          //说明在java/xingchen这个文件夹内
    import java.lang.*;               //导包语句,可不写,编译器自动加
    
    //Java程序运行的是public类内的主方法
    //文件名必须和public类类名一样(例如当前文件只能叫Xingchen.java),一个文件只能存在一个public类,主方法只能在public类内
    //类只能由public修饰,即一个类只能是public class或class
    public class Xingchen {
        public static String out;  //静态方法(static)调用该变量,那么该变量必须为静态变量(static)
        public Xingchen(){         //空参构造方法,当前类实例化时如果未传参则执行此方法,一般空参构造方法可不写
            this.out = "World";   //this是指当前类
        }
        public static void main(String[] args) {
            new Test("Hello").hello();      //Test类创建匿名对象并执行类内的public方法
            Xingchen x = new Xingchen();
            x.hello();
        }
        public static void hello(){
            System.out.println(out);
        }
    }
    
    class Test {
        String out;
        public Test(){}      //如果一个类存在有参构造,那么必须定义空参构造方法
        public Test(String str){   //有参构造方法,实例化时如果传入指定参数,则执行当前方法
            this.out = str;
        }
        public void hello(){
            System.out.println(this.out);
        }
    }

    3.函数(方法)的声明与定义

    声明是用来描述变量的类型等,定义是变量的实现。

    C/C++里主函数内要使用的函数必须在主函数之前有过声明或定义,否则编译会不通过。即C/C++主方法要么写在所有调用函数的后面,要么在主函数之前就必须有所调用函数的声明。

    Java则比较随意,只要语法没问题,主方法可以写在类内任意位置(当然肯定不能写在别的方法里面)。

    4.编译结果

    c/c++编译的最终结果是一个程序生成一个exe文件。

    Java编译结果是一个程序中有多少类就生成多少个与类名相同的class文件。

    5.录入输出

    c++的录入输出靠输入流cin,输出流cout、cerr、clog实现,需要写#include<iostream>。

    Java语言里没有像c++那样一个函数就完成录入,它的录入使用了一些基础类,比如:

    首先导包

    import java.util.Scanner;

    然后在方法内使用以下语句进行录入

    Scanner sc = new Scanner(System.in);
    String a = sc.next();                 //效果等同于String a = sc.nextLine();
    int b = sc.nextInt();
    float c = sc.nextFloat();
    double d = sc.nextDouble();
    boolean e = sc.nextBoolean();
    sc.close();        //结束数据流。录入语句结束及时释放内存是个好习惯。

    其实还有其他输入的方法,但是这种比较常用。Scanner类中没有nextChar方法,不能直接通过Scanner类从控制台读取char类型的变量,不能这样写

    Scanner sc = new Scanner(System.in);
    char a = sc.nextChar();             //这种方法是错的,Scanner类中没有nextChar方法

    Java的输出语句用法很简单:System.out.println();或System.out.print();System.out.println语句结束后自动换行,System.out.print语句结束后不换行。

    int age = 18;
    String name = "张三";
    System.out.println(age + "岁的" + name);        //18岁的张三

    6.数组

    c++中定义数组格式是:数据类型  数组名[数组长度];

    数组静态初始化格式:数据类型  数组名[] = {元素1,2,...};

    int a[10];
    double b[2] = {0.1,0.2}

    在Java中,数组不是基本数据类型。

    Java中定义数组格式是:数据类型[]  数组名 = new 数据类型[数组长度];

    数组静态初始化格式:数据类型[] 数组名 = new 数据类型[]{元素1,2,...};

    int[] a = new int[5];   //Java定义数组
    double[] b = new double[]{0.1 2.3 4.5 6.7 8.9};
    //可简写为double[] b = {0.1 2.3 4.5 6.7 8.9};

     7.字符串

    C++的字符串类型使用前必须有引用,而且声明变量类型时用的是string

    #include <string>
    //或#include <cstring>
    string a = "123";

    在Java中,String字符串不是基本数据类型,它被当作类来处理,是引用数据类型。String类在java.lang包内,导包语句可忽略。创建字符串对象时用的是String

    String a = new String("123");
    //或简写成String a = "123";

    8.引用和指针

    c++有引用,有指针。

    Java有引用,但是没有指针。

    具体差别我也有些搞不清楚,参考博客https://blog.csdn.net/alpha_love/article/details/73695435

  • 相关阅读:
    HTML相关
    190. 颠倒二进制位【简单】
    22. 括号生成【中等】
    83. 删除排序链表中的重复元素【简单】
    vuejs2.0声明周期
    js增加8小时
    获取DOM的原生事件对象
    hive创建表失败:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaEx
    安装hive过程填坑小结
    CentOS 7配置网络,静态IP
  • 原文地址:https://www.cnblogs.com/dream0-0/p/9304478.html
Copyright © 2011-2022 走看看