2021年大数据常用语言Scala(四):基础语法学习 声明变量
目錄
聲明變量
語法格式
在解釋器中定義一個變量
val和var變量
使用類型推斷來定義變量
?惰性賦值
聲明變量
我們將來每一天編寫scala程序都會定義變量。那scala語言如何定義變量呢?
語法格式
Java變量定義
int?a =?0;
在scala中,可以使用val或者var來定義變量,語法格式如下:
val/var?變量標(biāo)識:變量類型 =?初始值
其中
- val定義的是不可重新賦值的變量
- var定義的是可重新賦值的變量
[!NOTE]
- scala中定義變量類型寫在變量名后面
- scala的語句最后不需要添加分號
在解釋器中定義一個變量
示例:定義一個變量保存一個人的名字"tom"
步驟
打開scala解釋器
定義一個字符串類型的變量用來保存名字
參考代碼
scala>?val?name:String =?"tom"
name:?String =?tom
val和var變量
示例
給名字變量進(jìn)行重新賦值為Jim,觀察其運行結(jié)果
參考代碼
scala>?name =?"Jim"
<console>:12:?error:?reassignment to valname =?"Jim"
示例
使用var重新定義變量來保存名字"tom",并嘗試重新賦值為Jim,觀察其運行結(jié)果
參考代碼
scala>?var?name:String =?"tom"
name:?String =?tomscala>?name =?"Jim"
name:?String =?Jim
[!TIP]
優(yōu)先使用val定義變量,如果變量需要被重新賦值,才使用var
使用類型推斷來定義變量
Scala的語法要比Java簡潔,我們可以使用一種更簡潔的方式來定義變量。
示例
使用更簡潔的語法定義一個變量保存一個人的名字"tom"
參考代碼
scala>?val?name =?"tom"
name:?String =?tom
Scala可以自動根據(jù)變量的值來自動推斷變量的類型,這樣編寫代碼更加簡潔。
?惰性賦值
在企業(yè)的大數(shù)據(jù)開發(fā)中,有時候會編寫非常復(fù)雜的SQL語句,這些SQL語句可能有幾百行甚至上千行。這些SQL語句,如果直接加載到JVM中,會有很大的內(nèi)存開銷。如何解決?
當(dāng)有一些變量保存的數(shù)據(jù)較大時,但是不需要馬上加載到JVM內(nèi)存。可以使用惰性賦值來提高效率。
語法格式:
lazy?val/var?變量名 =?表達(dá)式
示例
在程序中需要執(zhí)行一條以下復(fù)雜的SQL語句,我們希望只有用到這個SQL語句才加載它。
"""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(四):基础语法学习 声明变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据常用语言Scala(三)
- 下一篇: 2021年大数据常用语言Scala(五)