1. 程式人生 > >Scala基礎—再談HelloWorld

Scala基礎—再談HelloWorld

package com.spark.scala.basics

/**
  * object作為scala的一個關鍵字,相當於Java中的public static class這樣的修飾符,也就是說object中的成員都是靜態的,所以這個例子中的main方法時靜態的,不需要類的例項就可以直接被JVM呼叫,而這正是作為JVM平臺上程式入口的必備條件。
* 那麼object是不是一個物件?
* 事實是objectscala中的靜態類,不是物件
* SparkMasterWorker的原始碼中發現其入口的main方法是在object中的。
*/
object HelloWorld {
  /**
* 1.defscala的關鍵字,所有用def定義的內容都是函式或者方法; * 2.這裡的main是方法,因為被def定義且不具有函式特徵; * 3.mainscala語言中規定的scala的應用程式入口,一個執行的scala應用程式只能有一個main方法; * 4,args:Array[String]其中args是引數名稱,Array[String]表明應用程式執行時候的傳入引數集合; * 5.Unit表明入口方法的型別是Unit,也就是說執行main方法後返回的是Unit型別; * 6.Unit相當於Java中的void型別; * 7."="表明main方法執行的結果是由誰來賦值的,或者說
main方法的方法體在"="的右面; * 8.方法體一般用"{}"來封裝,裡面有很多語句; * 9."{}"語句塊,預設情況下,最後一條語句的結果型別就是"{}"的返回型別; * 10.如果方法或者函式的型別或者返回型別是Unit的話,就可以直接把":Unit = "去掉,其他情況是不能去掉的! * 11.按照OS的原理,main入口方法都是執行在主執行緒中的,OS的執行分為Kernel SpaceUser Space,應用程式是執行在User Space中的, * 應用程式scala所在的程序一般都是透過OS Fork出來,被Fork出來的應用程式程序預設會有主執行緒,而main方法就是預設在主執行緒中的。
* @param args */ def main(args:Array[String]): Unit = { println("Hello World!") println
(args.length) } }