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

            久久受www免费人成_看片中文| 久久av无码专区亚洲av桃花岛| 久久一区二区三区99| 久久久久久毛片免费看| 色偷偷偷久久伊人大杳蕉| 99精品久久久久久久婷婷| 无码八A片人妻少妇久久| 国产精品18久久久久久vr| 一本色综合久久| 久久精品国产亚洲av日韩| 久久综合视频网站| 99久久综合狠狠综合久久止| 久久乐国产综合亚洲精品| 久久97久久97精品免视看秋霞 | 少妇无套内谢久久久久| 99久久777色| 亚洲人成网亚洲欧洲无码久久| 久久精品中文字幕久久| 婷婷久久久亚洲欧洲日产国码AV | 久久精品卫校国产小美女| 久久久久人妻一区精品 | 狠狠狠色丁香婷婷综合久久俺| 伊人热热久久原色播放www| 久久精品国产一区二区电影| 麻豆精品久久久一区二区| www.久久热| 久久免费视频观看| 青青国产成人久久91网| 精品国际久久久久999波多野| 亚洲精品高清国产一线久久| 欧美日韩精品久久久免费观看| 人人狠狠综合久久亚洲高清| 久久夜色精品国产亚洲av| 亚洲欧美成人久久综合中文网 | 中文字幕成人精品久久不卡| 久久精品aⅴ无码中文字字幕重口| 伊人久久大香线蕉综合热线| 久久免费视频6| 久久国产精品99久久久久久老狼| 国产成人精品久久亚洲高清不卡 | 精品乱码久久久久久久|