• <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, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            C++和Java的語法對(duì)比手冊(cè)

            原文: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

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

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

            class HelloWorld

            {

                public static void main(String args[])

                {

                    System.out.println( "Hello, World" );

                }

            }

             

            編譯

            C++

                // 編譯

                g++ foo.cc -o outfile

                // 運(yùn)行

                ./outfile

               

            Java

                // 編譯在foo.java里的類成為<類名>.class

                javac foo.java

             

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

                java <classname>

               

            注釋

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

            類聲明

            大部分一樣,除了Java不要求后面有個(gè)分號(hào)

            C++

                class Bar {};

               

            Java

                class Bar {}

               

            方法聲明

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

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

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

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

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

            class Foo

            {

                static private int x;

                // static initialization block

                { x = 5; }

            }

            對(duì)象聲明

            C++

                // 棧對(duì)象

                myClass x;

             

                // 堆對(duì)象

                myClass *x = new myClass;

               

            Java

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

                myClass x = new myClass();

               

            引用vs.指針

            C++

                // 引用是不可改的,使用指針能得到更大的彈性

                int bar = 7, qux = 6;

                int& foo = bar;

               

            Java

                // 引用是可改的,它僅存放對(duì)象的地址。沒有原生指針。

                myClass x;

                x.foo(); // 錯(cuò)誤,x是空指針

             

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

               

            繼承

            C++

                class Foo : public Bar

                { ... };

               

            Java

                class Foo extends Bar

                { ... }

               

            保護(hù)級(jí)別

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

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

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

               

            Java

                // 可以用語法直接定義

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

             

                // 或者指定為接口

                interface Bar { public void foo(); }

             

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

                class Chocolate implements Bar

                {

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

                }

               

            內(nèi)存管理

            大致相同--new 分配, 不過因?yàn)?span lang="EN-US">Java著名的垃圾回收機(jī)制所以沒有delete。

            NULL vs. null

            C++

                // 初始化指針為NULL

                int *x = NULL;

               

            Java

                // 使用未初始化的引用會(huì)被計(jì)算機(jī)捕獲,不過可以賦值為null指明引用為無效。

                myClass x = null;

               

            布爾值

            Java要長(zhǎng)一點(diǎn),你得寫boolean來代替簡(jiǎn)短的bool。

            C++

            bool foo;

            Java

            boolean foo;

            常量

            C++

                const int x = 7;

               

            Java

                final int x = 7;

               

            Throw說明

            首先, Java在編譯時(shí)強(qiáng)制要求有throw說明-如果一個(gè)方法要拋出一個(gè)異常你必須先說明它

            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)存由垃圾回收機(jī)制回收

               

            集合和迭代

            C++

            迭代器是類成員,一個(gè)范圍起始于<container>.begin(), 終止于<container>.end(). 使用++操作前進(jìn),使用*存取。

                vector myVec;

                for ( vector<int>::iterator itr = myVec.begin();

                      itr != myVec.end();

                      ++itr )

                {

                    cout << *itr;

                }

               

            Java

            迭代器僅僅是一個(gè)接口。一個(gè)范圍起始于<collection>.iterator, 接著使用itr.hasNext()檢查確認(rèn)是否已到末尾。使用itr.next()取得下一個(gè)數(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 肥仔 閱讀(1260) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++ 基礎(chǔ)

            国产高潮久久免费观看| 久久久亚洲欧洲日产国码aⅴ | 欧美喷潮久久久XXXXx| 无码任你躁久久久久久老妇| 亚洲国产精品婷婷久久| 国产精品久久网| 国产精品久久久久久一区二区三区| 少妇久久久久久久久久| 亚洲国产精品成人久久| 无码人妻精品一区二区三区久久久 | 99久久无色码中文字幕人妻| 热久久最新网站获取| 午夜精品久久久久久影视riav| 日本精品久久久久影院日本| 久久国产成人亚洲精品影院| 久久久精品视频免费观看| 久久精品免费网站网| 久久人人爽人人澡人人高潮AV| 久久久久国产精品三级网| 欧美精品一区二区久久| 久久亚洲日韩看片无码| 狠狠色丁香久久婷婷综合| 久久综合九色综合网站| 国产精品久久久久AV福利动漫| 2022年国产精品久久久久| 秋霞久久国产精品电影院| 国产成人精品久久一区二区三区av| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 一本综合久久国产二区| 久久伊人精品一区二区三区| 久久免费的精品国产V∧| 色综合久久天天综合| 久久不见久久见免费影院www日本| 久久久久九国产精品| 超级97碰碰碰碰久久久久最新| 亚洲国产另类久久久精品| 99久久超碰中文字幕伊人| 久久97久久97精品免视看| 久久精品免费全国观看国产| 久久精品国产亚洲av影院| 精品人妻伦九区久久AAA片69 |