【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
- 即執行了下面的代碼
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的不變量,主要原因是:
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) 68 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、键盘输入语句)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sharding-Sphere 3.X今
- 下一篇: scala语言命名规范