1. 程式人生 > >Java程式設計師的Scala的入門教程

Java程式設計師的Scala的入門教程

本文是《A Scala Tutorial for Java programmers》英文的翻譯,英文版地址A Scala Tutorial for Java programmers。是Michel Schinz和Philipp Haller編寫,由Bearice成中文,dongfengyee(東風雨)整理.

一、簡介

  本文僅在對Scala語言和其編譯器進行簡要介紹。本文的目的讀者是那些已經具有一定程式設計經驗,而想嘗試一下Scala語言的人們。要閱讀本文,你應當具有基礎的面向物件程式設計的概念,尤其是Java語言的。

  作為學習Scala的第一步,我們將首先寫一個標準的HelloWorld,這個雖然不是很有趣,但是它可以讓你對Scala有一個最直觀的認識而不需要太多關於這個語言的知識。我們的Hello world看起來像這樣:

1 object HelloWorld {
2 def main(args: Array[String]) {
3 println("Hello, world!")
4 }
5 }

  程式的結構對Java程式設計師來說可能很令人懷念:它由一個main函式來接受命令列引數,也就是一個String陣列。這個函式的唯一一行程式碼把我 們的問候語傳遞給了一個叫println的預定義函式。main函式不返回值(所以它是一個procedure method)。所以,也不需要宣告返回型別。

  對於Java程式設計師比較陌生的是包含了main函式的object語句。這樣的語句定義了一個單例物件:一個有且僅有一個例項的類。object語 句在定義了一個叫HelloWorld的類的同時還定義了一個叫HelloWorld的例項。這個例項在第一次使用的時候會進行例項化。

  聰明的讀者可能會發現main函式並沒有使用static修飾符,這是由於靜態成員(方法或者變數)在Scala中並不存在。Scala從不定義靜態成員,而通過定義單例object取而代之。

2.1 編譯例項

  我們使用Scala編譯器“scalac”來編譯Scala程式碼。和大多數編譯器一樣,scalac 接受原始檔名和一些選項作為引數,生成一個或者多個目標檔案。scala編譯生成的產物就是標準的Java類檔案。

  假設我們吧上述程式碼儲存為檔案HelloWorld.scala,我們使用下面的命令編譯它(大於號“>”表示命令提示符,你不必輸入它)

1 > scalac HelloWorld.scala

  這將會在當前目錄生成一系列.class檔案。其中的一個名為HelloWorld.class 的檔案中定義了一個可以直接使用scala命令執行的類。下文中你可以看到這個例子。

2.2 執行例項

  一旦完成編譯,Scala程式就可以使用scala命令執行了。scala的用法和java很相似,並且連選項也大致相同。上面的例子就可以使用下面的命令執行,這將會產生我們所期望的輸出。

1 > scala -classpath . HelloWorld
2
3 Hello, world!

  Scala的一個強項在於可以很簡單的於已有的Java程式碼互動,所有java.lang中的類都已經被自動匯入了,而其他的類需要顯式宣告匯入。

  來看看演示程式碼吧。我們希望對日期進行格式化處理,比如說用法國的格式。

  Java類庫定義了一系列很有用的類,比如Date和DateFormat。由於Scala於Java能夠進行很好的互動,我們不需要在Scala類庫中實現等效的程式碼,而只需直接吧Java的相關類匯入就可以了:

01 import java.util.{Date, Locale}
02 import java.text.DateFormat
03 import java.text.DateFormat._

相關推薦

Java程式設計師Scala入門教程

Java 8擁有了一些初步的函數語言程式設計能力:閉包等,還有新的併發程式設計模型及Stream這個帶高階函式和延遲計算的資料集合。在嘗試了Java 8以後,也許會覺得意猶未盡。是的,你會發現Scala能滿足你在初步嘗試函數語言程式設計後那求知的慾望。 安裝Scala

Java程式設計師Scala入門教程

本文是《A Scala Tutorial for Java programmers》英文的翻譯,英文版地址A Scala Tutorial for Java programmers。是Michel Schinz和Philipp Haller編寫,由Bearice成

教程 | 寫給Python程式設計師Scala入門教程

統計網導讀 本文從安裝、基礎資料型別、運算子、函式等七個方面系統介紹了Scala的語言特性。不僅是Python程式設計師,任何有程式設計經驗或者希望入門的人都可以看看,對Scala做一個基礎的認識。 隨著業務和資料的需要,我們引入了Spark。Spark對Pytho

JAVA程式設計師SCALA教程

作者:Michel Schinz和Philipp Haller 介紹 本文件簡要介紹了Scala語言和編譯器。它適用於已經擁有一些程式設計經驗並希望瞭解他們可以使用Scala做什麼的人。假定了面向物件程式設計的基本知識,特別是在Java中。 第一個例子 作為第一個例子

java程式設計師菜鳥進階(十七)linux基礎入門(五)linux檔案/目錄的許可權和歸屬管理

在linux中的每一個檔案或目錄都包含有訪問許可權,這些訪問許可權決定了誰能訪問和如何訪問這些檔案和目錄。相應的每一個檔案和目錄都有所屬的屬主和屬組,合理的設定檔案和目錄的屬組和屬主在檔案/目錄管理中佔據著很重要的地位,所以,今天我就和大家一起來看一下有關檔案/目錄的許可權和歸屬的相關設定

