日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句)

發布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1 簡介
  • 2 特點
  • 3 函數式編程
  • 3 為什么要學習Scala
  • 4 第一個程序
  • 5 使用IDEA創建Scala項目
  • 6 Scala的變量
    • 6.1 var變量
    • 6.2 val變量(推薦)
  • 7 Scala的基本數據類型與操作
    • 7.1 數據類型
    • 7.2 操作符
  • 8 range
  • 9 鍵盤輸入語句

1 簡介

  • Scala是一門多范式的編程語言
  • Scala運行在Java虛擬機上,并兼容現有的Java程序
  • Scala源代碼被編譯成Java字節碼,所以它可以運行在JVM之上,并可以調用現有的Java類庫
  • Scala函數式編程更適合用于Map/Reduce和大數據模型,它摒棄了數據與狀態的計算,著眼于函數本身
  • Spark、Flink等都是采用Scala開發的

2 特點

Scala運行在Java虛擬機之上,輕松實現和豐富的Java類庫互聯互通,既支持面向對象的編程方式,又支持函數式編程,屬于靜態語言(但是像動態語言一樣簡介)

總結起來,Scala具有4個核心特點:

  • OOP v.s. OFP:面向對象和函數式
  • Static Type:靜態類型
  • Expansibility:擴展性
  • Concurrency:并發性

3 函數式編程

1、特點

  • 函數是一等公民
  • 以表達式為中心
  • 無副作用
  • 不修改狀態
  • 引用透明

2、 優勢

  • 代碼簡潔,開發速度快
  • 接近自然語言,易于理解
  • 易于代碼管理
  • 適合并發編程
  • 適用于熱開發

3、 總結

純粹的函數式編程語言編寫的函數沒有變量,因此,任意一個函數只要輸入確定,輸出就是確定的,這種純函數我們稱之為沒有副作用。而允許使用變量的程序設計語言,由于函數的內部變量狀態不確定,同樣的輸入可能得到不同的輸出,這種函數是有副作用的

3 為什么要學習Scala

1、API優雅

2、速度快:Scala語言表達能力強,開發速度快;Scala是靜態編譯的,和JRuby和Groovy比起來速度快很多

3、能融合到Hadoop生態圈:Spark不能夠替代Hadoop,但是可以完善Hadoop生態,但是Java做出來的API太丑

4 第一個程序

//1、object表示一個伴生對象,簡單理解為一個對象 //2、a就是對象的名字,它底層真正對應的類名是a$ // 對象是a$類型的一個靜態對象MODULE$ //3、當我們編寫一個object對象時,在底層會生成兩個.class文件,分別為a和a$ object a { //4、def表示一個方法,是一個關鍵字 //5、main表示方法名稱 //6、args: Array[String]表示形參,scala的特點是參數名在前面,類型在后面 //7、Array[String]表示類型是一個數組 //8、: Unit=表示該函數的返回值為空def main(args: Array[String]): Unit = {print("hello world!");} }

Scala在運行時的流程如下:

  • 先從 a 的 main 開始執行
  • 然后調用 a$ 類的方法 a$ .MODULE$.main
  • 即執行了下面的代碼
public void main(String[]args){Predef..MODULE$.print("hello world!");}

5 使用IDEA創建Scala項目

1、創建一個普通的maven項目

2、在main目錄下創建一個scala目錄,并標記為source root目錄

3、加入scala框架(第一次配置選擇configure,選擇本機的scala目錄)


4、選擇創建scala項目(選擇object)

6 Scala的變量

6.1 var變量

我們在Scala解釋器輸入var i發現它能夠自己識別變量的類型

var變量是可以改變的

完整定義格式:var index1 : Int=1

6.2 val變量(推薦)

val變量是不可變的,相當于java中的常量

例如:

var變量是不好的存在,在Scala中盡可能使用val的不變量,主要原因是:

  • val的不可變有助于清理頭緒,但是相對的會付出一部分性能代價
  • 使用var,可能會擔心值被錯誤的更改
  • 使用val而不是var的第二點好處是他能更好支持等效推論
  • 7 Scala的基本數據類型與操作

    7.1 數據類型

    Scala擁有和java一樣的數據類型,和java的數據類型內存布局、精度完全一致

    • Byte、Char、Short、Int、Long、Float、Double和Boolean。
    • Unit:表示無值,與void相同
    • Null:表示空值或空引用,可以賦值給任意引用類型(AnyRef),但是不能賦值給值類型(如:Int、Float、Char、Boolean等)
    • Nothing:最底端,表示沒有值
    • Any:表示所有類型的超類,任何實例都屬于Any類型
      例如:person p = new person();any是new person()的超類
    • AnyRef:表示所有類型的超類

    在Scala中,這些類型都是“類”,并且都是包“scala”的成員,比如,Int的全名是scala.Int。對于字符串,Scala用java.lang.String類來表示字符串。

    例如:

    7.2 操作符

    在Scala中,可以使用加(+)、減(-) 、乘(*) 、除(/) 、余數(%)等操作符,而且,這些操作符就是方法。例如,5 + 3和(5).+(3)是等價的,也就是說:

    a 方法 b a.方法(b)

    需要注意的是和Java不同,在Scala中并沒有提供++和–操作符,當需要遞增和遞減時,可以采用如下方式表達:

    scala> var i = 5; i: Int = 5 scala> i += 1 //將i遞增 scala> println(i) 6

    8 range

    在執行for循環時,我們經常會用到數值序列,比如,i的值從1循環到5,這時就可以采用Range來實現。

    在創建Range時,需要給出區間的起點和終點以及步長(默認步長為1)。下面通過幾個實例來介紹:

    1、創建一個從1到5的數值序列,包含區間終點5,步長為1

    scala> 1 to 5 res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)

    之前我們已經介紹過,在Scala中允許對“字面量”直接執行方法,所以,上面的代碼,也可以用下面的代碼來實現:

    scala> 1.to(5) res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)

    2、創建一個從1到5的數值序列,不包含區間終點5,步長為1

    scala> 1 until 5 res1: scala.collection.immutable.Range = Range(1, 2, 3, 4)

    3、創建一個從1到10的數值序列,包含區間終點10,步長為2

    scala> 1 to 10 by 2 res2: scala.collection.immutable.Range = Range(1, 3, 5, 7, 9)

    9 鍵盤輸入語句

    例子:從控制臺接收用戶信息(姓名,年齡,薪水)

    import scala.io.StdInobject TestScala {def main(args: Array[String]): Unit = {println("請輸入姓名")val name = StdIn.readLine()println("請輸入年齡")val age = StdIn.readInt()println("請輸入薪水")val sal = StdIn.readDouble()printf("name=%s age=%d sal=%f",name,age,sal)} }

    總結

    以上是生活随笔為你收集整理的【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。