Scala語言入門一(初識)

一、Scala概述

Scala是一門多范式的編程語言,一種類似java的編程語言,設(shè)計(jì)初衷是實(shí)現(xiàn)可伸縮的語言、并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。Scala把Erlang風(fēng)格的基于actor的并發(fā)帶進(jìn)了JVM。開發(fā)者可以利用Scala的actor模型在JVM上設(shè)計(jì)具伸縮性的并發(fā)應(yīng)用程序,它會自動獲得多核心處理器帶來的優(yōu)勢,而不必依照復(fù)雜的Java線程模型來編寫程序。Scala 運(yùn)行在Java虛擬機(jī)上,并兼容現(xiàn)有的Java程序。Scala 源代碼被編譯成Java字節(jié)碼,所以它可以運(yùn)行于JVM之上,并可以調(diào)用現(xiàn)有的Java類庫

二、Scala的安裝

Scala下載地址

三、Scala使用入門

1、交互式

scala> 1+3
res0: Int = 4

scala> println("Hello World")
Hello World

2、代碼方式

object Test {
  def main(args: Array[String]): Unit = {
    println("Hello World")
  }
}

四、Scala入門

1、基本數(shù)據(jù)類型

數(shù)據(jù)類型 描述
Byte 8位有符號補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -128 到 127
Short 16位有符號補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -32768 到 32767
Int 32位有符號補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -2147483648 到 2147483647
Long 64位有符號補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -9223372036854775808 到 9223372036854775807
Float 32 位, IEEE 754 標(biāo)準(zhǔn)的單精度浮點(diǎn)數(shù)
Double 64 位 IEEE 754 標(biāo)準(zhǔn)的雙精度浮點(diǎn)數(shù)
Char 16位無符號Unicode字符, 區(qū)間值為 U+0000 到 U+FFFF
String 字符串
Boolean true或false
Unit 表示無值,和其他語言中void等同。用作不返回任何結(jié)果的方法的結(jié)果類型。Unit只有一個實(shí)例值,寫成()。
Null null 或空引用
Nothing Nothing類型在Scala的類層級的最底端;它是任何其他類型的子類型
Any Any是所有其他類的超類
AnyRef AnyRef類是Scala里所有引用類(reference class)的基類

上表中列出的數(shù)據(jù)類型都是對象,也就是說scala沒有java中的原生類型。在scala是可以對數(shù)字等基礎(chǔ)類型調(diào)用方法的

2、變量

變量是一種使用方便的占位符,用于引用計(jì)算機(jī)內(nèi)存地址,變量創(chuàng)建后會占用一定的內(nèi)存空間?;谧兞康臄?shù)據(jù)類型,操作系統(tǒng)會進(jìn)行內(nèi)存分配并且決定什么將被儲存在保留內(nèi)存中。因此,通過給變量分配不同的數(shù)據(jù)類型,你可以在這些變量中存儲整數(shù),小數(shù)或者字母

a、變量聲明

在 Scala 中,使用關(guān)鍵詞 "var" 聲明變量,使用關(guān)鍵詞 "val" 聲明常量

# 以上定義了變量 myVar,我們可以修改它
var myVar : String = "Foo"

# 定義了常量 myVal,它是不能修改的。如果程序嘗試修改常量 myVal 的值,程序?qū)诰幾g時報(bào)錯
val myVal : String = "Foo"

b、變量類型聲明

變量的類型在變量名之后等號之前聲明。定義變量的類型的語法格式如下

var age: Int = [Initial  value]

val name: String = [Initial  value]

c、變量類型引用

在 Scala 中聲明變量和常量不一定要指明數(shù)據(jù)類型,在沒有指明數(shù)據(jù)類型的情況下,其數(shù)據(jù)類型是通過變量或常量的初始值推斷出來的。所以,如果在沒有指明數(shù)據(jù)類型的情況下聲明變量或常量必須要給出其初始值,
否則將會報(bào)錯

var myVar = 10;

val myVal = "Hello, Scala!";

d、Scala 多個變量聲明

val a,b = 100

3、訪問修飾符

Scala 訪問修飾符基本和Java的一樣,分別有:private,protected,public。如果沒有指定訪問修飾符,默認(rèn)情況下,Scala 對象的訪問級別都是 public。Scala 中的 private 限定符,比 Java 更嚴(yán)格,在嵌套類情況下,外層類甚至不能訪問被嵌套類的私有成員

a、私有(private)

用 private 關(guān)鍵字修飾,帶有此標(biāo)記的成員僅在包含了成員定義的類或?qū)ο髢?nèi)部可見,同樣的規(guī)則還適用內(nèi)部類

class Outer{
    class Inner{

    private def f(){println("f")}

    class InnerMost{
        f() // 正確
        }
    }

    (new Inner).f() //錯誤
}

(new Inner).f( ) 訪問不合法是因?yàn)?f 在 Inner 中被聲明為 private,而訪問不在類 Inner 之內(nèi)。但在 InnerMost 里訪問 f 就沒有問題的,因?yàn)檫@個訪問包含在 Inner 類之內(nèi)。Java中允許這兩種訪問,因?yàn)樗试S外部類訪問內(nèi)部類的私有成員

b、保護(hù)(protected)

在 scala 中,對保護(hù)(Protected)成員的訪問比 java 更嚴(yán)格一些。因?yàn)樗辉试S保護(hù)成員在定義了該成員的的類的子類中被訪問。而在java中,用protected關(guān)鍵字修飾的成員,除了定義了該成員的類的子類可以訪問,同一個包里的其他類也可以進(jìn)行訪問

package p{
class Super{
    protected def f() {println("f")}
    }
    class Sub extends Super{
        f()
    }
    class Other{
        (new Super).f() //錯誤
    }
}

c、公共(Public)

Scala中,如果沒有指定任何的修飾符,則默認(rèn)為 public。這樣的成員在任何地方都可以被訪問

class Outer {
   class Inner {
      def f() { println("f") }
      class InnerMost {
         f() // 正確
      }
   }
   (new Inner).f() // 正確因?yàn)?f() 是 public
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容