FAQ

¡@

C»y¨¥©MC++»y¨¥¦³¦ó¤£¦P¡H

C»y¨¥³QºÙ¬°µ{¦¡¤§¥À¡A¦]¬°¥Ø«e¥@¬É¤W¦³¹L¥bªºµ{¦¡³£¬O¥ÑC©Ò¼g¦¨ªº¡C§A¥i¯à¹ïC»y¨¥ªº¾ú¥v¨S¤°»ò¿³½ì¡A¦ý¬O§A¥²¶·ª¾¹D¡A¥Ø«eºô¸ô¤W¥D¾÷¨Ï¥ÎªºUNIX§@·~¨t²Î¡A´N¬O¥ÎC»y¨¥¼g¥X¨Óªº¡A¥Ñ©óC»y¨¥ªº§Ö³t¡B¯à¦b¦U§@·~¨t²Î¤¤¶¶§Q²¾´Ó(³N»y¥s¥iÄâ©Ê)¡A©Ò¥H«K¦¨¬°¥Ø«eµ{¦¡³]­pªº¥D¬y¡C

C++»y¨¥«h¬O¤Þ¶i¤Fª«¥ó¾É¦VªºÆ[©À¡AÅýC»y¨¥ªºµo®iªº§ó¦¨¼ô¡AC»y¨¥©MC++»y¨¥¨âªÌÁöµM¬Û¦ü¡A¦ý¬O¦b¼g§@ªºÆ[©À¤W«o¤£ºÉ¬Û¦P¡A¤£¹L¥Ø«e¤j¦h¼Æªº½sĶµ{¦¡³£¯à¦P®É¤ä´©³o¨âºØ»y¨¥¡C

¥Ñ©óC»PC++ªº¦¨¥\¡A¤]«P¦¨¤FJava»y¨¥ªºµo®i¡A¨ä¹ê¡A³o¤T­Óµ{¦¡»y¨¥®Ú¥»¬O¤@¯ß¬Û©Óªºµ{¦¡»y¨¥¡A¤]¥i¥H»¡¬O·í¤µ¸ê°T¬Éªº¥D¬y¬£¡C

¡]¨ú¦Û¡GPC123¹q¸£¾Ç²ßºô¡^

Á|¨Ò¨Ó»¡¡A¼g¤@­ÓHello World¡AC»PC++ªº®t§O¦p¤U¡G

C C++
#include <stdio.h>

int main() {

   printf("Hello! World!\n");

   system("pause");

   return 0;

}

#include <iostream>

using namespace std;

int main() {

   cout << "Hello! World!" << endl;

   system("pause");

   return 0;

}

C++»y¨¥©MJAVA»y¨¥¦³¦ó¤£¦P¡H

C++ Java
©MC»y¨¥­Ý®e,°£¤F¤@¨Ç¤ñ¸û¤Ö¨£ªº±¡ªp ¨S¦³¹ï¥ô¦ó¤§«eªº»y¨¥¦V«e­Ý®e.¦ý¦b»yªk¤W¨ü C/C++ ªº¼vÅT«Ü¤j
¤@¦¸½s¼g¨ì³B½sĶ ¤@¦¸½s¼g¨ì³B¹B¦æ
¤¹³\¹Lµ{½sµ{©Mª«¥ó¾É¦V½sµ{ ¹ªÀyª«¥ó¾É¦Vªº½sµ{¤è¦¡
¤¹³\ª½±µ½Õ¥Î­ì¥Íªº¨t²Î®w ­n³q¹LJNI(en:Java Native Interface)½Õ¥Î, ©ÎªÌ JNA(en:Java Native Access)
¯àª½±µ¨Ï¥Î©³¼h¨t²Î¤¶­± ¦b¤@­Ó«OÅ@¼Ò¦¡¤UªºµêÀÀ¾÷¤¤¹B¦æ
¥u´£¨Ñ¹ï¶HªºÃþ«¬©MÃþ«¬¦W ¬O¤Ï®gªº, ¤¹³\¤¸½sµ{©M¹B¦æ®Éªº°ÊºA¥Í¦¨¥N½X
¦³¦hºØ¤G¶i¨î­Ý®e¼Ð·Ç (¨Ò¦p:·L³n©MItanium/GNU) ¤@ºØ¤G¶i¨î­Ý®e¼Ð·Ç,¤¹³\¹B¦æ®É®wªº¥¿½T©ÊÀˬd
¥i¿ïªº¦Û°ÊÃä¬ÉÀˬd. (¨Ò¦p: vector ©M string ³o¨â­Ó®e¾¹ªº at() ¤èªk) ¤@¯ë³£¦³°µÃä¬ÉÀˬd. HotSpot (java)(Sun ªºµêÀÀ¾÷¹ê²{) ¥i¥H¥h±¼Ãä¬ÉÀˬd.
¤ä«ù­ì¥ÍªºµL²Å¸¹¼Æ¾Ç¹Bºâ ¤£¤ä«ù­ì¥ÍªºµL²Å¸¹¼Æ¾Ç¹Bºâ
¹ï©Ò¦³ªº¼Æ¦rÃþ«¬¦³¼Ð·Çªº½d³ò­­¨î,¦ý¦ì¤¸²Õªø«×¬O¸ò¹ê²{¬ÛÃöªº. ¼Ð·Ç¤ÆªºÃþ«¬¥i¥H¥Î typdef ©w¸q (uint8_t, ..., uintptr_t). ¦b©Ò¦³¥­¥x¤W¹ï©Ò¦³ªº°ò¥»Ãþ«¬³£¦³¼Ð·Çªº½d³ò­­¨î©M¦ì¤¸²Õªø«×.
¤ä«ù«ü°w,¤Þ¥Î,­È¶Ç»¼ °ò¥»Ãþ«¬Á`¬O¨Ï¥Î­È¶Ç»¼. ¹ï¶H¥H¥i¥H¬°ªÅªº¤Þ¥Îªº¤è¦¡¶Ç»¼ (¬Û·í©ó¦bC++¨½¨Ï¥Î«ü¦V class ©ÎªÌ struct °Ñ¼Æªº«ü°w).[1]
Å㦡ªº¤º¦sºÞ²z,¦ý¦³²Ä¤T¤èªº®Ø¬[¥i¥H´£¨Ñ©U§£·j¶°ªº¤ä«ù. ¤ä«ùªRºc¨ç¼Æ. ¦Û°Ê©U§£·j¶°(¥i¥H¤â°ÊIJµo).¨S¦³ªRºc¨ç¼Æªº·§©À,¹ï finalize() ªº¨Ï¥Î¬O¤£±ÀÂ˪º.
¤ä«ùÃþ,µ²ºc,Áp¦X,¥i¥H¦b°ï©ÎªÌ´Ì¨½¬°¥¦­Ì°ÊºA¤À°t¤º¦s. ¥u¤ä«ùÃþ,¥u¦b°ï¤¤¬°¹ï¶H¤À°t¤º¦s.Java SE 6¦b´Ì¬°¤@¨Ç¹ï¶H¤À°t¤º¦sªº¨Ï¥Î¤F°k¶h¤ÀªR(en:escape analysis)ªºÀu¤Æ¤èªk.
¤¹³\Å㦡ªºÂл\(¤]¥s­«¼g)Ãþ«¬ ÄY®æªºÃþ«¬¦w¥þ(en:type safety),°£¤FÅܼeªºÃþ«¬Âà´«. Java 1.5 ¶}©l¤ä«ù¦Û°ÊÃþ«¬¥]¸Ë©M¸Ñ¥]¸Ë(Autoboxing/Unboxing).
C++¼Ð·Ç®w¥]¬A:»y¨¥¤ä«ù,¶EÂ_¤u¨ã,±`¥Î¤u¨ã,¦r¤¸¦ê,¥»¦a¤Æ,®e¾¹,ºtºâªk,­¡¥N¾¹,¼Æ­È,¿é¤J/¿é¥X,C¼Ð·Ç®w. Boost®w´£¨Ñ¤F§ó¦hªº¥\¯à,¥]¬A°õ¦æºü©Mºô¸ôI/O.¨Ï¥ÎªÌ¥²¶·¦b¤@¤j°ï(¤j³¡¤À¤¬¬Û¤£­Ý®e)²Ä¤T¤èGUI©ÎªÌ¨ä¥L¥\¯à®w¤¤¶i¦æ¿ï¾Ü. ¼Ð·Ç®w¦b¨C¦¸ Java µo¥¬·sª©¥»ªº®É­Ô³£·|§ó·s¨Ã¼W±j¥\¯à. 1.6ª©¥»¤ä«ù:¥»¦a¤Æ,logging,®e¾¹©M­¡¥N¾¹,ºtºâªk,GUI ½sµ{(¦ý¨S¦³¥Î¨ì¨t²ÎªºGUI),¹Ï§Î,¦h°õ¦æºü,ºô¸ô,¥­¥x¦w¥þ,¦Û¬Ù¾÷¨î,°ÊºAÃþ¸ü¤J,ªý¶ë©M«Dªý¶ëªºI/O,¹ï©óXML,XSLT,MIDI¤]´£¨Ñ¤F¬ÛÃö¤¶­±©ÎªÌ¤ä«ùÃþ,¸ê®Æ®w,©R¦WªA°È(¨Ò¦p LDAP),±K½X¾Ç,¦w¥þªA°È(¨Ò¦p Kerberos),¦C¦LªA°È,WEB ªA°È.SWT ´£¨Ñ¤F¤@­Ó¨t²Î¬ÛÃöªºGUIªº©â¶H.
¹ï¤j³¡¤Àªº¾Þ§@²Å³£¥i¥H¶i¦æ¾Þ§@²Å­«¸ü(en:Operator overloading) ¾Þ§@²Åªº·N¸q¤@¯ë¨Ó»¡¬O¤£¥iÅܪº,¨Ò¥~¬O + ©M += ¾Þ§@²Å³Q¦r¤¸¦ê­«¸ü¤F.
§¹¥þªº¦h­«Ä~©Ó,¥]¬AµêÀÀÄ~©Ó Ãþ¥u¤¹³\³æÄ~©Ó,»Ý­n¦hÄ~©Óªº±¡ªp­n¨Ï¥Î¤¶­±.
¤ä«ù½sĶ´Á¼ÒªO ªx«¬(en:Generics in Java)³Q¥Î¨Ó¹F¨ì©MC++¼ÒªOÃþ¦üªº®ÄªG,¦ý¥Ñ©óÃþ«¬®ø°£(en:Type Erasure)¥¦­Ì¤£¯à¦b½sĶ´Á¶¡±q¥N½X³Q½sĶ¦¨¦ì¤¸²Õ½X.
¤ä«ù¨ç¼Æ«ü°w,¨ç¼Æ¹ï¶H,lambda(¦b C++0x)©M¤¶­± ¨S¦³¨ç¼Æ«ü°w¾÷¨î.´À¥Nªº·§©À¬O¤¶­±,Adapter ©M Listener¤]¬O³Q¼sªx¨Ï¥Îªº.
¨S¦³¼Ð·Çªº¥N½X¤º´O¤åÀɾ÷¨î. ¤£¹L¦³²Ä¤T¤èªº³nÅé(¨Ò¦p Doxygen). Javadoc ¼Ð·Ç¤åÀɥͦ¨¨t²Î.
const ÃöÁä¦r¥Î¨Ó©w¸q¤£¥i§ïÅܪº±`¶q©M¦¨­û¨ç¼Æ final ´£¨Ñ¤F¤@­Ó­­¨îª©¥»ªº const, µ¥»ù©ó type* const ªº¹ï¶H«ü°w©ÎªÌ constªº°ò¥»Ãþ«¬¼Æ¾Ú. ¨S¦³ const ¦¨­û¨ç¼Æ, ¤]¨S¦³const type* «ü°wªºµ¥»ùª«.
¤ä«ù goto »y¥y. ¤ä«ù´`Àô¼ÐÅÒ(label)©M»y¥y¶ô.
­ì©l½X¥i¥H¼g¦¨¥­¥xµLÃöªº (¥i¥H³Q Windows, BSD, Linux, Mac OS X, Solaris µ¥½sĶ, ¤£¥Î­×§ï) ,¤]¥i¥H¼g¦¨§Q¥Î¥­¥x¯S¦³ªº¯S©Ê. ³q±`³Q½sĶ¦¨­ì¥Íªº¾÷¾¹½X. ³Q½sĶ¦¨JavaµêÀÀ¾÷ªº¦ì¤¸²Õ½X. ©MJava¥­¥x¬ÛÃö,¦ý¬O­ì©l½X¤@¯ë¨Ó»¡¬O¤£¨Ì¿à§@·~¨t²Î¯S¦³ªº¯S©Êªº.

¡@

°Ñ¦Ò维°ò¦Ê¬ì¡G¤ñ¸ûJava©MC++

Á|¨Ò¨Ó»¡¡A¼g¤@­ÓHello World¡AC¡BC++»PJAVAªº®t§O¦p¤U¡G

C C++ JAVA
#include <stdio.h>

int main() {

   printf("Hello! World!\n");

   return 0;

}

#include <iostream>

using namespace std;

int main() {

   cout << "Hello! World!" << endl;

   return 0;

}

public class FirstJava {

   public static void main(String[] argv) {

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

   }

}

¡@

JAVA SDK

­n«Ø¥ßJava¶}µoÀô¹Ò¡AÂ÷¤£¶}SunªºJAVA2 SDK¡C

1998¦~12¤ëSun¤½¥qµo§G¤FJava Software Development Kit(²ºÙJAVA2 SDK)¡A¥Ø«eªº³Ì·sª©¥»¬OJ2sdk-1.4.2.05¡C

¥i¦bhttp://Java.sun.com¤U¸ü¡C®Ú¾Ú¹B¦æ¥­»Oªº¤£¦P¡A¤U¸ü¬ÛÀ³ªºª©¥»¨Ã³]¸m¦nPATH©MCLASSPATH¡C

³o­Ó®M¸Ë³nÅé´£¨Ñ¤FJava½sĶ¾¹¡BJava¸ÑÄÀ¾¹¡A¦ý¨S¦³´£¨ÑJava½s¿è¾¹¡A¦]¦¹»Ý­n¨Ï¥ÎªÌ¦Û¤v¿ï¾Ü¤@­Ó¤è«K©ö¥Îªº½s¿è¾¹©Î¶°¦¨¶}µo¤u¨ã¡C

ªì¾ÇªÌ¾A¥ÎªºJava¶}µo¤u¨ã¡C

¤@ UltraEdit

UltraEdit
¬O¦@¥Î³nÅé¡A¥¦ªº©x¤èºô§}¬O¡Gwww.ultraedit.com¡C³Ì·sª©¥»¬OV10.20b¡C¥¦¬O¤@­Ó¥\¯à±j¤jªº¤å¥»¡BHTML¡Bµ{¦¡·½¥N½X½s¿è¾¹¡C§@¬°·½¥N½X½s¿è¾¹¡A¥¦ªºÀq»{°t¸m¥i¥H¹ïC/C++, VB, HTML, Java©M Perl¶i¦æ»yªkµÛ¦â¡C¥Î¥¦³]­pJavaµ{¦¡®É¡A¥i¥H¹ïJavaªºÃöÁä¦r¶i¦æÃѧO¨ÃµÛ¦â¡A¤è«K¤FJavaµ{¦¡³]­p¡C¥¦¨ã¦³§¹³Æªº½Æ»s¡BÖ߶K¡B°Å¤Á¡B¬d§ä¡B´À´«¡B®æ¦¡±±¨îµ¥½s¿è¥\¯à¡C¥i¥H¦bAdvanced¥\¯àªíªºTool Configuration ¥\¯àªí¶µ°t¸m¦nJavaªº½sĶ¾¹Javac©M¸ÑÄÀ¾¹Java¡Aª½±µ½sĶ¹B¦æJavaµ{¦¡¡C

°t¸mJavac¡G¦bCommand LineùØ¿é¤J¡GD:\JSP\j2sdk\bin\Javac %f,³oùØJavacªº¸ô®|­n®Ú¾ÚJDKªº¹ê»Ú¦w¸Ë¸ô®|¨Ó«ü©w¡A%f¬O«ü·í«e¬¡°Ê¤åÀɪº¥þÀɮצW¡C¦bMenu Item Name ùØ¿é¤JJavac ¡A¥¦Åã¥Ü¦bAdvanced¥\¯àªíùØ¡A³o¼Ë´N¥i¥Hª½±µ°õ¦æ¥¦¶i¦æ½sĶ¤F¡C¿ï¤¤Output To List Box©MCapture Output ,³o¼Ë´N¥i¥H¦b·½¥N½X¤U­±ªº¿é¥Xµøµ¡ùجݨì½sĶ®Éªº¿ù»~¸ê°T¤F¡C°t¸m¤£±a°Ñ¼Æ¹B¦æªº¸ÑÄÀ¾¹Java¡G¦bCommand LineùØ¿é¤J¡GD:\JSP\j2sdk\bin

Java %n
¡A¦bMenu Item Name ùØ¿é¤J: Java filename¡A¿ï¤¤Output To List Box©MCapture Output ¡A¹B¦æµ²ªGÅã¥Ü¦b¿é¥Xµøµ¡ùØ¡C°t¸m±a°Ñ¼Æ¹B¦æªº¸ÑÄÀ¾¹Java¡G¦bCommand LineùØ¿é¤J¡Gd:\JSP\j2sdk\bin\Java %n%modify%¡A¦bMenu Item Name ùØ¿é¤J¡GJava filename parameter¡A³o¼Ë·í°õ¦æ³o­Ó¥\¯àªí¶µªº®É­Ô¡A·|Åã¥Ü¤@­Ó­n¨D¿é¤J°Ñ¼Æªº¹ï¸Ü¤è¶ô¡C

¤G Editplus

EditPlus
¬O¦@¥Î³nÅé¡A¥¦ªº©x¤èºô§}¬O¡Gwww.editplus.com¡C³Ì·sª©¥»¬OEditPlus 2.12¡CEditPlus¤]¬O¥\¯à«Ü¥þ­±ªº¤å¥»¡BHTML¡Bµ{¦¡·½¥N½X½s¿è¾¹¡CÀq»{ªº¤ä«ùHTML¡BCSS¡BPHP¡BASP¡BPerl¡BC/C++¡BJava¡Bjavascript©MVBScriptªº»yªkµÛ¦â¡C³q¹L©w¨î»yªkÀÉÁÙ¥i¥HÂX®i¨ì¨ä¥Lµ{¦¡»y¨¥¡C¥i¥H¦bTools¥\¯àªíªºConfigure User Tools¥\¯àªí¶µ°t¸m¥Î¤á¤u¨ã¡AÃþ¦ü©óUltraEditªº°t¸m¡A°t¸m¦nJavaªº½sĶ¾¹Javac©M¸ÑÄÀ¾¹Java«á¡A³q¹LEditPlusªº¥\¯àªí¥i¥Hª½±µ½sĶ°õ¦æJavaµ{¦¡¡C

¤T Jcreator

Jcreator
¬O¤@­Ó¥Î©óJavaµ{¦¡³]­pªº¶°¦¨¶}µoÀô¹Ò¡A¨ã¦³½s¿è¡B½Õ¸Õ¡B¹B¦æJavaµ{¦¡ªº¥\¯à¡C©x¤èºô§}¬O¡Gwww.jcreator.com¡C·í«e³Ì·sª©¥»¬OJcreator 3.10¡A¥¦¤S¤À¬°LE©MProª©¥»¡CLEª©¥»¥\¯à¤W¨ü¨ì¤@¨Ç­­¨î¡A¬O§K¶Oª©¥»¡CProª©¥»¥\¯à³Ì¥þ¡A¦ý³o­Óª©¥»¬O¤@­Ó¦@¥Î³nÅé¡C³o­Ó³nÅé¤ñ¸û¤p¥©¡A¹ïµwÅé­n¨D¤£¬O«Ü°ª¡A§¹¥þ¥ÎC++¼gªº¡A³t«×§Ö¡B®Ä²v°ª¡C¨ã¦³»yªkµÛ¦â¡B¥N½X¦Û°Ê§¹¦¨¡B¥N½X°Ñ¼Æ´£¥Ü¡B¤uµ{ÂQ¾É¡BÃþÂQ¾Éµ¥¥\¯à¡C²Ä¤@¦¸±Ò°Ê®É´£¥Ü³]¸mJava JDK¥D¥Ø¿ý¤ÎJDK JavaDoc¥Ø¿ý¡A³nÅé¦Û°Ê³]¸m¦nÃþ¸ô®|¡B½sĶ¾¹¤Î¸ÑÄÀ¾¹¸ô®|¡AÁÙ¥i¥H¦bÀ°§U¥\¯àªí¤¤¨Ï¥ÎJDK Help¡C¦ý¥Ø«e³o­Óª©¥»¹ï¤¤¤å¤ä«ù©Ê¤£¦n¡C

¥| Eclipse

Eclipse
¬O¤@­Ó¶}©ñ¥iÂX®iªº¶°¦¨¶}µoÀô¹Ò(IDE)¡C¥¦¤£¶È¥i¥H¥Î©óJavaªº¶}µo¡A³q¹L¶}µo´¡¥ó¡A¥¦¥i¥Hºc«Ø¨ä¥Lªº¶}µo¤u¨ã¡CEclipse¬O¶}©ñ·½¥N½Xªº¶µ¥Ø¡A¨Ã¥i¥H§K¶O¤U¸ü¡C¥¦ªº©x¤èºô§}¬O¡Gwww.eclipse.org ¡C¥¦ªº©x¤èºô¯¸´£¨ÑReleases¡BStable Builds¡BIntegration Builds©MNightly Builds¤U¸ü¡C«Øij¨Ï¥ÎReleases©ÎStable Buildsª©¥»¡C

Releases
ª©¥»¬OEclipse¶}µo¹Î¶¤µo§Gªº¥D­nµo¦æª©¥»¡A¬O¸g¹L´ú¸ÕªºÃ­©wªºª©¥»¡A¾A¦X­n¨Dí©w¦Ó¤£»Ý­n³Ì·s§ï¶i¥\¯àªº¨Ï¥ÎªÌ¿ï¾Ü¡C¥Ø«e³Ì·sªºReleaseª©¥»¬OEclipse 3.0¡CStable Buildsª©¥»¬O¹ï¤j¦h¼Æ¨Ï¥ÎªÌ¨¬°÷í©wªºª©¥»¡A¥Ñ¶}µo¹Î¶¤±N»{¬°¤ñ¸ûí©wªºIntegration Buildª©¥»´£¤É¨ìStable Build¦Ó¨Ó¡A¾A¦X·Q¨Ï¥ÎEclipse·s¥\¯àªº¨Ï¥ÎªÌ¿ï¾Ü¡C¹ï©óReleasesª©¥»2.1.x¡A¦bEclipseªº©x¤èºô¯¸¤W¦³¤@­Ó»y¨¥¥]¥i¥H¤U¸ü¡A³o¼ËEclipse¤Î¨äÀ°§U³£¬O²Å餤¤åªº¡C¥Î©óJava¶}µo¡AEclipse»PUltraEdit©MEditplus¨âºØ½s¿è¾¹©MJcreator IDE¤ñ¸û¡AEclipse§ó±M·~¡A¥\¯à§ó±j¤j¡C

¡]°Ñ¦Ò¸ê®Æ¡G<Java IDE¡GJavaªì¾ÇªÌ±`¥Î¶}µo¤u¨ã¤¶²Ð>¡^

¤­ jbuilder

¤» myeclipse

¤C netbeans

Gel

TextPad

EditPlus

JAVA±`¥ÎIDE¤ñ¸û

Java IDE Comparison

Eclipse¦w¸Ë¤â°OPart I