Scala學(xué)習(xí) 一(變量孵稽、數(shù)據(jù)類型许起、操作符和表達(dá)式)

Scala特點(diǎn)

面向?qū)ο缶幊?br> 面向函數(shù)式編程
靜態(tài)類型語(yǔ)言
動(dòng)態(tài)類型語(yǔ)言python(變量a的數(shù)據(jù)類型:運(yùn)行階段確定)和靜態(tài)類型語(yǔ)言java.scala(變量a的數(shù)據(jù)類型:編譯階段確定的)
基于JVM(aa.scala->aa.class(java))->JVM
為什么要學(xué)
(1) 速度快
(2) 優(yōu)雅
(3) 融入大數(shù)據(jù)生態(tài)圈,為了深入學(xué)習(xí)spark肛冶,scala語(yǔ)言
(4) Kafka也是用scala語(yǔ)言實(shí)現(xiàn)的

Scala定義變量

Var 變量名 = 初始化值
Var 變量名:數(shù)據(jù)類型 = 初始化值

注意:
(1) 定義變量的時(shí)候需要初始化
(2) 定義變量的時(shí)候可以不指定變量的數(shù)據(jù)類型街氢,系統(tǒng)會(huì)根據(jù)變
量的初始化值推斷變量的數(shù)據(jù)類型

Var a =1

Scala定義常量

Var 常量名 = 初始化值
Var 常量名:數(shù)據(jù)類型 = 初始化值

注意:
(1) val修飾的變量扯键,相當(dāng)于java中的final修飾的變量
(2) val修飾的變量睦袖,變量的類型是基本數(shù)據(jù)類型也就是值類型(相當(dāng)于java的基本數(shù)據(jù)類型,Int Double Boolean)荣刑,它的值是不可以修改的

val a = 10
a = 100//不可以

val修飾的變量馅笙,變量的類型是引用類型,引用不可變厉亏,引用的內(nèi)容可變

val a1 = Array(1,2,3)
val a2 = Array(4,5,6)
a1 = a2//不可以的董习,引用不變
a1(1) = 10 //可以的,引用的內(nèi)容可變

val修飾的變量爱只,還可以用lazy修飾(var不能用)皿淋,值是在需要使用的時(shí)候賦值


圖片.png

val ?var

在能使用val的時(shí)候,盡量使用val

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

(1)值類型(java中的基本數(shù)據(jù)類型)和引用類型
(2)值類型是類類型窝趣,沒(méi)有基本數(shù)據(jù)類型和包裝類之分

scala> 1 to 10
res5: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> 1.to(10)
res6: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
在這里1是int類的對(duì)象疯暑,可以調(diào)用to方法
圖片.png

這里AnyVal是值類型,AnyRef是引用類型哑舒,Unit與void很像

操作符

數(shù)學(xué)運(yùn)算符:+ - * / %
關(guān)系運(yùn)算符:> >= < <= !
邏輯運(yùn)算符:&& ||
位運(yùn)算符:& |^
比較對(duì)象:== 妇拯!=
(1)scala中的運(yùn)算符都是方法的重載,是方法的調(diào)用
(2)scala中沒(méi)有++ --運(yùn)算符洗鸵,可以用+= -=

scala> 1+1
res7: Int = 2

scala> 1.+(2)
res8: Int = 3

scala> a +=1
scala> a
res11: Int = 11

表達(dá)式

就是一個(gè)語(yǔ)句塊越锈,包含一個(gè)或者多條語(yǔ)句
特點(diǎn):
(1)表達(dá)式是有返回值的
(2)返回值是表達(dá)式中最后一條語(yǔ)句的執(zhí)行結(jié)果

條件表達(dá)式

含有if else的語(yǔ)句塊

scala> val res = if(a>0) 100 else -100
res: Int = 100

scala> val res = if(a>0) "cch" else -100
res: Any = cch

scala> val res = if(a>0) 100
res: AnyVal = 100

scala> val res = if(a<0) 100
res: AnyVal = ()

scala> val res = if(a>0) 100 else if(a>l0)-100 else 0
<console>:12: error: not found: value l0
       val res = if(a>0) 100 else if(a>l0)-100 else 0
                                       ^

scala> val a = 100
a: Int = 100

scala> val res = if(a>0) 100 else if(a>l0)-100 else 0
<console>:12: error: not found: value l0
       val res = if(a>0) 100 else if(a>l0)-100 else 0
                                       ^

scala> val res = if(a>0) 100 else if(a>l0) -100 else 0
<console>:12: error: not found: value l0
       val res = if(a>0) 100 else if(a>l0) -100 else 0
                                       ^

scala> val res = if(a>0) 100 else if(a<0) -100 else 0
res: Int = 100

塊表達(dá)式

scala> val res ={val a = 10
     | val b = 10
     | a+b}
res: Int = 20

scala> val res = {val a = 10
     | val b = 20}
scala> print(res)
()
scala> val res = {print("aaa")}
aaa
scala> print(res)
()

循環(huán)

for:

for(i <- 表達(dá)式、數(shù)組膘滨、集合)
圖片.png

嵌套循環(huán)非常簡(jiǎn)單甘凭,在一個(gè)for循環(huán)里寫(xiě)i的取值范圍,并包括j的取值范圍和內(nèi)循環(huán)的判斷語(yǔ)句吏祸。


圖片.png

for循環(huán)推導(dǎo)
目的:對(duì)a集合中的每一個(gè)數(shù)乘以10得到新集合对蒲,我所做的是利用推導(dǎo)公式,用原來(lái)的集合每一個(gè)元素做運(yùn)算贡翘,放到一個(gè)新的集合里去蹈矮,最后產(chǎn)生了一個(gè)新集合。


圖片.png

while

while(條件語(yǔ)句){表達(dá)式}

do while

do{表達(dá)式}while(條件語(yǔ)句)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸣驱,一起剝皮案震驚了整個(gè)濱河市泛鸟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踊东,老刑警劉巖北滥,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異闸翅,居然都是意外死亡再芋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)坚冀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)济赎,“玉大人,你說(shuō)我怎么就攤上這事记某∷狙担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵液南,是天一觀的道長(zhǎng)壳猜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)滑凉,這世上最難降的妖魔是什么统扳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任喘帚,我火速辦了婚禮,結(jié)果婚禮上咒钟,老公的妹妹穿的比我還像新娘啥辨。我一直安慰自己,他們只是感情好盯腌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布溉知。 她就那樣靜靜地躺著,像睡著了一般腕够。 火紅的嫁衣襯著肌膚如雪级乍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天帚湘,我揣著相機(jī)與錄音玫荣,去河邊找鬼。 笑死大诸,一個(gè)胖子當(dāng)著我的面吹牛捅厂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播资柔,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼焙贷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了贿堰?” 一聲冷哼從身側(cè)響起辙芍,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羹与,沒(méi)想到半個(gè)月后故硅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纵搁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年吃衅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腾誉。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡徘层,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妄辩,到底是詐尸還是另有隱情惑灵,我是刑警寧澤山上,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布眼耀,位于F島的核電站,受9級(jí)特大地震影響佩憾,放射性物質(zhì)發(fā)生泄漏哮伟。R本人自食惡果不足惜干花,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望楞黄。 院中可真熱鬧池凄,春花似錦、人聲如沸鬼廓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碎税。三九已至尤慰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雷蹂,已是汗流浹背伟端。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匪煌,地道東北人责蝠。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像萎庭,于是被迫代替她去往敵國(guó)和親霜医。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容