java程式設計師菜鳥進階(十六)linux基礎入門(四)linux下VIM文字編輯器使用

  linux下編寫配置檔案最好的編輯工具莫過於vim了。Vim的功能實在太多太全,Vim的很多功能也許我們很少用得到,真正為大家常用的功能可能只佔到所有功能的冰山一角。Vim終歸只是一個編寫程式碼或編輯文件的工具,所以只要掌握一些足夠我們使用的功能即可。 做個廣告

java程式設計師菜鳥進階(十五)linux基礎入門(三)linux使用者和組管理

我們大家都知道,要登入linux作業系統,我們必須要有一個使用者名稱和密碼。每一個使用者都由一個惟一的身份來標識,這個標識叫做使用者ID.系統中的每一個使用者也至少需要屬於一個"使用者分組".同樣,使用者分組也是由一個惟一的身份來標識的,該標識叫做使用者分組ID(GID).每位使用者的許可

java程式設計師菜鳥進階(十四)linux基礎入門(二)linux檔案及目錄命令管理

大家都知道,熟悉命令操作的開發人員,Linux作業系統命令操作效率要高於圖形介面的操作,所以瞭解和學習linux基本命令操作是學習linux作業系統的首要任務,本文主要介紹以下四個知識點:   1.      She

java程式設計師菜鳥進階(十三)linux基礎入門(一)vmvare下安裝linux RedHat圖解(超詳細篇)

對於linux,我從大二就想學習一下,但一直苦於無從下手,所以一直拖到現在,鑑於筆者瞭解很多人在linux入門的困難在何處,所以我認為本套入門基礎文章還是挺適合想學習linux的朋友,本系列文章大約十篇文章左右,近期會不斷更新下來,沒有linux基礎但又想學習linux的朋友可以關注一下本系列

Java程式設計師的職業生涯學習建議——基礎入門

這部分主要適用於尚未做過Java工作的同學,包括一些在校生以及剛準備轉行Java的同學。 一、Java基礎 首先去找一個Java的基礎教程學一下(教材或者網路視訊)。 學習Java基礎的時候,應該儘量多動手,很多時候,你想當然的事情,等你寫出來執行一下,你就會發現不是這麼回事兒,不

挑逗 Java 程式設計師的那些 Scala 絕技

有個問題一直困擾著 Scala 社群,為什麼一些 Java 開發者將 Scala 捧到了天上,認為它是來自上帝之吻的完美語言;而另外一些 Java 開發者卻對它望而卻步,認為它過於複雜而難以理解。同樣是 Java 開發者,為何會出現兩種截然不同的態度,我想這其中一定有誤會。Scala 是一粒金子,但

Java 程式設計師scala 程式碼的幾個小問題

最近自己看Scala 的程式碼,有兩個小的的問題說一下 1:FPGrowth 中run的程式碼的引數是什麼,編譯器提示是Basket,但是根本沒有這個類。看了原始碼,就是在函式中定義了一個類似別名的class,其實是Iterable<T>。可以傳入的引數是比如JavaRDD<

Java程式設計師的IntelliJ IDEA使用教程

前言 博主是Java程式設計師,以前一直都用myeclipse來開發的,說實話感覺myeclipse毫無美感可言,後來經過同事介紹,認識了IDEA,一眼就相中了IDEA黑色的主題風格,自此就拋棄了舊愛myeclipse。當時還不懂IDEA功能上比myeclipse好在哪裡,只是單純的愛上了黑色的

switch語句與三種迴圈語句,JAVA程式設計師程式設計新手入門基礎學習筆記

Java是一種可以撰寫跨平臺應用軟體的面向物件的程式設計語言。Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用於PC、資料中心、遊戲控制檯、科學超級計算機、行動電話和網際網路,同時擁有全球最大的開發者專業社群。 自己整理了-份201 8最全面前端學習資料,從最基礎的HTML+

寫給java程式設計師看的go教程

去年學的scala,感嘆其簡潔的語法,強大的表達能力,做到的fp和oop的混合程式設計非常的不容易,但是作為一個 充滿漏洞(光就一個sbt就夠折騰的,還有scala的編譯器,就不說了)和世界觀扭曲的語言,實在是不是很適合在生產上用,畢竟後期還要自己或者別的同事維護的,自己作為

百戰程式設計師-Zookeeper視訊教程快速入門(網友一致推薦)

ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功

java程式設計師菜鳥入門之一javaweb專案開發環境

一、java開發環境 1、jdk的下載安裝 JDK:JDK是java語言的軟體開發包,是整個java開發的核心,包含了java的執行環境(jvm+java系統類庫)和java工具,執行java程式的最小環境為jre,開發java程式的最小環境為JDK。 JDK的下載:ora

java程式設計師菜鳥入門之十二jsp、EL表示式、jstl表示式

一、jsp技術 1.jsp指令碼和註釋 jsp指令碼: 1)<%java程式碼%> ----- 內部的java程式碼翻譯到service方法的內部 2)<%=java變數或表示式> ----- 會被翻譯成service方法內部out.print()

雲星資料---Scala實戰系列(精品版)】:Scala入門教程016-Scala實戰原始碼-Scala 判斷語句 、迴圈與java的比較

Scala 判斷語句 、迴圈與java的比較 package scala_learn.demo01_FunctionStatement /** * Created by liguohua on

Java入門基礎學習,成為一個Java程式設計師的必備知識

# 引言 眾所周知,Java是一種面向物件的程式語言。您可以在Windows作業系統上編寫Java原始碼,而在Linux作業系統上執行編譯後的位元組碼,而無需修改原始碼。 ##### 資料型別 Java 有 2 種資料型別,一種是基本資料型別,一種是引用型別。 基本資料型別用於儲存簡單型別的資料,