`
xiexd
  • 浏览: 248731 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C++和Java的语法对比手册

    博客分类:
  • c++
阅读更多

首先,两件大事-主函数和怎样编译,下面是它们的小差别:

主函数

C++

// 自由函数
int main( int argc, char* argv[])
{
    printf( "Hello, world" );
}

 

Java

// 每个函数必须是类成员;当java类运行时类中的主函数就会被调用
//(所以你可以为每个类写一个主函数--这样用于给类写单元测试时会很方便)
class HelloWorld
{
    public static void main(String args[])
    {
        System.out.println( "Hello, World" );
    }
}

 

编译

C++

    // 编译
    g++ foo.cc -o outfile
    // 运行
    ./outfile
    

Java

    // 编译在foo.java里的类成为<类名>.class
    javac foo.java 

    // 调用<类名>中的静态main函数
    java <classname>
    

注释

两种语言完全相同 (// 和 /* */ 都能工作)

类声明

大部分一样,除了Java不要求后面有个分号

C++

    class Bar {};
    

Java

    class Bar {}
    

方法声明

基本相同,除了Java中必须是类成员并且可能有public/private/protected前缀之外。

构造和析构

构造语法相同,Java没有析构的等价物。

静态成员函数和变量

方法声明方式相同,不过Java提供了static initialization blocks 来初始化静态变量(代替在源码文件中放定义):

class Foo 
{
    static private int x;
    // static initialization block
    { x = 5; }
}

对象声明

C++

    // 栈对象
    myClass x;

    // 堆对象
    myClass *x = new myClass;
    

Java

    // 总是分配在堆上(而且,构造总是要写括号)
    myClass x = new myClass();
    

引用vs.指针

C++

    // 引用是不可改的,使用指针能得到更大的弹性
    int bar = 7, qux = 6;
    int& foo = bar;
    

Java

    // 引用是可改的,它仅存放对象的地址。没有原生指针。
    myClass x;
    x.foo(); // 错误,x是空“指针”

    // 注意Java里总是使用 . 存取域
    

继承

C++

    class Foo : public Bar
    { ... };
    

Java

    class Foo extends Bar
    { ... }
    

保护级别

C++

    public:
        void foo();
        void bar();
    

Java

    public void foo();
    public void bar();
    

虚函数

C++

    virtual int foo(); 
    

Java

    // 函数默认就是虚函数;使用final防止被重载
    int foo();
    

抽象类

C++

    // 只要包含一个纯虚函数
    class Bar { public: virtual void foo() = 0; };
    

Java

    // 可以用语法直接定义
    abstract class Bar { public abstract void foo(); }

    // 或者指定为接口
    interface Bar { public void foo(); }

    // 然后,用一个类实现implement
它:
    class Chocolate implements Bar
    {
        public void foo() { /* do something */ }
    }
    

内存管理

大致相同--new 分配, 不过因为Java著名的垃圾回收机制所以没有delete

NULL vs. null

C++

    // 初始化指针为NULL
    int *x = NULL;
    

Java

    // 使用未初始化的引用会被计算机捕获,不过可以赋值为null指明引用为无效。
    myClass x = null;
    

布尔值

Java要长一点,你得写boolean来代替简短的bool。

C++

bool foo;

Java

boolean foo;

常量

C++

    const int x = 7;
    

Java

    final int x = 7;
    

Throw说明

首先, Java在编译时强制要求有throw说明-如果一个方法要抛出一个异常你必须先说明它

C++

int foo() throw (IOException)

Java

int foo() throws IOException

数组

C++

    int x[10];
    // 或者 
    int *x = new x[10];
    // 使用x然后收回内存
    delete[] x;
    

Java

    int[] x = new int[10];
    // 使用x,内存由垃圾回收机制回收
    

集合和迭代

C++

迭代器是类成员,一个范围起始于<container>.begin(), 终止于<container>.end(). 使用++操作前进,使用*存取。

    vector myVec;
    for ( vector<int>::iterator itr = myVec.begin();
          itr != myVec.end();
          ++itr )
    {
        cout << *itr;
    }
    

Java

迭代器仅仅是一个接口。一个范围起始于<collection>.iterator, 接着使用itr.hasNext()检查确认是否已到末尾。使用itr.next()取得下一个数据。

    ArrayList myArrayList = new ArrayList();
    Iterator itr = myArrayList.iterator();
    while ( itr.hasNext() )
    {
        System.out.println( itr.next() );
    }

    // 在Java 5中:
    ArrayList myArrayList = new ArrayList();
    for( Object o : myArrayList ) {
        System.out.println( o );
    }
    
分享到:
评论

相关推荐

    C++和Java的语法对比手册.doc

    C++和Java的语法对比手册

    C++、Java、Mysql等技术开发手册.zip

    在本压缩包“C++、Java、Mysql等技术开发手册.zip”中,包含了三个主要的技术领域的中文开发手册,它们分别是C++、Java和MySQL。这些手册是学习和提升编程技能的重要参考资料,对于初学者和有经验的开发者来说都是极...

    c++,java面试题(综合)

    “面试题”标签提示了这个压缩包的主要内容,而“java”和“c++”则明确了涉及的编程语言,说明文档可能包含这两类语言的编程问题,如语法、数据结构、算法、设计模式、多线程、内存管理等方面。 【压缩包子文件的...

    c/c++手册和java(jdk8)手册

    标题中的"C/C++手册"和"Java (JDK8)手册"指的是针对C和C++编程语言以及Java开发工具包第八版的官方或非官方参考文档。这些手册通常包含了编程语言的语法、标准库函数、类库接口以及编程指南等详细信息,是学习和工作...

    Java语法帮助文档-中文加英文手册.rar

    这份“Java语法帮助文档-中文加英文手册.rar”压缩包包含了详细的Java查询资料,旨在为开发者提供日常开发中的问题解决方案,无论是初学者还是经验丰富的程序员,都能从中受益。 文档主要分为中文版和英文版,确保...

    Java_C++_C_QT开发工具手册

    对于初学者来说,它是学习Java语法和API用法的重要参考;对于有经验的开发者,它是解决问题和优化代码的关键工具。 2. **Linux C常用库函数手册** 这本手册详细阐述了Linux环境下C语言编程常用的库函数,包括、、...

    Java常用算法手册

    《Java常用算法手册》分三篇,共13章,分别介绍了算法基础、算法应用和算法面试题。首先介绍了算法概述,然后重点分析了数据结构和基本算法思想;接着,详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏...

    C/C++参考手册.chm(共三本.chm)

    《C/C++参考手册》是一套综合性的编程指南,涵盖了C和C++两种语言的核心概念、语法、标准库以及常用编程技巧。这套手册分为三部分,分别是“C C++函数手册.chm”、“c++库函数(en).CHM”和“c++标准库函数(cn).chm”...

    Java技术参考手册_java_

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

    c,c++,java,asp,js,dos,asm.vb,vbs.sql各类语法chm收藏大全

    各类语言语法chm文件收藏 [VC知识库精华珍藏版].bbsprime VC++ 编程指南 VC编程文件集锦 vc新手学堂 c++标准库函数(cn) 8086精解 汇编语言课件 dos程序员参考手册 flash动作脚本 CSS 2.0中文手册(含索引) htmlDOM...

    达内c++技术手册

    本手册不仅涵盖了C++的基础与高级知识,还涉及其他编程语言和技术,如Java、OOAD(面向对象分析设计)、XML、JDBC、Hibernate、Java Web、EJB、Spring等,满足了初学者和参加达内外企软件工程师培训人员的学习需求。...

    C/C++中文参考手册离线最新版

    该手册提供了全面的C++23标准库和语言特性的介绍,包括语法、关键字、数据类型、控制结构、函数、指针、类和对象、继承、多态性、模板和异常处理等内容。 该手册以离线chm格式提供,方便用户在没有互联网连接的情况...

    c语言,c++,java帮助文档,.CHM,API

    标题中的"C语言,C++,Java帮助文档"指的是这三个编程语言的官方或非官方文档,这些文档通常包含语言规范、语法细节、库函数说明、示例代码等,旨在帮助开发者理解和使用这些语言进行编程。".CHM"是Microsoft编译的...

    java 学习手册 chm 5本 Java语言入门

    1. **Java语法基础**:Java的语法与C++类似,但更加简洁。它包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑、位操作等)、流程控制语句(如if、for、while、switch)以及方法...

    java自学手册

    Java自学手册介绍了Java语言的产生、特点及其与互联网的关系。本部分将深入探讨Java的背景...因此,对于想自学Java的读者来说,不仅需要掌握语言的语法和结构,更应该了解其背后的历史背景以及它与网络技术的密切联系。

    java 新手入门手册

    2. **基础语法**:Java语法与C++和C#相似,包括数据类型(如整型、浮点型、字符型和布尔型)、变量声明、常量定义、运算符、流程控制(if-else、switch、for、while等)以及函数的使用。 3. **类和对象**:Java是...

    JAVA C/C++ MFC 中文API chm

    《JAVA C/C++ MFC 中文API chm》是一个综合性的编程参考资料,它涵盖了C++、C和Java这三种主流编程语言的关键API以及MFC(Microsoft Foundation Classes)库的相关知识。对于初学者和有经验的开发者来说,这份资料都...

    c,c++,java,asp,js,dos,asm.vb,vbs.sql各类语法chm

    各类语言语法chm文件收藏 [VC知识库精华珍藏版].bbsprime VC++ 编程指南 VC编程文件集锦 vc新手学堂 c++标准库函数(cn) 8086精解 汇编语言课件 dos程序员参考手册 flash动作脚本 CSS 2.0中文手册(含索引) htmlDOM...

    java2完全手册 核心思想

    《Java2完全手册》是一本全面介绍Java编程的参考资料,旨在帮助读者深入理解和熟练掌握Java语言。这本书不仅涵盖了Java的基础语法和应用,还探讨了其核心思想和历史背景,为开发者提供了一个便捷的查询工具。 Java...

Global site tag (gtag.js) - Google Analytics