Scala學習2——idea配置scala環境,scala初步學習
阿新 • • 發佈:2022-01-02
使用Java Decompiler反編譯位元組碼到.class原始檔可以看到引入Scala庫的邏輯。並且:
- scala原始檔中的
HelloScala
物件編譯後成為了一個類,但物件本身編譯後就是生成的另一個類HelloScala$
類的單例物件HelloScala$.MODULE$
,稱之為伴生物件。 HelloScala$
有一個main
例項方法,HelloScala
類的靜態方法通過這個單例物件轉調這個例項方法。完成列印。- 說明Scala比Java更面向物件。
使用idea編寫Scala專案
1.新建maven專案
2.安裝Scala外掛
3.右鍵單擊專案新增scala支援
4.可以建立scala類了
5.執行(idea有程式碼補全會舒服很多)
嘗試呼叫java類庫
System.out.println("hello scala from java")
scala刪除了static關鍵字更好的實現了面向物件,體現:
java中,static關鍵字的使用的一個舉例
public class Student{ private static String school = "std"; public void printInfo(){ System.out.println(Student.school) } }
但是這並不完全的”面向物件“,因為static關鍵字的存在,呼叫時,使用的是School這個類而不是一個物件
而在scala中,使用伴生物件與伴生類的關係,解決了這個問題,使得Scala更加得“面向物件”
class Student(name:String,age:Int) { def printInfo() : Unit = { println(name + "" + age + "" + Student.school) } } //引入伴生物件 object Student{ val school : String = "std" }
class Student是object Student的伴生類;object Student是class Student伴生物件。彼此相伴相生,互相之間可以訪問彼此的私有成員
測試一下
class Student(name:String,age:Int) { def printInfo() : Unit = { println(name + " " + age + " " + Student.school) } } //引入伴生物件 object Student{ val school : String = "std" def main(args: Array[String]): Unit = { val alice = new Student("alice",20) alice.printInfo() } }