国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【譯】Java語言速覽:StackOverflow

2019-11-14 15:35:29
字體:
來源:轉載
供稿:網友

java (請不要與 JavaScript 搞混) 是一種設計為與 Java 虛擬機 (JVM) 一起使用的多用途編程語言。一般稱呼安裝了相關工具使其可以開發并運行 Java 程序的電腦系統為 “Java 運行平臺”。使用這個標簽可以查找有關 Java 編程語言或者 Java 平臺工具的問題。

Java 是一種高性能、跨平臺、面向對象的編程語言和運行環境。Java 大部分語法起源于 C 和 C++,但是其對象模型簡于 C++,并且減少了低級功能。Java 應用均被編譯為字節碼(被稱為 class 文件),使其可以被 JVM(Java 虛擬機)執行,并獨立于不同的電腦體系。JVM 通過一個垃圾收集器(查看 garbage-collection)幫助管理內存,當對象不再使用時可以將其從內存中移除。Java 的系統類型是靜態、強類型、安全、聲明類型和顯式的。Java 支持反射、接口等與 C 和 C++ 相似的功能,例如 JNI(The Java Native Interface)。

Java 被設計為盡可能減少與電腦系統的依賴關系,可以允許應用開發者 “一處編寫,處處運行”(WORA):在一個平臺上執行的代碼不需重新編譯就能在其他機器上運行。Java 最初由 James Gosling 在 Sun Mircosystems 公司(2009年4月20日已被 Oracle 并購)設計,最初是于 1995 年作為 Sun Microsystems公司 Java 運行平臺的核心元件發行。

安裝工具用于開發和運行 Java 的電腦系統被 Sun(現為 Oracle)命名為 Java 運行平臺。各種具有平臺特性的工具可以幫助開發者更有效率地使用 Java 程序語言開發。

平臺包含兩個基本的軟件包:

  • Java 運行環境(JRE):用于運行 Java 應用和程序;
  • Java 開發工具包(JDK):用于開發 Java 應用和程序。JDK 總是伴隨著一個 JRE。

在本節中,我們將進一步探討這兩個軟件包作為 Java 運行平臺的組成部分,其產生的作用。

背景

作為參考的大部分 Java 實現方式都是開源的(the OpenJDK),由包括 Oracle,Apple,SAP 與 IBM 在內的大型企業提供支持。

極少的電腦可以直接運行 Java 程序。因此,Java 環境通常要求安裝合適的軟件組件。在 Windows 系統上,一般可以從 java.com 下載免費的 Java 運行環境(JRE)。在 Macintosh 系統上,當一個應用需要 Java 運行環境時,會在啟動時請求用戶下載 Java。在類 linux 系統上,Java 一般通過包管理器安裝。

Windows 和 Mac 平臺的開發者經常需要額外的工具,使用工具所需的免費 Java 開發包(JDK)必須從 Oracle下載并手動安裝。

Java 會被編譯為字節碼,然后由 JVM 通過編譯為原生代碼進行解析工作。編譯技術為動態編譯(JIT)。最初這被視為降低性能的做法,但是隨著 JVM 和 JIT 的發展,擔憂逐漸減少。在某些情況下,例如當一個舊版本的處理器需要向后兼容時,JVM 甚至快于原生代碼編譯速度。

注意:也有其他供應商存在,然而大部分都有授權費。對于 linux 和其他平臺,請查閱相關的操作系統文檔。

版本

包含主要的 Java 版本,代號和發行時間:

  • JDK 1.0 (1996/01/23)
  • JDK 1.1 (1997/02/19)
  • J2SE 1.2 [Playground] (1998/12/08)
  • J2SE 1.3 [Kestrel] (2000/05/08)
  • J2SE 1.4 [Merlin] (2002/02/06)
  • J2SE 5.0 [Tiger] (2004/09/30)
  • Java SE 6 [Mustang] (2006/12/11)
  • Java SE 7 [Dolphin] (2011/07/28)
  • Java SE 8 [JSR 337] (2014/03/18)
  • Java SE 9 [TBD ] (未發布)

最新的穩定版本:

  • Java Standard Edition 8 Update 51 (1.8.0_51) - (2015/07/14)
  • Java Standard Edition 7 Update 79 (1.7.0_79) - (2015/04/14)

更多的代號及發行日期請訪問 J2SE Code Names。要查看 JDK 的版本發行日志請訪問 Wikipedia 的 Java 版本歷史文章。

Java SE 8 正在發行并且可下載。

公共更新的結束日期(以前稱為結束生命)為:

  • J2SE 1.4 - 2008/10
  • J2SE 5.0 - 2009/10
  • Java SE 6 - 2013/02
  • Java SE 7 - 2015/04
  • Java SE 8 - 2017/09

初始幫助

你是 Java 初學者或者需要幫助使你的第一個 Java 程序運行?請參看 Oracle Java 教程開始部分。

詢問問題前,請使用右上角的搜索欄查找是否已被詢問(我們有很多相似的問題),并且閱讀《如何提出一個好的問題》,學習怎樣吸引 Jon Skeet 回答你的問題。

命名規范

Java 程序需要堅持下列的命名規范以提高可讀性和降低意外錯誤出現的可能性。通過遵守這些命名規范,可以使他人閱讀你的代碼和幫助你時更加輕松。

類型名(類,接口,枚舉等等)應以大寫字母開頭,隨后的每個單詞首字母大寫。例如:StringThreadLocalNullPointerException。有時被稱為 pascal case(帕斯卡命名法)。

方法名應使用 camelCased(駝峰式命名法),即它們應以小寫字母開頭,隨后的每個單詞首字母大寫。例如:indexOf,PRintStackTrace,interrupt。

