• <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

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

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

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

            主函數(shù)

            C++

            // 自由函數(shù)

            int main( int argc, char* argv[])

            {

                printf( "Hello, world" );

            }

             

            Java

            // 每個函數(shù)必須是類成員;當(dāng)java類運行時類中的主函數(shù)就會被調(diào)用

            //(所以你可以為每個類寫一個主函數(shù)--這樣用于給類寫單元測試時會很方便)

            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

             

                // 調(diào)用<類名>中的靜態(tài)main函數(shù)

                java <classname>

               

            注釋

            兩種語言完全相同 (// /* */ 都能工作)

            類聲明

            大部分一樣,除了Java不要求后面有個分號

            C++

                class Bar {};

               

            Java

                class Bar {}

               

            方法聲明

            基本相同,除了Java中必須是類成員并且可能有public/private/protected前綴之外。

            構(gòu)造和析構(gòu)

            構(gòu)造語法相同,Java沒有析構(gòu)的等價物。

            靜態(tài)成員函數(shù)和變量

            方法聲明方式相同,不過Java提供了static initialization blocks來初始化靜態(tài)變量(代替在源碼文件中放定義):

            class Foo

            {

                static private int x;

                // static initialization block

                { x = 5; }

            }

            對象聲明

            C++

                // 棧對象

                myClass x;

             

                // 堆對象

                myClass *x = new myClass;

               

            Java

                // 總是分配在堆上(而且,構(gòu)造總是要寫括號)

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

               

            虛函數(shù)

            C++

                virtual int foo();

               

            Java

                // 函數(shù)默認(rèn)就是虛函數(shù);使用final防止被重載

                int foo();

               

            抽象類

            C++

                // 只要包含一個純虛函數(shù)

                class Bar { public: virtual void foo() = 0; };

               

            Java

                // 可以用語法直接定義

                abstract class Bar { public abstract void foo(); }

             

                // 或者指定為接口

                interface Bar { public void foo(); }

             

                // 然后,用一個類實現(xiàn)implement:

                class Chocolate implements Bar

                {

                    public void foo() { /* do something */ }

                }

               

            內(nèi)存管理

            大致相同--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

            數(shù)組

            C++

                int x[10];

                // 或者

                int *x = new x[10];

                // 使用x然后收回內(nèi)存

                delete[] x;

               

            Java

                int[] x = new int[10];

                // 使用x,內(nèi)存由垃圾回收機制回收

               

            集合和迭代

            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()檢查確認(rèn)是否已到末尾。使用itr.next()取得下一個數(shù)據(jù)。

                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 肥仔 閱讀(1275) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎(chǔ)

            久久久久国产| 国内高清久久久久久| 精品久久久久久综合日本| 无码久久精品国产亚洲Av影片 | 2021国内久久精品| 人妻久久久一区二区三区| 久久国产亚洲精品无码| 亚洲国产精品热久久| 久久婷婷是五月综合色狠狠| 亚洲av成人无码久久精品| 久久久中文字幕| 一本色综合网久久| 久久er国产精品免费观看8| 久久精品欧美日韩精品| 武侠古典久久婷婷狼人伊人| 美女写真久久影院| 亚洲伊人久久精品影院| 色综合久久中文字幕综合网| 狠狠色丁香婷婷综合久久来| 久久久久精品国产亚洲AV无码| 精品99久久aaa一级毛片| 狠狠色丁香久久婷婷综合五月| 亚洲七七久久精品中文国产| 久久精品人人做人人爽电影| 久久久久人妻精品一区二区三区| 亚洲国产精品综合久久网络| 国产精品久久久久久久午夜片| 亚洲AV无一区二区三区久久| 久久精品国产免费观看三人同眠| 亚洲国产成人久久综合一区77| 久久精品国产精品亜洲毛片| 色综合久久综合网观看| 国产精品久久久久天天影视| 久久人爽人人爽人人片AV| 国产成人无码精品久久久性色| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 精品久久一区二区| 国产精品久久久天天影视| 99久久国产热无码精品免费| 久久99久久99精品免视看动漫| 少妇内射兰兰久久|