Spark視訊王家林第3課:在IDE下開發第一個Scala程式純傻瓜式徹底透徹解析
內容:
1.控制結構 2.Scala的基礎語法
/**
* FileName: HelloScala
* Author: hadoop
* Email: [email protected]
* Date: 18-11-5 上午9:32
* Description:
*/
object HelloScala {
def main(args: Array[String]): Unit = {
println("Hello Scala!!!")
println(args.length)
}
}
一、控制結構
1.object作為Scala中的一個關鍵字,相當於Java中的public static class這樣的修飾符,也就是說object中的成員是靜態的成員變數,所以main方法是靜態的,不需要類的例項就可以被虛擬機器呼叫,這正式作為JVM入口函式的必備條件。 2.疑問:object是不是一個物件(此時你一定是從Java的角度考慮的,但事實是Scala中的靜態類,不是物件) 3.從Spark的Master和Worker的原始碼中可以發現其入口是main方法是在object中的
二、Scala的基礎語法
* 1.def 是scala的關鍵字,所有的def定義的內容都是函式或者方法 * 2.main是方法,因為被def定義且不具有函式的特點 * 3.main是SCala語言中規定的scala的運用程式的入口,一個執行的scala運用程式只能有一個main方法 * 4.args: Array[String],其中args是引數名稱,Array[String]表明程式執行時候傳入引數的型別 * 5.: Unit表明main入口方法的型別是Unit,執行main方法後返回Unit * 6.Unit相當於Java中的void型別 * 7.=表明main方法執行的結果是由誰來賦值的,或者說main方法的方法體在=右面 * 8.方法體一般用{}來封裝,裡面可以有很多條語句 * 9.{}語句塊預設情況下最後一條語句的結果型別就是{}的返回型別 * 10.跟蹤println原始碼收穫發現scala的println的IO操作是藉助Java的IO操作,也就是說scala呼叫了Java * 11.如果方法或者函式的型別或者返回型別是Unit型別,就可以把”: Unit =“去掉,其他非此方法都不能去掉 * 12.關於println打印出內容到控制檯,底層接住了Java IO的功能,一個事實是scala經常會用Java的實現來縮短開發時間,比如說來操作(BD,NoSQL(Cassadra,Hbase等))的JDBC,在例如關於執行緒Thread的操作,scala往往也會使用Java中的Thread; * 13.按照當今OS的原理,程式的main方法都是執行在主執行緒中的,OS的執行分為Kernel Space和user Space,執行程式是執行在User Space中的,運用程式scala所在的程序一般都是通過OS Fork出來的,被Fork出來的運用程式程序預設會有主執行緒 ,而我們的main方法就是預設在主執行緒中的