• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            C++和Java的語法對比手冊

            原文:http://www.cprogramming.com/tutorial/java/syntax-differences-java-c++.html
            首先,兩件大事-主函數和怎樣編譯,下面是它們的小差別:

            主函數

            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 );

                }

               

             

            posted on 2009-05-02 01:43 肥仔 閱讀(1260) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎

            国产精品久久久久乳精品爆| 久久精品国产亚洲AV久| 欧美午夜A∨大片久久| 亚洲中文字幕无码久久2020| 国产69精品久久久久9999| 性做久久久久久久| 国产亚洲婷婷香蕉久久精品| 亚洲国产欧洲综合997久久| 久久久久18| 国产∨亚洲V天堂无码久久久| 无夜精品久久久久久| 国产精品久久一区二区三区| 国内精品综合久久久40p| 天天综合久久一二三区| 中文字幕亚洲综合久久2| 久久精品国产亚洲麻豆| 国产成人久久精品一区二区三区 | 久久久久久伊人高潮影院| 国产精品久久久天天影视香蕉| 91精品国产9l久久久久| 色综合久久综合中文综合网| 免费精品久久天干天干| 国产精品中文久久久久久久| 综合久久一区二区三区 | 精品久久久久久久久午夜福利| 亚洲精品国产第一综合99久久| 99热成人精品免费久久| 久久国产精品国产自线拍免费| 久久久久亚洲av无码专区导航| 欧美激情一区二区久久久| 亚洲色欲久久久综合网| 一本一道久久综合狠狠老| 无码人妻精品一区二区三区久久久| 亚洲综合精品香蕉久久网| 久久久久亚洲AV片无码下载蜜桃| 色狠狠久久综合网| 久久亚洲中文字幕精品一区| 亚洲国产成人久久综合区| 无码国内精品久久综合88| 7777久久久国产精品消防器材| 久久久无码精品亚洲日韩京东传媒|