亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java Scala數(shù)據(jù)類型與變量常量及類和對(duì)象超詳細(xì)講解

 更新時(shí)間:2022年12月14日 11:41:24   作者:Cry丶  
本文內(nèi)容主要分為3節(jié),依次講解:Scala的數(shù)據(jù)類型有哪些? 變量常量如何使用? 類和對(duì)象如何理解? 受限于博主的大腦容量,大概是無法做到事無巨細(xì)的,不過其實(shí)也沒必要那么"細(xì)",抓住主要脈絡(luò),加上大量的練習(xí),融會(huì)貫通只不過是時(shí)間的問題

一、數(shù)據(jù)類型

簡(jiǎn)記: 所有基礎(chǔ)類型基本與Java的包裝類等同,唯一有不同的Int(Scala),Integer(Java),注意這個(gè)就好

Unit, Null, Nothing, Any, AnyRef, AnyVal,這幾個(gè)除了Null乍一眼會(huì)有些陌生,不要怕,上總結(jié):

首先是層級(jí)圖:

然后是表格:

補(bǔ)丁: 記住Any是所有類型的超類,也就是父類; Nothing是所有類型的子類; Null就是Null; None用在Map類型的value值類型里

二、變量和常量

1.定義變量: var a = 10; 或 var a:Int = 10;

2.定義常量: val a = 10; 或 val a:Int = 10;

建議: scala的理念是簡(jiǎn)潔優(yōu)先,一般不會(huì)寫出返回類型,不過調(diào)試代碼時(shí)我的習(xí)慣還是寫出來,可以使用IDE自動(dòng)生成

Scala會(huì)對(duì)每個(gè)變量屬性自動(dòng)生成類似Java中的getter/setter方法,對(duì)每個(gè)常量生成getter方法

1.變量的getter/setter:

point為一個(gè)我們創(chuàng)建的對(duì)象,現(xiàn)在要對(duì)他的x屬性賦值,以及獲取他的x屬性

 // setter()
 point.x_=(200)
 // getter()
 println("x = " + point.x)

2.常量的getter: 同上

建議:也可以顯示寫出來getter/setter方法,相當(dāng)于自定義方法,可能更符合習(xí)慣

三、類和對(duì)象

謹(jǐn)記:Scala中類還是我們熟悉的class,但是對(duì)象object有2個(gè)概念,一個(gè)是類的引用我們可以稱之為類的對(duì)象;另一個(gè)是object對(duì)象,類似Java中的靜態(tài)工具類,先這么記住,為避免混淆,下文在說對(duì)象時(shí)一律指Scala中特有的object,類生成的對(duì)象后文統(tǒng)一使用類的引用來指代

3.1 類

# 很傳統(tǒng)的方式, 調(diào)用時(shí)直接: val person = new Person() 
或者 val person = new Persion  // 無參構(gòu)造可以不用寫小括號(hào)
class Person {
  val name = "Cry";
  val age = "77";
}
# 帶參數(shù)的類定義, 調(diào)用時(shí): val person = new Person("Cry",777)
class Person(xName: String, xAge: Int) {
  val name = xName
  val age = xAge
  var gender = 'm'
}
#自定義構(gòu)造方法: 
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 對(duì)象

object中不可以傳參,當(dāng)創(chuàng)建一個(gè)object時(shí),如果傳入?yún)?shù),那么會(huì)自動(dòng)尋找object中的相應(yīng)參數(shù)個(gè)數(shù)的apply方法。

object Person{
  var name = "Cry"
  def apply(name:String): Unit = {
    println("My name is " + name)
  }
}
# 調(diào)用: val person = Person("Cry777")

3.3 伴生類和伴生對(duì)象

在同一個(gè)Scala文件中, class名稱和Object名稱一樣時(shí), 這個(gè)類叫做這個(gè)對(duì)象的伴生類, 這個(gè)對(duì)象叫做這個(gè)類的伴生對(duì)象, 他們之間可以互相訪問私有變量

3.4 Scala的main函數(shù)只能寫在object里

可以理解成main函數(shù)是靜態(tài)的,所以推導(dǎo)而出的結(jié)論

object Lesson_ClassAndObj {
  def main(args: Array[String]): Unit = {
    val person = new Person("zhangsan", 18)
    val person2 = new Person("lisi", 18, 'f')
    Person("zhaoliu")
  }
}

總結(jié)

1.Scala object相當(dāng)于java中的工具類, object中定義的全是靜態(tài)的, object不可以傳參,對(duì)象要傳參,使用apply()方法

