Java Scala數據類型與變量常量及類和對象超詳細講解
一、數據類型
簡記: 所有基礎類型基本與Java的包裝類等同,唯一有不同的Int(Scala),Integer(Java),註意這個就好
Unit, Null, Nothing, Any, AnyRef, AnyVal,這幾個除瞭Null乍一眼會有些陌生,不要怕,上總結:
首先是層級圖:
然後是表格:
補丁: 記住Any是所有類型的超類,也就是父類; Nothing是所有類型的子類; Null就是Null; None用在Map類型的value值類型裡
二、變量和常量
1.定義變量: var a = 10; 或 var a:Int = 10;
2.定義常量: val a = 10; 或 val a:Int = 10;
建議: scala的理念是簡潔優先,一般不會寫出返回類型,不過調試代碼時我的習慣還是寫出來,可以使用IDE自動生成
Scala會對每個變量屬性自動生成類似Java中的getter/setter方法,對每個常量生成getter方法
1.變量的getter/setter:
point為一個我們創建的對象,現在要對他的x屬性賦值,以及獲取他的x屬性
// setter() point.x_=(200) // getter() println("x = " + point.x)
2.常量的getter: 同上
建議:也可以顯示寫出來getter/setter方法,相當於自定義方法,可能更符合習慣
三、類和對象
謹記:Scala中類還是我們熟悉的class,但是對象object有2個概念,一個是類的引用我們可以稱之為類的對象;另一個是object對象,類似Java中的靜態工具類,先這麼記住,為避免混淆,下文在說對象時一律指Scala中特有的object,類生成的對象後文統一使用類的引用來指代
3.1 類
# 很傳統的方式, 調用時直接: val person = new Person() 或者 val person = new Persion // 無參構造可以不用寫小括號 class Person { val name = "Cry"; val age = "77"; } # 帶參數的類定義, 調用時: val person = new Person("Cry",777) class Person(xName: String, xAge: Int) { val name = xName val age = xAge var gender = 'm' } #自定義構造方法: class Person(xName: String, xAge: Int) { val name = xName val age = xAge var gender = 'm' def this(yName: String, yAge: Int, yGender: Char) { this(yName,yAge) gender = yGender } def sayName(): Unit = { println("Hello Scala..." + this.name) } }
3.2 對象
object中不可以傳參,當創建一個object時,如果傳入參數,那麼會自動尋找object中的相應參數個數的apply方法。
object Person{ var name = "Cry" def apply(name:String): Unit = { println("My name is " + name) } } # 調用: val person = Person("Cry777")
3.3 伴生類和伴生對象
在同一個Scala文件中, class名稱和Object名稱一樣時, 這個類叫做這個對象的伴生類, 這個對象叫做這個類的伴生對象, 他們之間可以互相訪問私有變量
3.4 Scala的main函數隻能寫在object裡
可以理解成main函數是靜態的,所以推導而出的結論
object Lesson_ClassAndObj { def main(args: Array[String]): Unit = { val person = new Person("zhangsan", 18) val person2 = new Person("lisi", 18, 'f') Person("zhaoliu") } }
總結
1.Scala object相當於java中的工具類, object中定義的全是靜態的, object不可以傳參,對象要傳參,使用apply()方法
2.Scala中定義變量用var, 自定義常量用val, 變量可變, 常量不可變. 變量和常量類型可以忽略不寫,會自動推斷
3.Scala中每行後面都會有分好自動推斷機制, 不用顯式寫出";"
4.建議在Scala中命名使用駝峰命名法
5.Scala類中可以傳參, 傳參一定要指定類型, 有瞭參數就有瞭默認的有參構造方法, 類中的屬性默認有getter/setter方法
6.類中重寫構造時, 構造中第一行必須先調用默認的構造. def this(…){…}
7.Scala中檔new class時, 類中除瞭方法不執行【除瞭構造方法】, 其他語句都執行
8.在同一個Scala文件中, class名稱和Object名稱一樣時, 這個類叫做這個對象的伴生類, 這個對象叫做這個類的伴生對象, 他們之間可以互相訪問私有變量
到此這篇關於Java Scala數據類型與變量常量及類和對象超詳細講解的文章就介紹到這瞭,更多相關Java Scala內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- java與scala數組及集合的基本操作對比
- 手把手帶你粗略瞭解Java–類和對象
- python Scala函數與訪問修辭符實例詳解
- 一文帶你瞭解Java中的Object類及類中方法
- java中類和對象的詳細介紹