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

            国内精品久久久久久久亚洲 | 久久国产欧美日韩精品| 精品久久久无码中文字幕| 国产精品无码久久综合网| 亚洲Av无码国产情品久久| 中文字幕久久久久人妻| 国产成人精品久久免费动漫| 国产精品激情综合久久| 狠狠色丁香久久婷婷综合_中| 99久久久精品| 亚洲精品视频久久久| 国产精品免费久久久久电影网| 精品久久久久久无码人妻蜜桃| 亚洲国产欧洲综合997久久| 伊人久久国产免费观看视频| 久久婷婷五月综合色高清| 久久无码专区国产精品发布| 久久99亚洲网美利坚合众国| 婷婷久久香蕉五月综合加勒比| 久久亚洲高清综合| 欧洲国产伦久久久久久久| 97久久久久人妻精品专区| 久久这里只有精品首页| 久久99精品国产麻豆不卡| 国内精品人妻无码久久久影院 | 久久久久久亚洲精品不卡| 久久国产免费直播| 99精品国产在热久久无毒不卡| 久久人人爽人人人人片av| 亚洲国产精品狼友中文久久久| 久久精品9988| 久久精品国产亚洲av瑜伽| 久久最近最新中文字幕大全| 青青青青久久精品国产h| 精品久久久久久国产潘金莲| 久久久久人妻一区精品性色av| 久久精品毛片免费观看| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 国产午夜精品久久久久免费视| 久久一日本道色综合久久| 色综合久久久久综合体桃花网|