┬. ╓Φ°σΓ±ΩΦΘ, Jet Infosystems
╧≡σα∞ß≤δα
═α ±σπεΣφ °φΦΘ Σσφⁿ ±ετΣαφΦσ ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ ∩≡σΣ±≥αΓδ σ≥ ±εßεΘ ≈≡στΓ√≈αΘφε ≥ µσδεσ ταφ ≥Φσ. ╥≡≤Σφε±≥Φ ±Γ ταφ√ ± ≡ατφεεß≡ατΦσ∞ α≡⌡Φ≥σΩ≥≤≡ ∞α°Φφ, ε∩σ≡α÷Φεφφ√⌡ ±Φ±≥σ∞, π≡α⌠Φ≈σ±ΩΦ⌡ εßεδε≈σΩ Φ ≥.Σ.. ╩≡ε∞σ ≥επε, Γα°Φ ∩≡ΦδεµσφΦ Σεδµφ√ ≡αßε≥α≥ⁿ Γ ≡α±∩≡σΣσδσφφ√⌡ ±Φ±≥σ∞α⌡. ╤≥≡σ∞Φ≥σδⁿφ√Θ ≡ε±≥ ≥σ⌡φεδεπΦΘ, ±Γ ταφφ√⌡ ± ╚φ≥σ≡φσ≥ε∞, WWW Φ "²δσΩ≥≡εφφεΘ Ωε∞∞σ≡÷ΦσΘ", Σε∩εδφΦ≥σδⁿφε ≤±δεµφ ■≥ ²≥≤ ταΣα≈≤. ╠εΣφ√Θ φ√φσ εß·σΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφ√Θ ∩εΣ⌡εΣ ±α∞ ∩ε ±σßσ φσ ≡σ°ασ≥ ²≥Φ⌡ ∩≡εßδσ∞, ßεδσσ ≥επε, ≈α±≥ε ∩≡ΦΓφε±Φ≥ φεΓ√σ.
╧≡σΣδαπασ∞√Θ ⌠Φ≡∞εΘ Sun Microsystems ∩εΣ⌡εΣ, α Φ∞σφφε ±Φ±≥σ∞α ∩≡επ≡α∞∞Φ≡εΓαφΦ φα ε±φεΓσ τ√Ωα Java(TM) εßδαΣασ≥ ±δσΣ≤■∙Φ∞Φ ⌡α≡αΩ≥σ≡Φ±≥ΦΩα∞Φ:
╬±φεΓ√ ∩≡εσΩ≥α Java. ═σ∞φεπε Φ±≥ε≡ΦΦ
╓σδⁿ■ ∩≡εσΩ≥α ß√δε ±ετΣαφΦσ φσßεδⁿ°εΘ, φαΣσµφεΘ, ∩σ≡σφε±Φ∞εΘ Φ ≡α±∩≡σΣσδσφφεΘ ±Φ±≥σ∞√ ≡σαδⁿφεπε Γ≡σ∞σφΦ. ╚±⌡εΣφε Γ Ωα≈σ±≥Γσ τ√Ωα ∩δαφΦ≡εΓαδε±ⁿ Φ±∩εδⁿτεΓαφΦσ τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ ╤++, φε ∩ε±≥σ∩σφφε ±Γ ταφφ√σ ± φΦ∞ ≥≡≤Σφε±≥Φ ∩≡ΦΓσδΦ Ω φσεß⌡εΣΦ∞ε±≥Φ ±ετΣαφΦ φεΓεπε τ√Ωα. ╤Φ±≥σ∞α Σεδµφα ß√δα Γεß≡α≥ⁿ Γ ±σß δ≤≈°Φσ ≈σ≡≥√ Φτ ∞φεµσ±≥Γα ±εΓ≡σ∞σφφ√⌡ ±Φ±≥σ∞ ∩≡επ≡α∞∞Φ≡εΓαφΦ -- Eiffel, Smalltalk, Objective C, Cedar/Mesa Φ ≥. Σ..
╤≥≡σ∞Φ≥σδⁿφ√Θ ≡ε±≥ ±σ≥σΓ√⌡ ≥σ⌡φεδεπΦΘ ∩≡ΦΓσδ Ω φσεß⌡εΣΦ∞ε±≥Φ φεΓεπε Γτπδ Σα φα ∩≡ε÷σ±± ±ετΣαφΦ Φ ≡α±∩≡σΣσδσφΦ ∩≡ΦδεµσφΦΘ. ╤εΓ≡σ∞σφφ√σ ∩≡ΦδεµσφΦ Σεδµφ√ ß√≥ⁿ ßστε∩α±φ√, Γ√±εΩε∩≡εΦτΓεΣΦ≥σδⁿφ√, ≡αßε≥α≥ⁿ Γ ≡α±∩≡σΣσδσφφεΘ ±≡σΣσ φα ∞φεµσ±≥Γσ ∞α°Φφ ≡ατδΦ≈φεΘ α≡⌡Φ≥σΩ≥≤≡√.
╥≡σßεΓαφΦ Ω ∩σ≡σφε±Φ∞ε±≥Φ τα±≥αΓΦδΦ ε≥Ωατα≥ⁿ± ε≥ ≥≡αΣΦ÷Φεφφεπε ±∩ε±εßα ±ετΣαφΦ Φ Σε±≥αΓΩΦ ßΦφα≡φ√⌡ ⌠αΘδεΓ, ±εΣσ≡µα∙Φ⌡ ∞α°Φφφ√σ ΩεΣ√ Φ, ±δσΣεΓα≥σδⁿφε, ∩≡ΦΓ ταφφ√⌡ Ω ε∩≡σΣσδσφφεΘ ∩δα≥⌠ε≡∞σ. ╤σπεΣφ , ≈≥εß√ Γ√µΦ≥ⁿ Γ ²≥Φ⌡ Σµ≤φπδ ⌡ Φτ α≡⌡Φ≥σΩ≥≤≡ ∩≡ε÷σ±±ε≡εΓ, ε∩σ≡α÷Φεφφ√⌡ ±Φ±≥σ∞ Φ π≡α⌠Φ≈σ±ΩΦ⌡ εßεδε≈σΩ, ∩≡ΦδεµσφΦσ Σεδµφε ß√≥ⁿ φσΘ≥≡αδⁿφε Ω α≡⌡Φ≥σΩ≥≤≡σ Φ ΣΦφα∞Φ≈σ±ΩΦ φα±≥≡αΦΓασ∞ε.
╤ετΣαφφα ±Φ±≥σ∞α ≡ατ≡αßε≥ΩΦ Java ≤ΣεΓδσ≥Γε≡ σ≥ Γ±σ∞ ²≥Φ∞ ≥≡σßεΓαφΦ ∞, α ±δσΣεΓα≥σδⁿφε:
╤ΓεΘ±≥Γα Java, Ω≡α≥ΩΦΘ εßτε≡
Java ∩≡ε±≥α, εß·σΩ≥φε ε≡Φσφ≥Φ≡εΓαφφα Φ τφαΩε∞α
╤Φ±≥σ∞α Java ±ετΣαφα φα ε±φεΓσ *∩≡ε±≥επε* τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ , ≥σ⌡φΦΩα Φ±∩εδⁿτεΓαφΦ Ωε≥ε≡επε ßδΦτΩα Ω εß∙σ∩≡Φφ ≥εΘ Φ εß≤≈σφΦσ Ωε≥ε≡ε∞≤ φσ ≥≡σß≤σ≥ τφα≈Φ≥σδⁿφ√⌡ ≤±ΦδΦΘ.
Java ΩαΩ τ√Ω ∩≡επ≡α∞∞Φ≡εΓαφΦ Γδ σ≥± εß·σΩ≥φε ε≡Φσφ≥Φ≡εΓαφφεΘ ± ∞ε∞σφ≥α ε±φεΓαφΦ . ╩≡ε∞σ ≥επε ∩≡επ≡α∞∞Φ±≥ ± ±α∞επε φα≈αδα εßσ±∩σ≈ΦΓασ≥± φαßε≡ε∞ *±≥αφΣα≡≥φ√⌡* ßΦßδΦε≥σΩ, εßσ±∩σ≈ΦΓα■∙Φ⌡ ⌠≤φΩ÷Φεφαδⁿφε±≥ⁿ ε≥ ±≥αφΣα≡≥φεπε ΓΓεΣα/Γ√ΓεΣα Φ ±σ≥σΓ√⌡ ∩≡ε≥εΩεδεΓ Σε π≡α⌠Φ≈σ±ΩΦ⌡ ∩εδⁿτεΓα≥σδⁿ±ΩΦ⌡ Φφ≥σ≡⌠σΘ±εΓ. ▌≥Φ ßΦßδΦε≥σΩΦ δσπΩε ∞επ≤≥ ß√≥ⁿ ≡α±°Φ≡σφ√.
═σ±∞ε≥≡ φα ≥ε, ≈≥ε τ√Ω ╤++ ß√δ ε≥Γσ≡πφ≤≥, ±Φφ≥αΩ±Φ± τ√Ωα Java ∞αΩ±Φ∞αδⁿφε ∩≡ΦßδΦµσφ Ω ±Φφ≥αΩ±Φ±≤ ╤++. ▌≥ε Σσδασ≥ τ√Ω τφαΩε∞√∞ °Φ≡εΩε∞≤ Ω≡≤π≤ ∩≡επ≡α∞∞Φ±≥εΓ. ┬ ≥ε µσ Γ≡σ∞ Φτ τ√Ωα ß√δΦ ≤Σαδσφ√ ∞φεπΦσ ±ΓεΘ±≥Γα, Ωε≥ε≡√σ Σσδα■≥ ╤++ ΦτδΦ°φσ ±δεµφ√∞ Σδ ∩εδⁿτεΓαφΦ , φσ Γδ ±ⁿ αß±εδ■≥φε φσεß⌡εΣΦ∞√∞Φ. ┬ ≡στ≤δⁿ≥α≥σ τ√Ω Java ∩εδ≤≈Φδ± ßεδσσ ∩≡ε±≥√∞ Φ ε≡παφΦ≈φ√∞, ≈σ∞ ╤++.
═αΣσµφε±≥ⁿ Φ ßστε∩α±φε±≥ⁿ
Java ±≤∙σ±≥Γσφφε εßδσπ≈ασ≥ ±ετΣαφΦσ φαΣσµφεπε ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ . ╩≡ε∞σ Φ±≈σ≡∩√Γα■∙σΘ ∩≡εΓσ≡ΩΦ φα ²≥α∩σ Ωε∞∩Φδ ÷ΦΦ, ±Φ±≥σ∞α ∩≡σΣ≤±∞α≥≡ΦΓασ≥± αφαδΦτ φα ²≥α∩σ Γ√∩εδφσφΦ . ╤α∞ τ√Ω ±∩≡εσΩ≥Φ≡εΓαφ ≥αΩ, ≈≥εß√ Γ√≡αßα≥√Γα≥ⁿ ≤ ∩≡επ≡α∞∞Φ±≥α ∩≡ΦΓ√≈Ω≤ ∩Φ±α≥ⁿ "∩≡αΓΦδⁿφε". ╠εΣσδⁿ ≡αßε≥√ ± ∩α∞ ≥ⁿ■, Γ Ωε≥ε≡εΘ Φ±Ωδ■≈σφε Φ±∩εδⁿτεΓαφΦσ ≤Ωατα≥σδσΘ, Σσδασ≥ φσΓετ∞εµφ√∞Φ ÷σδ√Θ Ωδα±± ε°ΦßεΩ, ⌡α≡αΩ≥σ≡φ√⌡ Σδ ╤ Φ ╤++.
┬ ±Φδ≤ ≥επε, ≈≥ε Java ∩≡σΣφατφα≈σφα Σδ ≡αßε≥√ Γ ≡α±∩≡σΣσδσφφεΘ ±≡σΣσ, ßστε∩α±φε±≥ⁿ ±≥αφεΓΦ≥± ≈≡στΓ√≈αΘφε ΓαµφεΘ ∩≡εßδσ∞εΘ. ╥≡σßεΓαφΦ ßστε∩α±φε±≥Φ ε∩≡σΣσδ ■≥ ∞φεπΦσ ≈σ≡≥√ ΩαΩ τ√Ωα, ≥αΩ Φ ≡σαδΦτα÷ΦΦ Γ±σΘ ±Φ±≥σ∞√.
═σταΓΦ±Φ∞ε±≥ⁿ ε≥ α≡⌡Φ≥σΩ≥≤≡√ Φ ∩σ≡σφε±Φ∞ε±≥ⁿ.
╩ε∞∩Φδ ≥ε≡ Java ∩≡εΦτΓεΣΦ≥ ßαΘ≥-ΩεΣ√, ≥.σ. ∞εΣ≤δΦ ∩≡ΦδεµσφΦ Φ∞σ■≥ α≡⌡Φ≥σΩ≥≤≡φε-φσταΓΦ±Φ∞√Θ ⌠ε≡∞α≥, Ωε≥ε≡√Θ ∞εµσ≥ ß√≥ⁿ ∩≡εΦφ≥σ≡∩≡σ≥Φ≡εΓαφ φα ∞φεµσ±≥Γσ ≡ατφεεß≡ατφ√⌡ ∩δα≥⌠ε≡∞. ▌≥ε ≤µσ φσ Φ±⌡εΣφ√σ ≥σΩ±≥√, φε σ∙σ φσ ∩δα≥⌠ε≡∞φε-ταΓΦ±Φ∞√σ ∞α°Φφφ√σ ΩεΣ√.
╤δσΣ≤■∙ΦΘ °απ -- "τα∞ε≡αµΦΓαφΦσ" ±≥αφΣα≡≥α φα ⌠ε≡∞α≥ ε±φεΓφ√⌡ Γ±≥≡εσφφ√⌡ ≥Φ∩εΓ Σαφφ√⌡. ╧≡επ≡α∞∞α, ±ετΣαφφα φα εΣφεΘ ∩δα≥⌠ε≡∞σ, ≡αßε≥ασ≥ φα Γ±σ⌡ ε±≥αδⁿφ√⌡.
▌≥ε≥ ±≥αφΣα≡≥ ⌠ΦΩ±Φ≡εΓαφ Γ ΣεΩ≤∞σφ≥σ, ε∩Φ±√Γα■∙σ∞ Java Virtual Machine. ╤≥αφΣα≡≥ ∞εµσ≥ ß√≥ⁿ ≡σαδΦτεΓαφ φα δ■ßεΘ α∩∩α≡α≥φε-∩≡επ≡α∞∞φεΘ ∩δα≥⌠ε≡∞σ, ∩εΣΣσ≡µΦΓα■∙σΘ ∞φεπε∩ε≥εΩεΓε±≥ⁿ.
╧≡εΦτΓεΣΦ≥σδⁿφε±≥ⁿ
╤⌡σ∞α ≡αßε≥√ ±Φ±≥σ∞√ Φ φαßε≡ ßαΘ≥-ΩεΣεΓ ΓΦ≡≥≤αδⁿφεΘ ∞α°Φφ√ Java ≥αΩεΓ√, ≈≥ε ∩ετΓεδ ■≥ Σε±≥Φ≈ⁿ Γ√±εΩεΘ ∩≡εΦτΓεΣΦ≥σδⁿφε±≥Φ φα ²≥α∩σ Γ√∩εδφσφΦ ∩≡επ≡α∞∞√:
┴ατεΓα ±Φ±≥σ∞α Java
╬∩√≥ ∩εΩατ√Γασ≥, ≈≥ε ε≥±≤≥±≥ΓΦσ ±≥αφΣα≡≥φ√⌡ ßατεΓ√⌡ ßΦßδΦε≥σΩ Σδ τ√Ωα ╤++ ≈≡στΓ√≈αΘφε τα≥≡≤Σφ σ≥ ≡αßε≥≤ ± φΦ∞. ┬ ±Φδ≤ ≥επε, ≈≥ε δ■ßεσ φσ≥≡ΦΓΦαδⁿφεσ ∩≡ΦδεµσφΦσ ≥≡σß≤σ≥ φαδΦ≈Φ φσΩε≥ε≡επε φαßε≡α ßατεΓ√⌡ Ωδα±±εΓ, ≡ατ≡αßε≥≈ΦΩα∞ ∩≡Φ⌡εΣΦ≥± ∩εδⁿτεΓα≥ⁿ± ≡ατδΦ≈φ√∞Φ φσ±εΓ∞σ±≥Φ∞√∞Φ ∞σµΣ≤ ±εßεΘ ßΦßδΦε≥σΩα∞Φ ΦδΦ ∩Φ±α≥ⁿ ±ΓεΘ ±εß±≥Γσφφ√Θ Γα≡Φαφ≥ ≥αΩεπε φαßε≡α. ┬±σ ²≥ε τα≥≡≤Σφ σ≥ ΩαΩ ≡ατ≡αßε≥Ω≤, ≥αΩ Φ ΣαδⁿφσΘ°≤■ ∩εΣΣσ≡µΩ≤ ∩≡ΦδεµσφΦΘ, τα≥≡≤Σφ σ≥ ±≥√ΩεΓΩ≤ ∩≡ΦδεµσφΦΘ, φα∩Φ±αφφ√⌡ ≡ατφ√∞Φ δ■Σⁿ∞Φ.
╧εδφα ±Φ±≥σ∞α Java ΓΩδ■≈ασ≥ Γ ±σß πε≥εΓ√Θ φαßε≡ ßΦßδΦε≥σΩ, Ωε≥ε≡√Θ ∞εµφε ≡ατßΦ≥ⁿ φα ±δσΣ≤■∙Φσ ∩αΩσ≥√:
╨στ≤δⁿ≥α≥ -- φεΓ√Θ ∩εΣ⌡εΣ Ω ≡α±∩≡σΣσδσφφ√∞ Γ√≈Φ±δσφΦ ∞
╩αµΣα Φτ ∩σ≡σ≈Φ±δσφφ√⌡ ⌡α≡αΩ≥σ≡Φ±≥ΦΩ ∩ε ε≥Σσδⁿφε±≥Φ ∞εµσ≥ ß√≥ⁿ φαΘΣσφα Γ ≤µσ ±≤∙σ±≥Γ≤■∙Φ⌡ ∩≡επ≡α∞∞φ√⌡ ∩αΩσ≥α⌡. ═εΓ√∞ Γδ σ≥± ±εσΣΦφσφΦσ Φ⌡ Γ ±≥≡εΘφ≤■ φσ∩≡ε≥ΦΓε≡σ≈ΦΓ≤■ ±Φ±≥σ∞≤, Ωε≥ε≡α Σεδµφα ±≥α≥ⁿ Γ±σεß∙Φ∞ ±≥αφΣα≡≥ε∞.
═α ±σπεΣφ °φΦΘ Σσφⁿ φαΦßεδσσ ∩ε∩≤δ ≡φ√∞Φ τ√Ωα∞Φ ∩≡επ≡α∞∞Φ≡εΓαφΦ Γδ ■≥± ╤ Φ ╤++. ╚τ φΦ⌡ ΣΓεΦ⌡ δΦ°ⁿ ╤++ ∩≡σ≥σφΣ≤σ≥ φα εß·σΩ≥φ≤■ ε≡Φσφ≥α÷Φ■. ╒α≡αΩ≥σ≡Φ±≥ΦΩΦ ²≥επε τ√Ωα ±ΩδαΣ√ΓαδΦ±ⁿ Γ ⌡εΣσ ΣδΦφφεΘ Φ±≥ε≡ΦΦ σπε ≡ατΓΦ≥Φ , ∩≡Φ≈σ∞ ΣεΓεδⁿφε ⌡αε≥Φ≈φε, ΩαµΣεσ φεΓεσ ±ΓεΘ±≥Γε φσ ε≥∞σφ δε Γ±σ⌡ ∩≡σΣ√Σ≤∙Φ⌡. ╤≥αφΣα≡≥ τ√Ωα Σε ±Φ⌡ ∩ε≡ φσ τα⌠ΦΩ±Φ≡εΓαφ, ≥.Ω. φεΓ√σ ±ΓεΘ±≥Γα ∩≡εΣεδµα■≥ ∩ε Γδ ≥ⁿ± ∩ε ±σΘ Σσφⁿ. ┬ ≡στ≤δⁿ≥α≥σ ╤++ ±≥αδ ßσ±Ωεφσ≈φε ±δεµφ√∞ Φ Φτß√≥ε≈φ√∞ -- εΣφ≤ Φ ≥≤ µσ ε∩σ≡α÷Φ■ Γετ∞εµφε ≡σαδΦτεΓα≥ⁿ φα τ√Ωσ ∞φεµσ±≥Γε∞ ±∩ε±εßεΓ.
Java ∩≡σΣ±≥αΓδ σ≥ ±εßεΘ φεΓ≤■ ≥ε≈Ω≤ ε≥±≈σ≥α Γ ∩≡επ≡α∞∞φε∞ εßσ±∩σ≈σφΦΦ. ╨ατ≡αßε≥≈ΦΩΦ τ√Ωα Γτ δΦ τα ε±φεΓ≤ ╤++, τα≥σ∞ ∞σ≥εΣΦ≈φε ≤ΣαδΦδΦ Φτ φσπε ≈σ≡≥√, Ωε≥ε≡√σ:
╬±φεΓφ√σ ±ΓεΘ±≥Γα τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ Java
┬±≥≡εσφφ√σ (∩≡Φ∞Φ≥ΦΓφ√σ) ≥Φ∩√ Σαφφ√⌡
┬ τ√Ωσ Java, ≥αΩ µσ ΩαΩ Φ Γ ╤++, ±≤∙σ±≥Γ≤σ≥ φαßε≡ Γ±≥≡εσφφ√⌡ ≥Φ∩εΓ Σαφφ√⌡, Ωε≥ε≡√σ (≥αΩ µσ ΩαΩ Φ Γ ╤++) φσ Γδ ■≥± εß·σΩ≥α∞Φ. ═αßε≡ Φ⌡ ≥αΩµσ ±⌡εΣσφ ± φαßε≡ε∞ ßατεΓ√⌡ ≥Φ∩εΓ ╤++ τα φσΩε≥ε≡√∞Φ Φ±Ωδ■≈σφΦ ∞Φ.
Point myPoints[];≡στσ≡ΓΦ≡≤σ≥ ±±√δΩ≤ φα ∞α±±ΦΓ, α φσ ∞σ±≥ε ∩εΣ ≡σαδⁿφ√Θ εß·σΩ≥. ╤α∞ ∞α±±ΦΓ ∞εµσ≥ ß√≥ⁿ τα≥σ∞ ±ετΣαφ Γ√∩εδφσφΦσ∞
myPoints = new Point[10];α σπε ²δσ∞σφ≥√ τα∩εδφσφ√ ε∩σ≡α÷ΦσΘ ≥Φ∩α:
myPoints[2] = new Point();╨ατ∞σ≡ ∞α±±ΦΓα ∞εµσ≥ ß√≥ⁿ ∩εδ≤≈σφ Γε Γ≡σ∞ Γ√∩εδφσφΦ ∩≡επ≡α∞∞√:
howMany = myPoints.length;╟φα≈σφΦσ ΦφΣσΩ±α ∩≡εΓσ≡ σ≥± ∩≡Φ ΩαµΣε∞ εß≡α∙σφΦΦ, ∩≡Φ ε°ΦßΩσ Γετß≤µΣασ≥± Φ±Ωδ■≈Φ≥σδⁿφα ±Φ≥≤α÷Φ .
String hello = "Hello world!";╤±√δΩα hello ΦφΦ÷ΦΦ≡≤σ≥± εß·σΩ≥ε∞ Ωδα±±α String φα ε±φεΓσ ∩≡σΣ±≥αΓδσφΦ "Hello world!" Γ ΩεΣΦ≡εΓΩσ Unicode.
System.out.println("There are" + num + "characters in the file.");Multi-Level Break
test: for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) if( i > 3) break test;╙∩≡αΓδσφΦσ ∩α∞ ≥ⁿ■, ±ßε≡Ωα ∞≤±ε≡α
╤ΓεΘ±≥Γα, ∩≡Φ±≤≥±≥Γ≤■∙Φσ Γ ╤ Φ ╤++, Φ ≤Σαδσφφ√σ Φτ Java
╩εφ±≥≡≤Ω÷Φ typedef, ∩≡σ∩≡ε÷σ±±ε≡
╩εφ±≥≡≤Ω÷Φ typedef ß√δα ≤φα±δσΣεΓαφα ╤++ Φτ ╤. ╚τ Java εφα Γ√ß≡ε°σφα ±εΓ±σ∞.
═σεß⌡εΣΦ∞ε±≥ⁿ Γ ∞αΩ≡ε∩≡ε÷σ±±ε≡σ ≥αΩµσ Γε ∞φεπε∞ ε≥∩αδα ∩≡Φ φα∩Φ±αφΦΦ ∩≡επ≡α∞∞ φα ╤++. ╧ε≈≥Φ Γ±σ, Σδ ≈σπε Φ±∩εδⁿτεΓαδΦ±ⁿ ∞αΩ≡ε≡α±°Φ≡σφΦ , ∞εµφε ß√δε ±Σσδα≥ⁿ ßεδσσ ²δσπαφ≥φ√∞ Φ φαΣσµφ√∞ εß≡ατε∞, Φ±∩εδⁿτ≤ Ωεφ±≥≡≤Ω÷ΦΦ ±α∞επε τ√Ωα.
╤Φ±≥σ∞α φσ Γφε ∩εε∙≡ δα ±ετΣαφΦσ ΩαµΣ√∞ ∩≡επ≡α∞∞Φ±≥ε∞ ±Γεσπε ±εß±≥Γσφφεπε ∩εΣ∞φεµσ±≥Γα τ√Ωα, φσΦτΓσ±≥φεπε ε±≥αδⁿφε∞≤ ∞Φ≡≤. ╧ε ∞σ≡σ ≡ατ≡α±≥αφΦ ΩεΣεΓ ≤ΓσδΦ≈ΦΓασ≥± ≥ε≥ ±∞√±δεΓεΘ Ωεφ≥σΩ±≥, Γ Ωε≥ε≡ε∞ Ωε∞∩Φδ ≥ε≡ Φφ≥σ≡∩≡σ≥Φ≡≤σ≥ ΩαµΣ≤■ ±≥≡εΩ≤ ∩≡επ≡α∞∞√. ╙µσ Γ ∩≡εσΩ≥α⌡ ±≡σΣφσπε ≡ατ∞σ≡α ±≤∙σ±≥Γσφφε Γετ≡α±≥ασ≥ φαπ≡≤τΩα φα Ωε∞∩Φδ ≥ε≡, φσ πεΓε≡ ≤µσ ε φαπ≡≤τΩσ φα ∩α∞ ≥ⁿ ∩≡επ≡α∞∞Φ±≥α.
┼ΣΦφ±≥Γσφφα ε±≥αΓ°α ± Γαµφα ⌠≤φΩ÷Φ ∩≡σ∩≡ε÷σ±±ε≡α -- ∩ετΓεδΦ≥ⁿ ΓΩδ■≈σφΦσ Γ ∩≡επ≡α∞∞≤ ⌠αΘδ√-ταπεδεΓΩΦ ± ε∩Φ±αφΦ ∞Φ Ωδα±±ε∞. ▌≥α ε∩σ≡α÷Φ ∞εµσ≥ ß√≥ⁿ Γ√∩εδφσφα ßεδσσ ∩≡ε±≥ε Φ ²⌠⌠σΩ≥ΦΓφε, σ±δΦ ∩ετΓεδΦ≥ⁿ Ωε∞∩Φδ ≥ε≡≤ ≈Φ≥α≥ⁿ ∩εΣπε≥εΓδσφφ√σ ßΦφα≡φ√σ ⌠αΘδ√ ± ε∩Φ±αφΦσ∞ Ωδα±±εΓ. ╧ε±δσΣφΦΘ ∩≤≥ⁿ ß√δ Γ√ß≡αφ ∩≡Φ ±ετΣαφΦΦ τ√Ωα Java.
┬±σ ²≥Φ ±εεß≡αµσφΦ ∩ετΓεδΦδΦ ∩εδφε±≥ⁿ■ Φ±Ωδ■≈Φ≥ⁿ φσεß⌡εΣΦ∞ε±≥ⁿ Φ±∩εδⁿτεΓαφΦ ≥σΩ±≥εΓεπε ∩≡σ∩≡ε÷σ±±ε≡α Γ τ√Ωσ Java.
Struct Φ union
╤≥≡≤Ω≥≤≡√ φσ Φ∞σ■≥ ±∞√±δα Γ Java, Φ⌡ ≡εδⁿ ∩εδφε±≥ⁿ■ Γ√∩εδφ ■≥ Ωδα±±√. ╚±∩εδⁿτεΓαφΦσ Ωεφ±≥≡≤Ω÷ΦΘ ≥Φ∩α union Σδ ≥Φ∩ΦτεΓαφφ√⌡ εß·σΩ≥εΓ ≥αΩµσ ßεδⁿ°σ φσ φ≤µφε -- τ√Ω ∩ετΓεδ σ≥ ε∩≡σΣσδΦ≥ⁿ ≥Φ∩ εß·σΩ≥α ∩≡Φ Φ±∩εδφσφΦΦ ∩≡επ≡α∞∞√.
╘≤φΩ÷ΦΦ
┬ ²≥ε∞ ±∞√±δσ Java ≈Φ±≥ε εß·σΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφα ±Φ±≥σ∞α. ╘≤φΩ÷ΦΦ Φ ∩≡ε÷σΣ≤≡√, φσ ∩≡ΦΓ ταφφ√σ Ω Ωεφ≥σΩ±≥≤ ΩαΩεπε-δΦßε εß·σΩ≥α, ßεδⁿ°σ φσ ∩≡Φ±≤≥±≥Γ≤■≥ Γ ±Φ±≥σ∞σ. ┬ ±Φ≥≤α÷ΦΦ, ΩεπΣα ⌠≤φΩ÷Φ δεπΦ≈σ±ΩΦ φσ ∩≡ΦΓ ταφα Ω ε∩≡σΣσδσφφε∞≤ ²Ωτσ∞∩δ ≡≤ Ωδα±±α, εφα ∞εµσ≥ ß√≥ⁿ ±ετΣαφα ΩαΩ ∞σ≥εΣ ±α∞επε Ωδα±±α (≥.σ. Φ∞σ≥ⁿ ≥Φ∩ static).
╠φεµσ±≥Γσφφεσ φα±δσΣεΓαφΦσ
╧ε±δσΣεΓα≥σδⁿφα ≡σαδΦτα÷Φ Ωεφ÷σ∩÷ΦΦ ∞φεµσ±≥Γσφφεπε φα±δσΣεΓαφΦ Γ ╤++ ∩≡ΦΓσδα Ω ±≤∙σ±≥Γσφφ√∞ ±δεµφε±≥ ∞ ΩαΩ Γ ±ετΣαφΦΦ Ωε∞∩Φδ ≥ε≡εΓ, ≥αΩ Φ Γ Φ±∩εδⁿτεΓαφΦΦ σπε (∞φεµσ±≥Γσφφεπε φα±δσΣεΓαφΦ ) Γ ∩≡επ≡α∞∞α⌡. ┬ Ωα≈σ±≥Γσ αδⁿ≥σ≡φα≥ΦΓ√ Java Φ±∩εδⁿτ≤σ≥ ∩εφ ≥Φσ Φφ≥σ≡⌠σΘ±α ε∩≡σΣσδ ■∙σπε φαßε≡ ∞σ≥εΣεΓ, Ωε≥ε≡√σ Σεδµφ√ ß√≥ⁿ ε∩≡σΣσδσφ√ Γ Ωδα±±σ, ≡σαδΦτ≤■∙σ∞ ²≥ε≥ Φφ≥σ≡⌠σΘ±. ╚φ≥σ≡⌠σΘ± ∞εµσ≥ ≥αΩµσ ±εΣσ≡µα≥ⁿ ε∩≡σΣσδσφΦσ φσΩε≥ε≡√⌡ Ωεφ±≥αφ≥.
╥ε, ≈σπε Φφ≥σ≡⌠σΘ± ±εΣσ≡µα≥ⁿ φσ ∞εµσ≥ -- ²≥ε ≡σαδΦτα÷ΦΦ ∞σ≥εΣεΓ ΦδΦ Φτ∞σφ σ∞√σ ∩εδ Σαφφ√⌡. ╩δα±±√, Ωε≥ε≡√σ εß· Γδσφ√, ΩαΩ ≡σαδΦτ≤■∙Φσ ≥ε≥ ΦδΦ ΦφεΘ Φφ≥σ≡⌠σΘ±, εß ταφ√ ≡σαδΦτεΓα≥ⁿ Γ±σ ∞σ≥εΣ√, εß· Γδσφφ√σ Γ Φφ≥σ≡⌠σΘ±σ.
Goto
±∞. Γ√°σ ε∩Φ±αφΦσ ε∩σ≡α≥ε≡εΓ continue Φ break ± ∞σ≥ΩεΘ.
╧σ≡σπ≡≤τΩα ε∩σ≡α≥ε≡εΓ
╬∩√≥ Φ±∩εδⁿτεΓαφΦ ∩σ≡σπ≡≤µσφφ√⌡ ε∩σ≡α≥ε≡εΓ Γ ╤++ ∩εΩατ√Γασ≥, ≈≥ε εφΦ Φ∞σ■≥ ±∞√±δ Γ ΣεΓεδⁿφε επ≡αφΦ≈σφφε∞ φαßε≡σ ±Φ≥≤α÷ΦΘ. ╤ Σ≡≤πεΘ ±≥ε≡εφ√, τδε≤∩ε≥≡σßδσφΦσ ²≥Φ∞ ±ΓεΘ±≥Γε∞ ∞εµσ≥ ±Σσδα≥ⁿ ∩≡επ≡α∞∞≤ αß±εδ■≥φε φσ∩εφ ≥φεΘ. ┼ΣΦφ±≥Γσφφεσ "Γ±≥≡εσφφεσ" Γ τ√Ω Java Φ±Ωδ■≈σφΦσ -- Γετ∞εµφε±≥ⁿ Φ±∩εδⁿτεΓαφΦ ε∩σ≡α≥ε≡α "+" Σδ ±ΩδσΦΓαφΦ ±≥≡εΩ (±∞. Γ√°σ).
└Γ≥ε∞α≥Φ≈σ±Ωεσ ∩≡σεß≡ατεΓαφΦσ ≥Φ∩εΓ
┬ τ√Ωσ Java τα∩≡σ∙σφε αΓ≥ε∞α≥Φ≈σ±Ωεσ ∩≡σεß≡ατεΓαφΦσ ≥Φ∩εΓ, °Φ≡εΩε Φ±∩εδⁿτ≤σ∞εσ (Φ ≡σΩε∞σφΣ≤σ∞εσ) Γ ╤++. ╫≥εß√ ∩≡σεß≡ατεΓα≥ⁿ ²δσ∞σφ≥ εΣφεπε ≥Φ∩α Γ Σ≡≤πεΘ, φσεß⌡εΣΦ∞ε ≤Ωατα≥ⁿ ²≥ε Γφε, φα∩≡Φ∞σ≡
int myInt; double myFloat = 3.14159; myInt = myFloat; // Σε∩≤±≥Φ∞ε Γ ╤++, φσΣε∩≤±≥Φ∞ε Γ Java myInt = (int)myFloat; // Σε∩≤±≥Φ∞ε Γ Java╚±Ωδ■≈σφΦσ ±ε±≥αΓδ σ≥ ∩≡σεß≡ατεΓαφΦσ ∞σµΣ≤ Γ±≥≡εσφφ√∞Φ ≈Φ±δσφφ√∞Φ ≥Φ∩α∞Φ ßστ ∩ε≥σ≡Φ Φφ⌠ε≡∞α÷ΦΦ.
╚≥επΦ
╚≥αΩ, ∞√ ∩εΩαταδΦ ΣΓα Φτ ε±φεΓφ√⌡ ±ΓεΘ±≥Γα τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ Java
╤Φ±≥σ∞α Java ±ετΣαΓαδα±ⁿ εß·σΩ≥φε ε≡Φσφ≥Φ≡εΓαφφεΘ ± ±α∞επε φα≈αδα. ╬ß·σΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφα ∩α≡αΣΦπ∞α φαΦßεδσσ ≤Σεßφα ∩≡Φ ±ετΣαφΦΦ ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ ≥Φ∩α ΩδΦσφ≥-±σ≡Γσ≡, α ≥αΩµσ Σδ ε≡παφΦτα÷ΦΦ ≡α±∩≡σΣσδσφφ√⌡ Γ√≈Φ±δσφΦΘ.
╬Σφα Φτ ≈σ≡≥, ∩≡Φ±≤∙Φ⌡ εß·σΩ≥α∞, ταΩδ■≈ασ≥± Γ ≥ε∞, ≈≥ε εß·σΩ≥√ εß√≈φε ∩σ≡σµΦΓα■≥ ∩≡ε÷σΣ≤≡≤, Φ⌡ ±ετΣα■∙≤■. ╬φΦ τα≥σ∞ ∞επ≤≥ ∩σ≡σ∞σ∙α≥ⁿ± ∩ε ±σ≥Φ, ⌡≡αφΦ≥ⁿ± Γ ßατα⌡ Σαφφ√⌡ Φ ≥.Σ.
╚ΣσΘφ√∞Φ φα±δσΣφΦΩα∞Φ Java Γδ ■≥± ≥αΩΦσ τ√ΩΦ, ΩαΩ C++, Eiffel, Smalltalk Φ Objective C. ╟α Φ±Ωδ■≈σφΦσ∞ ∩≡Φ∞Φ≥ΦΓφ√⌡ ≥Φ∩εΓ Σαφφ√⌡, ∩≡αΩ≥Φ≈σ±ΩΦ Γ±σ Γ τ√Ωσ Γδ σ≥± εß·σΩ≥ε∞.
╬±φεΓφ√σ ≥≡σßεΓαφΦ Ω εß·σΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφεΘ ±Φ±≥σ∞σ
╬ß·σΩ≥φα ∞εΣσδⁿ Java
╩δα±±√
╩δα±± σ±≥ⁿ τ√ΩεΓα Ωεφ±≥≡≤Ω÷Φ , ε∩≡σΣσδ ■∙α ∩εδ Σαφφ√⌡ εß·σΩ≥εΓ Σαφφεπε Ωδα±±α (instance variables) Φ Φ⌡ ∩εΓσΣσφΦσ (methods). ╧≡αΩ≥Φ≈σ±ΩΦ Ωδα±± Γ Java ±α∞ ∩ε ±σßσ φσ Γδ σ≥± εß·σΩ≥ε∞. ▌≥ε δΦ°ⁿ °αßδεφ, Ωε≥ε≡√Θ ε∩≡σΣσδ σ≥, Φτ ΩαΩΦ⌡ ≈α±≥σΘ ß≤Σσ≥ ±ε±≥ε ≥ⁿ εß·σΩ≥, ±ετΣαφφ√Θ ± ∩ε∞ε∙ⁿ■ ²≥επε Ωδα±±α, Φ ΩαΩ εφ ß≤Σσ≥ ±σß Γσ±≥Φ.
╧≡ε±≥σΘ°ΦΘ ∩≡Φ∞σ≡ ε∩Φ±αφΦ Ωδα±±α
class Point extends Object { public double x; public double y; }╤ετΣαφΦσ εß·σΩ≥α ε∩≡σΣσδσφφεπε Ωδα±±α
Point myPoint; // εß· ΓδσφΦσ ∩σ≡σ∞σφφεΘ ≥Φ∩α Point myPoint = new Point(); // ΦφΦ÷ΦαδΦτα÷Φα εß≡α≥Φ≥ⁿ± Ω ∩εδ ∞ Σαφφ√⌡ ±δσΣ≤■∙Φ∞ εß≡ατε∞
myPoint.x = 10.0; myPoint.y = 25.7;╩εφ±≥≡≤Ω≥ε≡√
class Point extends Object { Point() { x = 0.0; y = 0.0; } Point(double x, double y) { this.x = x; this.y = y; } public double x; public double y; }α Φ±∩εδⁿτεΓαφ√ εφΦ ∞επ≤≥ ß√≥ⁿ ±δσΣ≤■∙Φ∞ εß≡ατε∞
Point a; Point b; a = new Point(); b = new Point(1.0, 2.0);εß≡α≥Φ≥σ ΓφΦ∞αφΦσ φα Φ∞ this Γ ε∩≡σΣσδσφΦΦ Ωεφ±≥≡≤Ω≥ε≡α ± α≡π≤∞σφ≥α∞Φ. ╬φε Φ±∩εδⁿτ≤σ≥± Σδ εßετφα≈σφΦ ±α∞επε εß·σΩ≥α, Γ ∞σ≥εΣσ Ωε≥ε≡επε ∞√ φα⌡εΣΦ∞± , Γ ≥σ⌡ ±δ≤≈α ⌡, ΩεπΣα ±±√δΩα φα ²≥ε≥ εß·σΩ≥ φσ ∩εΣ≡ατ≤∞σΓασ≥± φσ Γφε.
Pclass Point extends Object { private double x; private double y; public void setX(double x) { this.x = x; } public void set═(double y) { this.y = y; } ... }╠√ ≥σ∩σ≡ⁿ ±ΣσδαδΦ ∩εδ x Φ y φσΣε±≥≤∩φ√∞Φ ΦτΓφσ Ωδα±±α, φε Σδ Φτ∞σφσφΦ Φ⌡ ±ε±≥ε φΦ ∩≡σΣ≤±∞ε≥≡σδΦ ±∩σ÷Φαδⁿφ√σ ∞σ≥εΣ√ setX Φ setY.
protected void finalize() { try { file.close(); } catch (Exception e) { } }╧≡εΦτΓεΣφ√σ Ωδα±±√
class ThreePoint extends Point { protected double z; ThreePoint() { super(); z = 0.0; } ThreePoint(double x, double y, double z) { super(x, y); this.z = z; } }╟Σσ±ⁿ ∞√ ΣεßαΓΦδΦ φεΓ≤■ Ωεε≡ΣΦφα≥≤ z, α ∩εδ x Φ y (Φ ∞σ≥εΣ√ Σε±≥≤∩α Ω φΦ∞) ≤φα±δσΣεΓαδΦ ε≥ Ωδα±±α Point.
class Rectangle extends Object { static final int version = 2 ; static final int revision = 0 ; }╩δ■≈σΓεσ ±δεΓε final ετφα≈ασ≥, ≈≥ε τφα≈σφΦσ ∩εδ εΩεφ≈α≥σδⁿφεσ Φ Φτ∞σφσφΦ■ φσ ∩εΣδσµΦ≥ (²≥ε Ωεφ±≥αφ≥α).
abstract class Graphical extends Object { protected Point lowerLeft; protected Point upperRight; ... public void setPosition(Point ll, Point ur) { lowerLeft = ll; upperRight = ur; } abstract void drawMyself(); } class Rectangle extends Graphical { void drawMyself() { .... } }╟Σσ±ⁿ ∞√ ε∩Φ±αδΦ Ωδα±± Graphical. ┬ φσ∞ εß· Γδσφε ±ΓεΘ±≥Γε Γ±σ⌡ π≡α⌠Φ≈σ±ΩΦ⌡ ²δσ∞σφ≥εΓ Φ∞σ≥ⁿ ΩαΩεσ-≥ε ∩εδεµσφΦσ φα ∩δε±Ωε±≥Φ. ╩αµΣ√Θ ²δσ∞σφ≥ εß ταφ ≥αΩµσ Φ∞σ≥ⁿ ∞σ≥εΣ Σδ ≡Φ±εΓαφΦ ±α∞επε ±σß , εΣφαΩε φΦΩαΩεπε ∞σ≥εΣα ≡Φ±εΓαφΦ ∩ε-≤∞εδ≈αφΦ■ ß√≥ⁿ φσ ∞εµσ≥. ╩δα±± Rectangle, ∩≡σΣ±≥αΓδ ■∙ΦΘ ±εßεΘ ΩεφΩ≡σ≥φ≤■ ≡σαδΦτα÷Φ■ Σδ ≥Φ∩α Graphical, ≡σαδΦτ≤σ≥ ≥αΩµσ ²≥ε≥ ∞σ≥εΣα Σδ εß·σΩ≥α ∩≡ ∞ε≤πεδⁿφεΘ ⌠ε≡∞√.
╚≥επΦ
╬±Γσ∙σφ√ ±δσΣ≤■∙Φσ ±≥ε≡εφ√ Java ΩαΩ εß·σΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφεπε τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ .
═σΘ≥≡αδⁿφε±≥ⁿ Ω α≡⌡Φ≥σΩ≥≤≡σ
─ε±≥Φπασ≥± ∩≡σµΣσ Γ±σπε ±≥αφΣα≡≥Φτα÷ΦσΘ "ßΦφα≡φεπε ⌠ε≡∞α≥α ΩεΣεΓ". ╧≡ε∞σµ≤≥ε≈φ√Θ ΩεΣ φσ ταΓΦ±Φ≥ ε≥ ΩεφΩ≡σ≥φεΘ α∩∩α≡α≥φεΘ ∩δα≥⌠ε≡∞√, ε∩σ≡α÷ΦεφφεΘ ±Φ±≥σ∞√ Φ ≥Φ∩α εΩεφφεπε Φφ≥σ≡⌠σΘ±α. ─δ ≥επε, ≈≥εß√ ∩≡επ≡α∞∞√, φα∩Φ±αφφ√σ φα Java, ∞επδΦ ≡αßε≥α≥ⁿ φα ΣαφφεΘ α∩∩α≡α≥φε-∩≡επ≡α∞∞φεΘ ∩δα≥⌠ε≡∞σ, Σε±≥α≥ε≈φε, ≈≥εß√ Σδ φσσ ß√δα ±ετΣαφα δΦ°ⁿ ±εε≥Γσ≥±≥Γ≤■∙α ΓΦ≡≥≤αδⁿφα ∞α°Φφα.
┴αΘ≥-ΩεΣ√
╩ε∞∩Φδ ≥ε≡ Java ∩≡εΦτΓεΣΦ≥ φσ "∞α°Φφφ√σ ΩεΣ√" ∩εΣεßφε ≥ε∞≤, ΩαΩ ²≥ε Σσδασ≥, φα∩≡Φ∞σ≡, Ωε∞∩Φδ ≥ε≡ τ√Ωα ╤. ┬∞σ±≥ε ²≥επε πσφσ≡Φ≡≤■≥± ≥αΩ φατ√Γασ∞√σ ßαΘ≥-ΩεΣ√: Γ√±εΩε≤≡εΓφσΓ√σ ∞α°ΦφφεφσταΓΦ±Φ∞√σ ΩεΣ√ Σδ αß±≥≡αΩ≥φεΘ ∞α°Φφ√, Ωε≥ε≡α Σεδµφα ß√≥ⁿ ≡σαδΦτεΓαφα Γ ΓΦΣσ Φφ≥σ≡∩≡σ≥α≥ε≡α Java Φ run-time ±Φ±≥σ∞√.
╤α∞α ∩ε ±σßσ ΦΣσ ßαΘ≥-ΩεΣεΓ φσ φεΓα, εφΦ °Φ≡εΩε Φ±∩εδⁿτ≤■≥± Γ ≡ατδΦ≈φ√⌡ ±Φ±≥σ∞α⌡ φα≈Φφα ± ±σ≡σΣΦφ√ ±σ∞ΦΣσ± ≥√⌡ πεΣεΓ. ╬±εßσφφε±≥Φ Java ßαΘ≥-∞α°Φφ√ ±δσΣ≤■∙Φσ:
╧σ≡σφε±Φ∞ε±≥ⁿ φα Σ≡≤πΦσ α≡⌡Φ≥σΩ≥≤≡√
╩≡ε∞σ φσταΓΦ±Φ∞ε±≥Φ ΩεΣεΓ ε≥ ΩεφΩ≡σ≥φεΘ α≡⌡Φ≥σΩ≥≤≡√ Java µσ±≥Ωε ±∩σ÷Φ⌠Φ÷Φ≡≤σ≥ ⌠ε≡∞α≥ ßατεΓ√⌡ ≥Φ∩εΓ Σαφφ√⌡. ┴στ ²≥επε εΣφα Φ ≥α µσ ∩≡επ≡α∞∞α, ±Ωε∞∩ΦδΦ≡εΓαφφα Σδ ≡ατφ√⌡ α∩∩α≡α≥φ√⌡ ∩δα≥⌠ε≡∞, Γσδα ß√ ±σß ∩ε-≡ατφε∞≤. ═α∩≡Φ∞σ≡, ±≥αφΣα≡≥ ╤/╤++ φσ ∩≡σΣ≤±∞α≥≡ΦΓασ≥ ΩεφΩ≡σ≥φεπε ∩≡σΣ±≥αΓδσφΦ Σδ ÷σδεπε ≥Φ∩α int. ╧≡σΣ∩εδαπασ≥± , ≈≥ε ²≥ε∞≤ ≥Φ∩≤ ±εε≥Γσ≥±≥Γ≤σ≥ ε±φεΓφεΘ ⌠ε≡∞α≥ ∞α°Φφφεπε ±δεΓα Σδ ΣαφφεΘ α≡⌡Φ≥σΩ≥≤≡√. ┬ ≡στ≤δⁿ≥α≥σ ∩≡επ≡α∞∞α, φα∩Φ±αφφα Σδ 32-≡ατ≡ Σφεπε ∩≡ε÷σ±±ε≡α, ≈α∙σ Γ±σπε ∩σ≡σφε±Φ≥± φα 16-≡ατ≡ Σφ≤■ α≡⌡Φ≥σΩ≥≤≡≤ ± ε≈σφⁿ ßεδⁿ°Φ∞Φ ≤±ΦδΦ ∞Φ.
╥αΩΦ∞ εß≡ατε∞, ≡σ°σφΦσ τα⌠ΦΩ±Φ≡εΓα≥ⁿ ⌠ε≡∞α≥√ ßατεΓ√⌡ ≥Φ∩εΓ Σαφφ√⌡ Γ Java Γ∩εδφσ σ±≥σ±≥Γσφφε. ╩αµΣα Java-∞α°Φφα εß ταφα ≡σαδΦτεΓα≥ⁿ Φ⌡ ±δσΣ≤■∙Φ∞ εß≡ατε∞:
byte 8-bit two's complement short 16-bit two's complement int 32-bit two's complement long 64-bit two's complement float 32-bit IEEE 754 floating point double 64-bit IEEE 754 floating point char 16-bit Unicode character┬√ßε≡ Φ∞σφφε ≥αΩεπε φαßε≡α ßατεΓ√⌡ ≥Φ∩εΓ Φ Φ⌡ ⌠ε≡∞α≥α εß≤±δεΓδσφ ≥σ∞, ≈≥ε ∩≡αΩ≥Φ≈σ±ΩΦ δ■ßεΘ ±εΓ≡σ∞σφφ√Θ ÷σφ≥≡αδⁿφ√Θ ∩≡ε÷σ±±ε≡ ∩εΣΣσ≡µΦΓασ≥ ²≥Φ ⌠ε≡∞α≥√.
╚φ≥σδδσΩ≥≤αδⁿφε±≥ⁿ
╤Φ±≥σ∞α Java ∩≡σΣφατφα≈σφα Σδ ±ετΣαφΦ ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ , Ωε≥ε≡εσ Σεδµφε ß√≥ⁿ Φφ≥σδδσΩ≥≤αδⁿφ√∞, ∩≡σΣσδⁿφε φαΣσµφ√∞ Φ ßστε∩α±φ√∞ ∩ε ∞φεµσ±≥Γ≤ ∩α≡α∞σ≥≡εΓ. ╬±εßεσ ΓφΦ∞αφΦσ ≤Σσδ σ≥± ΩαΩ ≡αφφσΘ ΣΦαπφε±≥ΦΩσ Γετ∞εµφ√⌡ ∩≡εßδσ∞, ≥αΩ Φ ∩ετΣφσΘ, Γε Γ≡σ∞ Γ√∩εδφσφΦ ΩεΣεΓ.
╞σ±≥Ωα ∩≡εΓσ≡Ωα φα ²≥α∩σ Ωε∞∩Φδ ÷ΦΦ Φ Γε Γ≡σ∞ Γ√∩εδφσφΦ
╩ε∞∩Φδ ÷Φ ± τ√Ωα Java ∩≡σΣ≤±∞α≥≡ΦΓασ≥ µσ±≥Ω≤■ ∩≡εΓσ≡Ω≤ Φ±⌡εΣφ√⌡ ≥σΩ±≥εΓ, ∞φεµσ±≥Γε ε°ΦßεΩ ∞εµσ≥ ß√≥ⁿ Γ√ Γδσφε ≤µσ φα ²≥ε∞ ²≥α∩σ.
╬ΣφΦ∞ Φτ ∩≡σΦ∞≤∙σ±≥Γ τ√Ωα ╤++ ΩαΩ ±≥≡επε ≥Φ∩ΦτεΓαφφεπε τ√Ωα Γδ σ≥± Γετ∞εµφε±≥ⁿ ≡αφφσπε Γ√ ΓδσφΦ φσΩε≥ε≡√⌡ Ωα≥σπε≡ΦΘ ε°ΦßεΩ. ╬ΣφαΩε Γε ∞φεπε∞ ²≥ε≥ τ√Ω φα±δσΣ≤σ≥ ±ΓεΘ±≥Γα ╤, ∩ετΓεδ φα≡≤°α≥ⁿ ≥≡σßεΓαφΦ ±≥≡επεπε εß· ΓδσφΦ ⌠≤φΩ÷ΦΘ Φ ∞σ≥εΣεΓ. ▀τ√Ω Java ≥≡σß≤σ≥ Γφεπε εß· ΓδσφΦ ∩≡ε≥ε≥Φ∩εΓ Φ φσ ∩εΣΣσ≡µΦΓασ≥ ⌡α≡αΩ≥σ≡φ√⌡ Σδ ╤ φσ Γφ√⌡ ∩≡σεß≡ατεΓαφΦΘ.
╟φα≈Φ≥σδⁿφεσ ≈Φ±δε ∩≡εΓσ≡εΩ, ∩≡εΦτΓεΣΦ∞√⌡ Ωε∞∩Φδ ≥ε≡ε∞, ∩εΓ≥ε≡ ■≥± ΓΦ≡≥≤αδⁿφεΘ ∞α°ΦφεΘ φσ∩ε±≡σΣ±≥Γσφφε ∩σ≡σΣ Γ√∩εδφσφΦσ∞ ∩≡ΦδεµσφΦ . ╦ΦφΩσ≡ ∩εδ≤≈ασ≥ Γ±■ Φφ⌠ε≡∞α÷Φ■ ε ∩≡ε≥ε≥Φ∩α⌡ ∞σ≥εΣεΓ Φ φα ε±φεΓσ σσ ∩≡εΦτΓεΣΦ≥ ≥αΩ≤■ µσ ∩≡εΓσ≡Ω≤, ΩαΩ Φ Ωε∞∩Φδ ≥ε≡, ∩ετΓεδ Φτßσµα≥ⁿ ≡α±⌡εµΣσφΦΘ Γ Γσ≡±Φ ⌡ ∞σµΣ≤ ε≥Σσδⁿφ√∞Φ ∞εΣ≤δ ∞Φ.
═αΦßεδσσ ±≤∙σ±≥Γσφφεσ ε≥δΦ≈Φσ τ√Ωα Java ε≥ ╤ ΦδΦ ╤++ ταΩδ■≈ασ≥± Γ ≥ε∞, ≈≥ε α≡⌡Φ≥σΩ≥≤≡α Java φσ ∩ετΓεδ σ≥ ±δ≤≈αΘφε ΦδΦ φα∞σ≡σφφε ∩εΓ≡σΣΦ≥ⁿ ∩α∞ ≥ⁿ ∩≡επ≡α∞∞√. ┬∞σ±≥ε α≡Φ⌠∞σ≥ΦΩΦ ≤Ωατα≥σδσΘ Java Φ±∩εδⁿτ≤σ≥ ∩εδφε÷σφφ√σ εß·σΩ≥√ Σδ ∞α±±ΦΓεΓ Φ ±≥≡εΩ, ≈≥ε ∩ετΓεδ σ≥ Ωεφ≥≡εδΦ≡εΓα≥ⁿ ΦφΣσΩ±√ Σε±≥≤∩α Ω φΦ∞ Γε Γ≡σ∞ Γ√∩εδφσφΦ . ╩≡ε∞σ ≥επε, φσΓετ∞εµφ√ ∩≡σΓ≡α∙σφΦ ∞σµΣ≤ ÷σδ√∞Φ ≈Φ±δα∞Φ Φ ≤Ωατα≥σδ ∞Φ.
┼±≥σ±≥Γσφφε, ≈≥ε Γ±σ ²≥ε φσ ∞εµσ≥ ∩εδφε±≥ⁿ■ πα≡αφ≥Φ≡εΓα≥ⁿ ∩≡επ≡α∞∞Φ±≥α ε≥ δ■ß√⌡ ε°ΦßεΩ, εΣφαΩε, Java ≤±≥≡αφ σ≥ ÷σδ√Θ Ωδα±± Φ⌡, ±≤∙σ±≥Γσφφε εßδσπ≈α ταΣα≈≤ ≡ατ≡αßε≥≈ΦΩα.
─δ ≡ατ≡αßε≥≈ΦΩα, Φ±∩εδⁿτ≤■∙σπε Γ ±ΓεσΘ ≡αßε≥σ εß√≈φ√σ Ωε∞∩ΦδΦ≡≤σ∞√σ τ√ΩΦ, ÷ΦΩδ ≡ατ≡αßε≥ΩΦ εß√≈φε Γ√πδ ΣΦ≥ ±δσΣ≤■∙Φ∞ εß≡ατε∞: ≡σΣαΩ≥Φ≡εΓα≥ⁿ ≥σΩ±≥ -- ±Ωε∞∩ΦδΦ≡εΓα≥ⁿ σπε -- ±εß≡α≥ⁿ ∩≡επ≡α∞∞≤ δΦφΩσ≡ε∞ -- ταπ≡≤τΦ≥ⁿ -- ΣεΓσ±≥Φ σσ Σε "∩αΣσφΦ " -- ≡α±±∞ε≥≡σ≥ⁿ εßδε∞ΩΦ -- φα≈α≥ⁿ Γ±σ ± φα≈αδα.
╩≡ε∞σ ≥επε, ∩≡Φ⌡εΣΦ≥± ∩ε±≥ε φφε ±δσΣΦ≥ⁿ τα ≥σ∞, ΩαΩΦσ Φτ Φ±⌡εΣφ√⌡ ≥σΩ±≥εΓ ∩εΣδσµα≥ ∩σ≡σΩε∞∩Φδ ÷ΦΦ. ─δ ²≥επε εß√≈φε Φ±∩εδⁿτ≤■≥± Σε∩εδφΦ≥σδⁿφ√σ Φφ±≥≡≤∞σφ≥√ (φα∩≡Φ∞σ≡, ∩ε∩≤δ ≡φα ≤≥ΦδΦ≥α make), ≈α±≥ε φσ ±Γ ταφφ√σ ± ΩεφΩ≡σ≥φ√∞ τ√Ωε∞ ∩≡επ≡α∞∞Φ≡εΓαφΦ Φ Φ±∩εδⁿτ≤■∙Φσ Ω≡αΘφσ Ωεφ±σ≡Γα≥ΦΓφ√Θ ∩εΣ⌡εΣ -- ∩σ≡σΩε∞∩ΦδΦ≡εΓαφε Σεδµφε ß√≥ⁿ Γ±σ, ≈≥ε ≥σε≡σ≥Φ≈σ±ΩΦ ∞επδε ß√≥ⁿ τα≥≡εφ≤≥ε Φτ∞σφσφΦσ∞. ╧ε ∞σ≡σ ≥επε, ΩαΩ Φ±⌡εΣφ√σ ≥σΩ±≥√ ∩≡ΦδεµσφΦ ≡ατ≡α±≥α■≥± Σε ±ε≥σφ ≥√± ≈ ±≥≡εΩ, ΓταΦ∞εταΓΦ±Φ∞ε±≥Φ ±Γ τ√Γα■≥ ≈α±≥Φ ∩≡εσΩ≥α Ω≡σ∩≈σ Φ Ω≡σ∩≈σ, ±Ωε≡ε±≥ⁿ ≡ατ≡αßε≥ΩΦ ∩≡ΦßδΦµασ≥± Ω φ≤δ■.
╤Φ±≥σ∞α Java Γ ±Φδ≤ ±ΓεσΘ Φφ≥σ≡∩≡σ≥Φ≡≤σ∞εΘ Φ ΣΦφα∞Φ≈σ±ΩεΘ ∩≡Φ≡εΣ√ τφα≈Φ≥σδⁿφε ßεδσσ ∩εΣ⌡εΣΦ≥ Σδ ÷σδσΘ ß√±≥≡εΘ ≡ατ≡αßε≥ΩΦ φαΣσµφ√⌡ ∩≡επ≡α∞∞.
╩αΩ ≤µσ ß√δε ε≥∞σ≈σφε Γ√°σ, φα Γ√⌡εΣσ Ωε∞∩Φδ ≥ε≡α Java ∞√ ∩εδ≤≈ασ∞ ßαΘ≥-ΩεΣ√ Σδ ┬Φ≡≥≤αδⁿφεΘ ╠α°Φφ√ Java. ╧εδφα ±∩σ÷Φ⌠ΦΩα÷Φ ΓΦ≡≥≤αδⁿφεΘ ∞α°Φφ√ ε≥Ω≡√≥α Φ εß∙σΣε±≥≤∩φα. ╬φα ∞εµσ≥ ß√≥ⁿ ≡σαδΦτεΓαφα ∩≡αΩ≥Φ≈σ±ΩΦ φα δ■ßεΘ Φτ ±εΓ≡σ∞σφφ√⌡ ∩≡επ≡α∞∞φε-α∩∩α≡α≥φ√⌡ ∩δα≥⌠ε≡∞. ╧ε±δσ ²≥επε ∩≡επ≡α∞∞√ φα τ√Ωσ Java ∞επ≤≥ ß√≥ⁿ ±εß≡αφ√ Φτ δ■ß√⌡ ∞σ±≥ Γ ±σ≥Φ Φ ≡αßε≥α≥ⁿ φα ²≥εΘ ∩δα≥⌠ε≡∞σ ≥αΩ µσ, ΩαΩ Φ φα δ■ßεΘ Σ≡≤πεΘ.
╧≡ε÷σ±± ±ßε≡ΩΦ ∩≡επ≡α∞∞√ (linking) ±≤∙σ±≥Γσφφε ≤±Ωε≡σφ ∩ε ±≡αΓφσφΦ■ ± εß√≈φ√∞Φ Ωε∞∩ΦδΦ≡≤σ∞√∞Φ ±Φ±≥σ∞α∞Φ. ╬φ ∩≡σΣ±≥αΓδ σ≥ ±εßεΘ ∩εΣπ≡≤τΩ≤ φσεß⌡εΣΦ∞√⌡ Ωδα±±εΓ Φ ∩≡εΦτΓεΣΦ≥± ΦφΩ≡σ∞σφ≥αδⁿφε, ≥.σ. φσΣε±≥α■∙Φσ ≈α±≥Φ ∩εΣπ≡≤µα■≥± ∩ε ∞σ≡σ φαΣεßφε±≥Φ, ≈≥ε ≥αΩµσ ∩≡ΦΓεΣΦ≥ Ω ±εΩ≡α∙σφΦ■ Γ≡σ∞σφΦ ÷ΦΩδα ≡ατ≡αßε≥ΩΦ.
─Φφα∞Φ≈σ±Ωα ταπ≡≤τΩα Φ ±Γ τ√ΓαφΦσ
╥ε, ≈≥ε Java Γδ σ≥± Φφ≥σ≡∩≡σ≥α≥ε≡ε∞, ∩ετΓεδ σ≥ ≡α±°Φ≡ ≥ⁿ ±Φ±≥σ∞≤ ΣΦφα∞Φ≈σ±ΩΦ. ╬≥Σσδⁿφ√σ Ωδα±±√ ταπ≡≤µα■≥± δΦ°ⁿ ∩ε ∞σ≡σ φσεß⌡εΣΦ∞ε±≥Φ Φ ∞επ≤≥ ß√≥ⁿ ±εß≡αφ√ Φτ ≡ατδΦ≈φ√⌡ ∞σ±≥ Γ ±σ≥Φ. ╧σ≡σΣ τα∩≤±Ωε∞ φα Γ√∩εδφσφΦσ ΩεΣ√ ∩≡ε⌡εΣ ≥ µσ±≥Ω≤■ ∩≡εΓσ≡Ω≤.
┬ φα±≥ε ∙σσ Γ≡σ∞ εß·σΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφ√Θ ∩εΣ⌡εΣ ±≥αδ εß∙σ∩≡Φφ ≥√∞. ┬ Ωα≈σ±≥Γσ τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ ∩≡Φ ²≥ε∞ εß√≈φε Γ√ßΦ≡α■≥ ╤++. ╬ΣφαΩε ²≥ε≥ τ√Ω εßδαΣασ≥ ε∩≡σΣσδσφφ√∞ φσΣε±≥α≥Ωε∞, Ωε≥ε≡√Θ ΦτΓσ±≥σφ ∩εΣ φατΓαφΦσ∞ "∩≡εßδσ∞√ ⌡≡≤∩Ωε±≥Φ ßατεΓεπε Ωδα±±α" (fragile superclass problem).
"╧≡εßδσ∞α ⌡≡≤∩Ωε±≥Φ ßατεΓεπε Ωδα±±α" Γ ╤++
▌≥α ∩≡εßδσ∞α ΓετφΦΩασ≥ ΩαΩ ∩εßε≈φ√Θ ²⌠⌠σΩ≥ ≡σαδΦτα÷ΦΦ ∞εΣσδΦ ╤++. ╩αµΣ√Θ ≡ατ, ΩεπΣα ┬√ ΣεßαΓδ σ≥σ φεΓ√Θ ∞σ≥εΣ ΦδΦ ∩σ≡σ∞σφφ≤■ Γ Ωδα±±, Γ±σ ε±≥αδⁿφ√σ ∞εΣ≤δΦ ∩≡ΦδεµσφΦ , Φ±∩εδⁿτ≤■∙Φσ ²≥ε≥ Ωδα±±, ≥≡σß≤■≥ ∩σ≡σΩε∞∩Φδ ÷ΦΦ. ┬ ∩≡ε≥ΦΓφε∞ ±δ≤≈ασ ∩≡επ≡α∞∞α ≤±∩σ°φε ±εßΦ≡ασ≥± , α ∩≡Φ τα∩≤±Ωσ ≥αΩ µσ ≤±∩σ°φε ≡ατΓαδΦΓασ≥± . ─αµσ ∩≡Φ Φ±∩εδⁿτεΓαφΦΦ ±∩σ÷Φαδⁿφ√⌡ ≤≥ΦδΦ≥ ≥Φ∩α make φσ≥ε≈φεσ ε≥±δσµΦΓαφΦσ ΓταΦ∞εταΓΦ±Φ∞ε±≥σΘ ∞σµΣ≤ Ωδα±±α∞Φ Γδ σ≥± φσΦ±± Ωα■∙Φ∞ Φ±≥ε≈φΦΩε∞ ε°ΦßεΩ. ▌≥α ∩≡εßδσ∞α "⌡≡≤∩Ωε±≥Φ ßατεΓεπε Ωδα±±α" ≥αΩµσ ≈α±≥ε Φ∞σφ≤σ≥± ΩαΩ ∩≡εßδσ∞α "∩ε±≥ε φφεΘ ∩σ≡σΩε∞∩Φδ ÷ΦΦ". ╚τßσµα≥ⁿ σσ ∞εµφε ∩≤≥σ∞ ≡ατφεεß≡ατφ√⌡ ≤δεΓεΩ, εß√≈φε ±Γ ταφφ√⌡ ± ε≥Ωατε∞ ε≥ ∩≡ ∞επε Φ±∩εδⁿτεΓαφΦ εß·σΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφ√⌡ ±ΓεΘ±≥Γ τ√Ωα.
╨σ°σφΦσ "∩≡εßδσ∞√ ⌡≡≤∩Ωε±≥Φ ßατεΓεπε Ωδα±±α"
┬ ±Φ±≥σ∞σ ∩≡επ≡α∞∞Φ≡εΓαφΦ Java ²≥α ∩≡εßδσ∞α ≡σ°ασ≥± Γ φσ±ΩεδⁿΩε ²≥α∩εΓ. ┬ε-∩σ≡Γ√⌡, Ωε∞∩Φδ ≥ε≡ φσ ≡ατ≡σ°ασ≥ ±±√δεΩ Γ∩δε≥ⁿ Σε ≈Φ±δσφφ√⌡ τφα≈σφΦΘ. ═α∩≡ε≥ΦΓ, ±Φ∞Γεδⁿφα Φφ⌠ε≡∞α÷Φ ∩σ≡σΣασ≥± Γ∞σ±≥σ ± ßαΘ≥-ΩεΣα∞Φ Σδ ∩≡εΓσ≡ΩΦ Φ Φφ≥σ≡∩≡σ≥α÷ΦΦ. ╬Ωεφ≈α≥σδⁿφεσ ±Γ τ√ΓαφΦσ Φ∞σφ ∩≡εΦτΓεΣΦ≥± Φφ≥σ≡∩≡σ≥α≥ε≡ε∞ Γ ∞ε∞σφ≥ ταπ≡≤τΩΦ Ωδα±±α. ╧ε±δσ ²≥επε ±±√δΩΦ ≤µσ "∩≡ε∩Φ±αφ√", ΩαΩ φσ∩ε±≡σΣ±≥Γσφφ√σ ≤Ωατα≥σδΦ, Φ Φφ≥σ≡∩≡σ≥α≥ε≡ ∞εµσ≥ ≡αßε≥α≥ⁿ ± φε≡∞αδⁿφεΘ ±Ωε≡ε±≥ⁿ■.
┬ε Γ≥ε≡√⌡ ≥ε, ΩαΩ εß·σΩ≥ Σεδµσφ Γ√πδ Σσ≥ⁿ Γ ∩α∞ ≥Φ ∞α°Φφ√, ε∩≡σΣσδ σ≥± φσ Ωε∞∩Φδ ≥ε≡ε∞, α ±α∞Φ∞ Φφ≥σ≡∩≡σ≥α≥ε≡ε∞. ─εßαΓδσφΦσ Γ Ωδα±± φεΓ√⌡ ∩σ≡σ∞σφφ√⌡ ΦδΦ ∞σ≥εΣεΓ φσ ≥≡σß≤σ≥ Φτ∞σφσφΦΘ Γ ε±≥αδⁿφ√⌡ ΩεΣα⌡.
╧εφ ≥Φσ Φφ≥σ≡⌠σΘ±α Γ τ√Ωσ Java
╧εΣ Φφ≥σ≡⌠σΘ±ε∞ (interface) Γ Java ∩εφΦ∞ασ≥± ±∩σ÷Φ⌠ΦΩα÷Φ Σε∩εδφΦ≥σδⁿφεπε φαßε≡α ∞σ≥εΣεΓ, Ωε≥ε≡√σ "εß ταφ τφα≥ⁿ" εß·σΩ≥. ╚Σσ ταΦ∞±≥ΓεΓαφα Φτ τ√Ωα Objective C, πΣσ ≥αΩα ±∩σ÷Φ⌠ΦΩα÷Φ φατ√Γασ≥± ∩≡ε≥εΩεδε∞ (protocol). ╚φ≥σ≡⌠σΘ± φσ ΓΩδ■≈ασ≥ Γ ±σß ∞εΣΦ⌠Φ÷Φ≡≤σ∞√⌡ ∩σ≡σ∞σφφ√⌡ ΦδΦ Γ√∩εδφ σ∞√⌡ ΩεΣεΓ. ╩δα±± ∞εµσ≥ ≡σαδΦτεΓα≥ⁿ δ■ßεσ ΩεδΦ≈σ±≥Γε Φφ≥σ≡⌠σΘ±εΓ, ßστ Γ±σ⌡ ≥≡≤Σφε±≥σΘ ε≡παφΦτα÷ΦΦ Φσ≡α≡⌡ΦΦ Ωδα±±εΓ ∩≡Φ ∞φεµσ±≥Γσφφε∞ φα±δσΣεΓαφΦΦ Γ ╤++.
╧≡σΣ±≥αΓδσφΦσ Γ Φ±∩εδφ σ∞ε∞ ∞εΣ≤δσ
╩δα±±√ Γ Java ≡σαδⁿφε ∩≡σΣ±≥αΓδσφ√ Γ ≡αßε≥α■∙σΘ ±Φ±≥σ∞σ. ╤≤∙σ±≥Γ≤σ≥ Γ√Σσδσφφ√Θ Ωδα±± ∩ε Φ∞σφΦ Class, ²Ωτσ∞∩δ ≡√ Ωε≥ε≡επε ±ετΣα■≥± ΓΦ≡≥≤αδⁿφεΘ ∞α°ΦφεΘ Φ ±εΣσ≡µα≥ Φφ⌠ε≡∞α÷Φ■ ε Γ±σ⌡ Ωδα±±α⌡ Γ ±Φ±≥σ∞σ. ─δ δ■ßεπε εß·σΩ≥α Γετ∞εµφε φαΘ≥Φ ±εε≥Γσ≥±≥Γ≤■∙ΦΘ σ∞≤ εß·σΩ≥, ∩≡σΣ±≥αΓδ ■∙ΦΘ σπε Ωδα±±. ╩δα±± ∞εµσ≥ ±εεß∙Φ≥ⁿ ±Γεσ Φ∞ Φ ±±√δΩ≤ φα ±Γεσπε φσ∩ε±≡σΣ±≥Γσφφεπε ∩≡σΣ°σ±≥ΓσφφΦΩα Γ Φσ≡α≡⌡ΦΦ. ┬ετ∞εµσφ ≥αΩµσ ∩εΦ±Ω Ωδα±±εΓ ∩ε Φ∞σφΦ.
╚≥επΦ
╚φ≥σ≡∩≡σ≥Φ≡≤σ∞α Φ ΣΦφα∞Φ≈σ±Ωα ∩≡Φ≡εΣα τ√Ωα Java ∩≡σΣε±≥αΓδ σ≥ ≡ατ≡αßε≥≈ΦΩ≤ ε∩≡σΣσδσφφ√σ ∩≡σΦ∞≤∙σ±≥Γα:
╧ε ∞σ≡σ ±≥≡σ∞Φ≥σδⁿφεπε ≡ε±≥α Φ±∩εδⁿτεΓαφΦ πδεßαδⁿφ√⌡ ±σ≥σΘ Γ ±∩σΩ≥≡σ ≤±δ≤π, ∩≡ε±≥Φ≡α■∙σ∞± ε≥ ²δσΩ≥≡εφφεπε ≡α±∩≡ε±≥≡αφσφΦ ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ Φ εß·σΩ≥εΓ multimedia Σε ²δσΩ≥≡εφφ√⌡ ∩δα≥σµσΘ, ßστε∩α±φε±≥ⁿ ±≥αφεΓΦ≥± Ωδ■≈σΓεΘ ∩≡εßδσ∞εΘ. ╠√ Ωε±φσ∞± ≥επε, ΩαΩ Ωε∞∩Φδ ≥ε≡ Java Φ run-time ∩≡σΣε≥Γ≡α∙α■≥ ±ετΣαφΦσ Φ ∩≡εφΦΩφεΓσφΦσ "ΣΦΓσ≡±Φεφφ√⌡" ΩεΣεΓ.
╩ε∞∩Φδ ≥ε≡ Φ run-time ΓΩδ■≈α■≥ Γ ±σß φσ±ΩεδⁿΩε ≤≡εΓφσΘ εßε≡εφ√ ∩≡ε≥ΦΓ ∩ε≥σφ÷Φαδⁿφε ε∩α±φ√⌡ ∩≡επ≡α∞∞. ┬ εß∙σ∞ ±δ≤≈ασ ±Φ±≥σ∞α Φ±⌡εΣΦ≥ Φτ ∩≡σΣ∩εδεµσφΦ , ≈≥ε ΣεΓσ≡ ≥ⁿ φσδⁿτ φΦΩε∞≤. ╤δσΣ≤■∙Φσ φσ±ΩεδⁿΩε ±σΩ÷ΦΘ Ωα±α■≥± ∩≡εßδσ∞√ ßεδσσ Σσ≥αδⁿφε.
╨στσ≡ΓΦ≡εΓαφΦσ Φ ≡α±∩≡σΣσδσφΦσ ∩α∞ ≥Φ
┬ε-∩σ≡Γ√⌡, ≡σ°σφΦσ ε ≡α±∩≡σΣσδσφΦΦ ∩α∞ ≥Φ ∩≡ΦφΦ∞ασ≥ φσ Ωε∞∩Φδ ≥ε≡, α run-time ±Φ±≥σ∞α. ╬φε ∞εµσ≥ ταΓΦ±σ≥ⁿ ε≥ ε±εßσφφε±≥σΘ α≡⌡Φ≥σΩ≥≤≡√ ΩεφΩ≡σ≥φεΘ ±Φ±≥σ∞√.
┬ε-Γ≥ε≡√⌡, τ√Ω φσ ∩εΣΣσ≡µΦΓασ≥ ≤Ωατα≥σδσΘ. ╤Φ∞ΓεδΦ≈σ±ΩΦσ ±±√δΩΦ φα εß·σΩ≥√ ≡ατ≡σ°α■≥± Φφ≥σ≡∩≡σ≥α≥ε≡ε∞ φα ²≥α∩σ Γ√∩εδφσφΦ . ┬√ΣσδσφΦσ ∩α∞ ≥Φ Φ ≡αßε≥α ±ε ±±√δΩα∞Φ φα⌡εΣ ≥± ∩εδφε±≥ⁿ■ ∩εΣ ≤∩≡αΓδσφΦσ∞ ±Φ±≥σ∞√ Φ φσ Σε±≥≤∩φ√ φσ∩ε±≡σΣ±≥Γσφφε Φτ ∩≡επ≡α∞∞√.
╬≥δεµσφφεσ Σε ∩ε±δσΣφσπε ∞ε∞σφ≥α ≡ατ∞σ∙σφΦσ ±≥≡≤Ω≥≤≡ Γ ∩α∞ ≥Φ φσ ∩ετΓεδ σ≥ ε∩≡σΣσδΦ≥ⁿ ≡σαδⁿφεσ ∩εδεµσφΦσ ∩εδσΘ Ωδα±±α ∩ε σπε ε∩Φ±αφΦ■.
╧≡ε÷σ±± ∩≡εΓσ≡ΩΦ ßαΘ≥-ΩεΣεΓ
═σ±∞ε≥≡ φα ≥ε, ≈≥ε Ωε∞∩Φδ ≥ε≡ πα≡αφ≥Φ≡≤σ≥, ≈≥ε ΩεΣ√ φσ φα≡≤°α■≥ ≥≡σßεΓαφΦΘ ßστε∩α±φε±≥Φ, σ±δΦ εφΦ ß√δΦ ∩εδ≤≈σφ√ Φτ Σ≡≤πΦ⌡ ≥ε≈σΩ ±σ≥Φ ΓετφΦΩασ≥ ±δσΣ≤■∙α ∩≡εßδσ∞α: ΩεΣ√ ∞επ≤≥ ß√≥ⁿ ±ετΣαφ√ φσ Ωε∞∩Φδ ≥ε≡ε∞ Java, α Σ≡≤πΦ∞Φ ±≡σΣ±≥Γα∞Φ. ╚δΦ εφΦ ∞επ≤≥ ß√≥ⁿ φα∞σ≡σφφε ∞εΣΦ⌠Φ÷Φ≡εΓαφ√ ∩ε±δσ ±ετΣαφΦ . ╧ε²≥ε∞≤ run-time ±Φ±≥σ∞α ∩εΣΓσ≡πασ≥ ∩εδ≤≈σφφ√σ ΩεΣ√ ≥∙α≥σδⁿφεΘ ∩≡εΓσ≡Ωσ.
╧≡εΓσ≡Ωα ΓΩδ■≈ασ≥ Γ ±σß φσ±ΩεδⁿΩε ²≥α∩εΓ, φα≈Φφα ± Ωεφ≥≡εδ ÷σδε±≥φε±≥Φ ⌠ε≡∞α≥α ∩εδ≤≈σφφεπε ⌠αΘδα Σε αφαδΦτα ΩαµΣεπε ⌠≡απ∞σφ≥α ΩεΣεΓ φα ∩≡σΣ∞σ≥ Γ√∩εδφσφΦ ±δσΣ≤■∙Φ⌡ ∩≡αΓΦδ:
╧≡αΓΦδα ßστε∩α±φε±≥Φ ∩≡Φ ταπ≡≤τΩσ
┬ ⌡εΣσ Γ√∩εδφσφΦ ∩≡επ≡α∞∞√ ∞εµσ≥ ∩ε≥≡σßεΓα≥ⁿ± ταπ≡≤τΩα Σε∩εδφΦ≥σδⁿφ√⌡ Ωδα±±εΓ. ╧ε±δσ ≥επε ΩαΩ, ∩εδ≤≈σφφ√Θ ΩεΣ ∩≡ε°σδ ∩≡εΓσ≡Ω≤ φα ΓαδΦΣφε±≥ⁿ ßαΘ≥-ΩεΣεΓ, εφ ∩ε±≥≤∩ασ≥ Γ ταπ≡≤τ≈ΦΩ ΩεΣεΓ. ─δ ταπ≡≤τ≈ΦΩα Γ±σ ∩≡ε±≥≡αφ±≥Γε Φ∞σφ ταπ≡≤µασ∞√⌡ Ωδα±±εΓ ∞εµσ≥ ß√≥ⁿ ∩εΣ≡ατΣσδσφε φα ε≥Σσδⁿφ√σ εßδα±≥Φ (name spaces). ╧≡Φ≈σ∞ Ωδα±±√, ∩εδ≤≈σφφ√σ δεΩαδⁿφε (τα±δ≤µΦΓα■∙Φσ ßστ≤±δεΓφεπε ΣεΓσ≡Φ ), Φ Ωδα±±√, ∩≡Φ±δαφφ√σ ∩ε ±σ≥Φ Φτ ε±≥αδⁿφεπε ∞Φ≡α (Φ ∩ε≥σφ÷Φαδⁿφε Γ≡αµΣσßφ√σ), φα⌡εΣ ≥± Γ ≡ατφ√⌡ ∩≡ε±≥≡αφ±≥Γα⌡ Φ∞σφ.
╧≡Φ ≡ατ≡σ°σφΦΦ ±±√δΩΦ φα ΩαΩεΘ-δΦßε Ωδα±± εφ Φ∙σ≥± ∩≡σµΣσ Γ±σπε Γ δεΩαδⁿφε∞ ∩≡ε±≥≡αφ±≥Γσ. ▌≥ε φσ ∩ετΓεδ σ≥ "Γφσ°φΦ∞" ΩεΣα∞ ∩εΣ∞σφΦ≥ⁿ εΣΦφ Φτ ßατεΓ√⌡ Ωδα±±εΓ Γ ±Φ±≥σ∞σ.
┴στε∩α±φε±≥ⁿ Γ ±σ≥σΓε∞ ∩αΩσ≥σ
╤σ≥σΓεΘ ∩αΩσ≥ Java ΓΩδ■≈ασ≥ Γ ±σß ∩εΣΣσ≡µΩ≤ ≡ατδΦ≈φ√⌡ ±σ≥σΓ√⌡ ∩≡ε≥εΩεδεΓ (FTP, HTTP, Telnet Φ ≥.Σ.). ▌≥ε -- ∩σ≡σΣεΓα δΦφΦ τα∙Φ≥√ ε≥ Γ≥ε≡µσφΦ ∩ε ±σ≥Φ.
╬±≥ε≡εµφε±≥ⁿ ∩≡Φ ≤±≥αφεΓΩσ ∩≡αΓ ±σ≥σΓεπε Σε±≥≤∩α Γ δεΩαδⁿφ≤■ ±Φ±≥σ∞≤ ∞εµσ≥ ß√≥ⁿ ΣεΓσΣσφα Σε ∩α≡αφεΦΣαδⁿφεΘ. ┬√ ∞εµσ≥σ
╚≥επΦ
╤Φ±≥σ∞α Java Σε±≥α≥ε≈φε ßστε∩α±φα, ≈≥εß√ µΦ≥ⁿ Γ ±σ≥σΓε∞ εΩ≡≤µσφΦΦ. ═σΘ≥≡αδⁿφε±≥ⁿ Ω α≡⌡Φ≥σΩ≥≤≡σ Φ ∩σ≡σφε±Φ∞ε±≥ⁿ Σσδα■≥ σσ Σε±≥α≥ε≈φε ∩≡ΦΓδσΩα≥σδⁿφεΘ Σδ ±ετΣαφΦ ≡α±∩≡σΣσδσφφ√⌡ ∩ε ±σ≥Φ ∩≡ΦδεµσφΦΘ.
╤εΓ≡σ∞σφφεπε ∩εδⁿτεΓα≥σδ Ωε∞∩ⁿ■≥σ≡α Γ±σ ≈α∙σ ≡ατΣ≡αµασ≥ ±Φ≥≤α÷Φ , ΩεπΣα ∩≡επ≡α∞∞α ±∩ε±εßφα Γ√∩εδφ ≥ⁿ Γ εΣΦφ ∞ε∞σφ≥ Γ≡σ∞σφΦ δΦ°ⁿ εΣφ≤ ταΣα≈≤. ╨σαδⁿφ√Θ ∞Φ≡ φα∩εδφσφ ±εß√≥Φ ∞Φ, ∩≡εΦ±⌡εΣ ∙Φ∞Φ εΣφεΓ≡σ∞σφφε Φ φσταΓΦ±Φ∞ε. ╧εδⁿτεΓα≥σδⁿ ≥≡σß≤σ≥ ε≥ Ωε∞∩ⁿ■≥σ≡α αΣσΩΓα≥φεΘ ≡σαΩ÷ΦΦ.
╩ ±εµαδσφΦ■, φα∩Φ±αφΦσ ∩≡επ≡α∞∞, ε≥Γσ≈α■∙Φ⌡ ²≥Φ∞ ≥≡σßεΓαφΦ ∞, τφα≈Φ≥σδⁿφε ±δεµφσσ, ≈σ∞ φα∩Φ±αφΦσ ∩≡επ≡α∞∞, Γ√∩εδφ ■∙Φ⌡± ∩ε±δσΣεΓα≥σδⁿφε. ╬φΦ ∞επ≤≥ ß√≥ⁿ ±ετΣαφ√ ± Φ±∩εδⁿτεΓαφΦσ∞ ╤ ΦδΦ ╤++, εΣφαΩε Σσδα≥ⁿ ²≥ε ±δεµφσσ, ≥.Ω. ε≥±≤≥±≥Γ≤σ≥ ∩εΣΣσ≡µΩα Γ ±α∞ε∞ τ√Ωσ, α ≥αΩµσ ßεδⁿ°Φφ±≥Γε ±≤∙σ±≥Γ≤■∙Φ⌡ φα ±σπεΣφ °φΦΘ Σσφⁿ Γφσ°φΦ⌡ ßΦßδΦε≥σΩ ≈α±≥ε φσ ∞επ≤≥ ß√≥ⁿ Φ±∩εδⁿτεΓαφ√ Γ ≥αΩΦ⌡ ∩≡επ≡α∞∞α⌡ Γ ±Φδ≤ ≥επε, ≈≥ε εφΦ φσ ≤ΣεΓδσ≥Γε≡ ■≥ ≥αΩ φατ√Γασ∞ε∞≤ thread-safe ≤±δεΓΦ■.
╥σ≡∞Φφ thread-safe ετφα≈ασ≥, ≈≥ε ΩαµΣα ⌠≤φΩ÷Φ ΣαφφεΘ ßΦßδΦε≥σΩΦ ∞εµσ≥ ß√≥ⁿ Φ±∩εδⁿτεΓαφα εΣφεΓ≡σ∞σφφε φσ±ΩεδⁿΩΦ∞Φ ∩ε≥εΩα∞Φ.
╬±φεΓφα ∩≡εßδσ∞α ∩≡Φ ∩≡ ∞ε∞ ≤∩≡αΓδσφΦΦ ∩ε≥εΩα∞Φ ±ε±≥εΦ≥ Γ ≥ε∞, ≈≥ε ┬√ φΦΩεπΣα φσ ∞εµσ≥σ ß√≥ⁿ ∩εδφε±≥ⁿ■ ≤Γσ≡σφ√, ≈≥ε ∩ε±≥αΓΦδΦ Γ±σ φ≤µφ√σ τα∞ΩΦ (locks) Φ ΓεΓ≡σ∞ Φ⌡ ε±ΓεßεΣΦδΦ. ╧≡Φ ∩≡σµΣσΓ≡σ∞σφφε∞ ταΓσ≡°σφΦΦ ∩≡ε÷σΣ≤≡√ ΦδΦ ∩≡Φ ΓετφΦΩφεΓσφΦΦ Φ±Ωδ■≈Φ≥σδⁿφεΘ ±Φ≥≤α÷ΦΦ τα∞εΩ ∞εµσ≥ ε±≥α≥ⁿ± φσ±φ ≥√∞, ≈≥ε εß√≈φε ∩≡ΦΓεΣΦ≥ Ω ßδεΩΦ≡εΓΩσ ∩≡επ≡α∞∞√ (deadlock).
┬±≥≡εσφφα ∞φεπε∩ε≥εΩεΓε±≥ⁿ -- ±≤∙σ±≥Γσφφα ≈σ≡≥α α≡⌡Φ≥σΩ≥≤≡√ Java. ╤≥αφΣα≡≥φα ßΦßδΦε≥σΩα ΓΩδ■≈ασ≥ Γ ±σß Ωδα±± Thread, ± ∞σ≥εΣα∞Φ, ∩ετΓεδ ■∙Φ∞Φ ±≥α≡≥εΓα≥ⁿ φεΓ√Θ ∩ε≥εΩ, ταΓσ≡°Φ≥ⁿ σπε ≡αßε≥≤ Φ ∩≡εΓσ≡Φ≥ⁿ ≥σΩ≤∙σσ ±ε±≥ε φΦσ ∩ε≥εΩα.
╚φ≥σπ≡α÷Φ ∩≡Φ∞Φ≥ΦΓεΓ ±Φφ⌡≡εφΦτα÷ΦΦ φσ∩ε±≡σΣ±≥Γσφφε Γ τ√Ω ≤∩≡ε∙ασ≥ ≡αßε≥≤ ± φΦ∞Φ.
╧ε≥εΩΦ Γ Java Γ√≥σ±φ ■∙Φσ (pre-emptive), α ≥αΩµσ ∞επ≤≥ Γ√∩εδφ ≥ⁿ± Γ ≡σµΦ∞σ ≡ατΣσδσφΦ Γ≡σ∞σφΦ (time-sliced), φε ≥εδⁿΩε φα ∩δα≥⌠ε≡∞α⌡, Ωε≥ε≡√σ ∩εΣΣσ≡µΦΓα■≥ ²≥ε. ┬ ±Φ±≥σ∞α⌡, Γ Ωε≥ε≡√⌡ ≥αΩα ∩εΣΣσ≡µΩα ε≥±≤≥±≥Γ≤σ≥, ∩ε±δσ ≥επε, ΩαΩ ∩ε≥εΩ ß√δ τα∩≤∙σφ, εφ ∞εµσ≥ ß√≥ⁿ ∩≡σ≡Γαφ ≥εδⁿΩε Σ≡≤πΦ∞ ∩ε≥εΩε∞ ± ßεδσσ Γ√±εΩΦ∞ ∩≡Φε≡Φ≥σ≥ε∞. ┼±δΦ Γα°σ ∩≡ΦδεµσφΦσ ≥≡σß≤σ≥ ßεδⁿ°Φ⌡ ∩σ≡ΦεΣεΓ Γ√≈Φ±δσφΦΘ, ≡σΩε∞σφΣ≤σ≥± Γφε ε≥ΣαΓα≥ⁿ ≤∩≡αΓδσφΦσ Σ≡≤πΦ∞ ∩ε≥εΩα∞ (Γ√τεΓε∞ Thread.yield()).
╚φ≥σπ≡Φ≡εΓαφφα ±Φφ⌡≡εφΦτα÷Φ ∩ε≥εΩεΓ
╤Φ±≥σ∞α Java ±εΣσ≡µΦ≥ ∩εΣΣσ≡µΩ≤ ∞φεπε∩ε≥εΩεΓε±≥Φ ΩαΩ φα ≤≡εΓφσ ±Φφ≥αΩ±Φ±α τ√Ωα, ≥αΩ Φ φα ≤≡εΓφσ ßΦßδΦε≥σΩ Φ ±Φ±≥σ∞φ√⌡ Γ√τεΓεΓ.
═α ≤≡εΓφσ ±α∞επε τ√Ωα ∞σ≥εΣ√, εß· Γδσφφ√σ ± ∩≡ΦτφαΩε∞ synchronized, πα≡αφ≥Φ≡εΓαφε φσ ß≤Σ≤≥ Γ√∩εδφ ≥ⁿ± εΣφεΓ≡σ∞σφφε Σδ Σαφφεπε εß·σΩ≥α. ╠σ≥εΣ√ τα∩≤±Ωα■≥± ∩εΣ ≤∩≡αΓδσφΦσ∞ ∞εφΦ≥ε≡α (monitor). ╩αµΣ√Θ Ωδα±± Φ εß·σΩ≥ Φ∞σ■≥ ±ΓεΘ ±εß±≥Γσφφ√Θ ∞εφΦ≥ε≡. ┼±δΦ εß·σΩ≥ φα⌡εΣΦ≥± Γ ±ε±≥ε φΦΦ Γ√∩εδφσφΦ εΣφεπε Φτ ±Φφ⌡≡εφΦτεΓαφφ√⌡ ∞σ≥εΣεΓ, ∩ε∩√≥Ωα Γ√τΓα≥ⁿ ²≥ε≥ ∞σ≥εΣ ΦδΦ δ■ßεΘ Σ≡≤πεΘ ±Φφ⌡≡εφΦτεΓαφφ√Θ ∞σ≥εΣ Σδ ²≥επε µσ εß·σΩ≥α Φτ Σ≡≤πεπε ∩ε≥εΩα ∩≡Φε±≥αφαΓδΦΓασ≥± Σε ≥επε ∞ε∞σφ≥α, ΩεπΣα Γ√∩εδφσφΦσ ∞σ≥εΣα ΩαΩΦ∞-≥ε εß≡ατε∞ ταΓσ≡°Φ≥± (εß√≈φ√∞ εß≡ατε∞ ΦδΦ Γ ≡στ≤δⁿ≥α≥σ Γετß≤µΣσφΦ Φ±Ωδ■≈Φ≥σδⁿφεΘ ±Φ≥≤α÷ΦΦ).