字段名應使用和方法名一樣的駝峰式命名法。

常量表達式命名static final 不可變對象)應被寫為 ALL_CAPS形式,使用下劃線分割每個單詞。例如:YELLOWDO_NOTHING_ON_CLOSE。這同樣應用于一個枚舉類(Enum)的變量命名。然而,static final 修飾可變對象時應使用駝峰式命名。

Hello World - 你的第一個程序

Hello World 程序的代碼為:

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}

編譯和調用 Hello world 程序:

javac -d . HelloWorld.java java -cp . HelloWorld

Java 源代碼被編譯為中間代碼形式(針對 Java 虛擬機 的字節碼指令),然后可以被 java 命令執行。

更多信息:

  • Java 維基頁面
  • JDK 維基頁面
  • JRE 維基頁面
  • Oracle 的 Java 下載頁面

開發Java常用的IDE

  • Eclipse IDE
  • NetBeans IDE
  • IntelliJ IDEA
  • Spring Tool Suite(基于 Eclipse,包含用于 Spring 的插件)
  • JDeveloper IDE
  • Android Studio(基于 IntelliJ IDEA,主要用于 android 項目開發)
  • BlueJ

初學者資源

  • The Java Tutorials - 從在 Windows/Linux/Mac 上的 scratch 開始,覆蓋大部分標準庫。
  • Generics
  • Coding Bat (Java) - 學習部分基礎之后,通過 Coding Bat 磨練和完善你的 Java 技術。
  • Java 編程規范
  • Stanford Java 視頻課程
  • Udemy Java 免費課程
  • Edx 課程:Java 編程導論

日常幫助資源

  • Java SE 文檔
  • Java 7 API 參考手冊
  • Java 8 API 參考手冊

進階資源

  • Java 語言與虛擬機說明
  • 其他可以在 JVM 上與 Java 混合使用的開發語言

免費 Java 編程圖書與資源

  • 《Linux 開發 Java 應用》(Carl Albing 與 Michael Schwarz 合著,PDF)
  • 《如何像一名電腦科學家一樣思考》
  • 《Spring IO Guides》
  • 《The Java EE7 Tutorial》(PDF)
  • 《Java Thin-Client Programming》
  • 《Oracle's Java Tutorials》
  • 《Thinking in Java》
  • 《OSGi in Practice》(PDF)
  • 《Category wise tutorials - J2EE》
  • 《Java Example Codes and Tutorials - J2EE》
  • 《Java Design Pattern Video Training》

常見問題

人們在 Java 主題下經常詢問的問題:

通用:

  • Java 與 Javascript 有什么不同
  • 我如何將自己的 Java 程序轉換為 .exe 文件

環境變量:

  • 在環境變量中設置多種 jar 包

String,StringBuildertoString

  • 在 Java 中如何比較字符串?
  • Java 中的 StringBuilder 與 StringBuffer
  • 為什么當我在自己的 Java 項目中打印時得到 SomeType@2f92e0f4?
  • Java 中的字符串常量

equalshashCode

  • equals()== 有什么不同
  • 在 Java 中重寫 equals()hashCode() 方法

Java Platform SE API:

  • 使用 nextInt() 后跳過 nextLine()
  • 在 Java 中比較日期
  • Java:在迭代集合的過程中做高效地刪除操作
  • 如何排序 Map<Key, Value> 中的值
  • 什么時候使用 LinkedList<> 而不是 ArrayList<>
  • 說明 Arrays.asList()
  • HashMapHashtable 之間的區別

泛型:

  • List<Dog>List<Animal> 的子類嗎?為什么 Java 的泛型不支持隱式多態?
  • Java 泛型:PECS 是什么?
  • 原型是什么?為什么我們不應使用?
  • 如何創建一個泛型數組?

類與對象:

  • Java 是按引用傳遞的嗎?
  • Java enum 對比 public static final字段的類有何優勢?
  • public,protected,private 與 default 之間有什么區別

算法與規范:

  • 為什么我不能正確地打印一個 double 類型?
  • 為什么整數做除法運算會返回 0?
  • Java 的 += 操作

調試:

  • NullPointerException 是什么,我應該如何修復?
  • 堆棧追蹤是什么?我應該如何使用才能調試自己的應用錯誤?
  • 我應該如何避免檢查 null?
  • 為什么會出現 NoClassDefFoundError 錯誤?
  • Java 中的 NoSuchMethodError

Thread 與多線程:

  • java.lang.Thread.interrupt() 做了什么?
  • 無法通過打印語句查看循環中的變量改變
  • implements Runnable 對比 extends Thread

與操作系統交互:

  • 為什么 Runtime.exec(String) 只在一些命令下產生作用?

(提交者們,請僅僅列出經常被詢問的問題。)

聊天室

  • Stack Overflow 的 Java 聊天室
  • java-and-android-era

原文鏈接: stackoverflow
翻譯: ImportNew.com - honoka
譯文鏈接: http://www.importnew.com/16689.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福海县| 沁阳市| 宁强县| 清涧县| 商丘市| 阿拉善右旗| 博客| 凤山县| 阿鲁科尔沁旗| 大安市| 南皮县| 礼泉县| 玉林市| 武乡县| 太湖县| 井陉县| 久治县| 千阳县| 莱州市| 虹口区| 民县| 长兴县| 象山县| 彩票| 太谷县| 凤城市| 浏阳市| 中西区| 泌阳县| 水城县| 贵定县| 县级市| 漳平市| 正蓝旗| 黄骅市| 环江| 安平县| 新宁县| 鲁甸县| 屏南县| 温州市|