2021年大数据常用语言Scala(四):基础语法学习 声明变量
目錄
聲明變量
語(yǔ)法格式
在解釋器中定義一個(gè)變量
val和var變量
使用類(lèi)型推斷來(lái)定義變量
?惰性賦值
聲明變量
我們將來(lái)每一天編寫(xiě)scala程序都會(huì)定義變量。那scala語(yǔ)言如何定義變量呢?
語(yǔ)法格式
Java變量定義
int?a =?0;
在scala中,可以使用val或者var來(lái)定義變量,語(yǔ)法格式如下:
val/var?變量標(biāo)識(shí):變量類(lèi)型 =?初始值
其中
- val定義的是不可重新賦值的變量
- var定義的是可重新賦值的變量
[!NOTE]
- scala中定義變量類(lèi)型寫(xiě)在變量名后面
- scala的語(yǔ)句最后不需要添加分號(hào)
在解釋器中定義一個(gè)變量
示例:定義一個(gè)變量保存一個(gè)人的名字"tom"
步驟
打開(kāi)scala解釋器
定義一個(gè)字符串類(lèi)型的變量用來(lái)保存名字
參考代碼
scala>?val?name:String =?"tom"
name:?String =?tom
val和var變量
示例
給名字變量進(jìn)行重新賦值為Jim,觀察其運(yùn)行結(jié)果
參考代碼
scala>?name =?"Jim"
<console>:12:?error:?reassignment to valname =?"Jim"
示例
使用var重新定義變量來(lái)保存名字"tom",并嘗試重新賦值為Jim,觀察其運(yùn)行結(jié)果
參考代碼
scala>?var?name:String =?"tom"
name:?String =?tomscala>?name =?"Jim"
name:?String =?Jim
[!TIP]
優(yōu)先使用val定義變量,如果變量需要被重新賦值,才使用var
使用類(lèi)型推斷來(lái)定義變量
Scala的語(yǔ)法要比Java簡(jiǎn)潔,我們可以使用一種更簡(jiǎn)潔的方式來(lái)定義變量。
示例
使用更簡(jiǎn)潔的語(yǔ)法定義一個(gè)變量保存一個(gè)人的名字"tom"
參考代碼
scala>?val?name =?"tom"
name:?String =?tom
Scala可以自動(dòng)根據(jù)變量的值來(lái)自動(dòng)推斷變量的類(lèi)型,這樣編寫(xiě)代碼更加簡(jiǎn)潔。
?惰性賦值
在企業(yè)的大數(shù)據(jù)開(kāi)發(fā)中,有時(shí)候會(huì)編寫(xiě)非常復(fù)雜的SQL語(yǔ)句,這些SQL語(yǔ)句可能有幾百行甚至上千行。這些SQL語(yǔ)句,如果直接加載到JVM中,會(huì)有很大的內(nèi)存開(kāi)銷(xiāo)。如何解決?
當(dāng)有一些變量保存的數(shù)據(jù)較大時(shí),但是不需要馬上加載到JVM內(nèi)存。可以使用惰性賦值來(lái)提高效率。
語(yǔ)法格式:
lazy?val/var?變量名 =?表達(dá)式
示例
在程序中需要執(zhí)行一條以下復(fù)雜的SQL語(yǔ)句,我們希望只有用到這個(gè)SQL語(yǔ)句才加載它。
"""insert overwrite table adm.itcast_adm_personasselecta.user_id,a.user_name,a.user_sex,a.user_birthday,a.user_age,a.constellation,a.province,a.city,a.city_level,a.hex_mail,a.op_mail,a.hex_phone,a.fore_phone,a.figure_model,a.stature_model,b.first_order_time,b.last_order_time,...d.month1_hour025_cnt,d.month1_hour627_cnt,d.month1_hour829_cnt,d.month1_hour10212_cnt,d.month1_hour13214_cnt,d.month1_hour15217_cnt,d.month1_hour18219_cnt,d.month1_hour20221_cnt,d.month1_hour22223_cntfrom gdm.itcast_gdm_user_basic aleft join gdm.itcast_gdm_user_consume_order b on a.user_id=b.user_idleft join gdm.itcast_gdm_user_buy_category c on a.user_id=c.user_idleft join gdm.itcast_gdm_user_visit d on a.user_id=d.user_id;"""
參考代碼
scala>?lazy?val?sql =?"""insert overwrite table adm.itcast_adm_personas| ????select| ????a.user_id,
....| ????left join gdm.itcast_gdm_user_buy_category c on a.user_id=c.user_id| ????left join gdm.itcast_gdm_user_visit d on a.user_id=d.user_id;"""
sql:?String =?<lazy>
總結(jié)
以上是生活随笔為你收集整理的2021年大数据常用语言Scala(四):基础语法学习 声明变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2021年大数据常用语言Scala(三)
- 下一篇: 2021年大数据常用语言Scala(五)