2.Scala中定義變量用var, 自定義常量用val, 變量可變, 常量不可變. 變量和常量類型可以忽略不寫,會(huì)自動(dòng)推斷

3.Scala中每行后面都會(huì)有分好自動(dòng)推斷機(jī)制, 不用顯式寫出";"

4.建議在Scala中命名使用駝峰命名法

5.Scala類中可以傳參, 傳參一定要指定類型, 有了參數(shù)就有了默認(rèn)的有參構(gòu)造方法, 類中的屬性默認(rèn)有g(shù)etter/setter方法

6.類中重寫構(gòu)造時(shí), 構(gòu)造中第一行必須先調(diào)用默認(rèn)的構(gòu)造. def this(…){…}

7.Scala中檔new class時(shí), 類中除了方法不執(zhí)行【除了構(gòu)造方法】, 其他語句都執(zhí)行

8.在同一個(gè)Scala文件中, class名稱和Object名稱一樣時(shí), 這個(gè)類叫做這個(gè)對(duì)象的伴生類, 這個(gè)對(duì)象叫做這個(gè)類的伴生對(duì)象, 他們之間可以互相訪問私有變量

到此這篇關(guān)于Java Scala數(shù)據(jù)類型與變量常量及類和對(duì)象超詳細(xì)講解的文章就介紹到這了,更多相關(guān)Java Scala內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis 中使用 Mapper 簡(jiǎn)化代碼的方法

    MyBatis 中使用 Mapper 簡(jiǎn)化代碼的方法

    這篇文章主要介紹了MyBatis 中使用 Mapper 簡(jiǎn)化代碼的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Springboot Activemq整合過程代碼圖解

    Springboot Activemq整合過程代碼圖解

    這篇文章主要介紹了Springboot Activemq整合過程代碼圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • springboot項(xiàng)目引入外部jar包的詳細(xì)圖文教程

    springboot項(xiàng)目引入外部jar包的詳細(xì)圖文教程

    在項(xiàng)目中有時(shí)候需要引入外部jar包,啟動(dòng)運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于springboot項(xiàng)目引入外部jar包的詳細(xì)圖文教程,需要的朋友可以參考下
    2023-09-09
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之二手書商城系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之二手書商城系統(tǒng)的實(shí)現(xiàn)

    這是一個(gè)使用了java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP開發(fā)的二手書商城系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有在線書城該有的所有功能,感興趣的朋友快來看看吧
    2022-01-01
  • springboot引入druid解析sql的過程

    springboot引入druid解析sql的過程

    在開發(fā)中,有時(shí)我們可能會(huì)需要獲取SQL中的表名,那么因?yàn)椴煌臄?shù)據(jù)源類型SQL會(huì)存在部分差異,那么我們就可以使用alibaba 的druid包實(shí)現(xiàn)不同的數(shù)據(jù)源類型的sql解析,需要的朋友可以參考下
    2023-08-08
  • java中的Arrays這個(gè)工具類你真的會(huì)用嗎(一文秒懂)

    java中的Arrays這個(gè)工具類你真的會(huì)用嗎(一文秒懂)

    這篇文章主要介紹了java中的Arrays這個(gè)工具類你真的會(huì)用嗎,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot跨域Access-Control-Allow-Origin實(shí)現(xiàn)解析

    SpringBoot跨域Access-Control-Allow-Origin實(shí)現(xiàn)解析

    這篇文章主要介紹了SpringBoot跨域Access-Control-Allow-Origin實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 非常全面的Java?SpringBoot點(diǎn)贊功能實(shí)現(xiàn)

    非常全面的Java?SpringBoot點(diǎn)贊功能實(shí)現(xiàn)

    但是這些功能再項(xiàng)目中是高頻出現(xiàn)的,如果直接操作數(shù)據(jù)庫的話,對(duì)數(shù)據(jù)庫壓力太大。那遇到這個(gè)問題怎么解決?這篇文章主要給大家介紹了關(guān)于Java?SpringBoot點(diǎn)贊功能實(shí)現(xiàn)?的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Java中@Accessors注解的具體使用

    Java中@Accessors注解的具體使用

    @Accessors是Lombok提供的注解之一,用于自動(dòng)生成getter和setter方法,本文主要介紹了@Accessors注解的常用屬性,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 淺談Java中BIO、NIO和AIO的區(qū)別和應(yīng)用場(chǎng)景

    淺談Java中BIO、NIO和AIO的區(qū)別和應(yīng)用場(chǎng)景

    這篇文章主要介紹了Java中BIO、NIO和AIO的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論