日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Scala与Java差异(一)之基础语法

發布時間:2023/12/3 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala与Java差异(一)之基础语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Scala解釋器的使用

(1)REPL

Read(取值)-> Evaluation(求值)-> Print(打印)-> Loop(循環)。

scala解釋器也被稱為REPL,會快速編譯scala代碼為字節碼,然后交給JVM來執行。
(2)計算表達式

在scala>命令行內,鍵入scala代碼,解釋器會直接返回結果給你。如果你沒有指定變量來存放這個值,那么值默認的名稱為res,而且會顯示結果的數據類型,比如Int、Double、String等等。
例如,輸入1 + 1,會看到res0: Int = 2

(3)內置變量

在后面可以繼續使用res這個變量,以及它存放的值。
例如,2.0 * res0,返回res1: Double = 4.0
例如,"Hi, " + res0,返回res2: String = Hi, 2

(4)自動補全

在scala>命令行內,可以使用Tab鍵進行自動補全。
例如,輸入res2.to,敲擊Tab鍵,解釋器會顯示出以下選項,toCharArray,toLowerCase,toString,toUpperCase。因為此時無法判定你需要補全的是哪一個,因此會提供給你所有的選項。
例如,輸入res2.toU,敲擊Tab鍵,直接會給你補全為res2.toUpperCase。

?

二、變量聲明

(1)聲明val變量

可以聲明val變量來存放表達式的計算結果。

例如,val result = 1 + 1

后續這些常量是可以繼續使用的,例如,2 * result
但是常量聲明后,是無法改變它的值的,例如,result = 1,會返回error: reassignment to val的錯誤信息。

(2)聲明var變量

如果要聲明值可以改變的引用,可以使用var變量。
例如,val myresult = 1,myresult = 2
但是在scala程序中,通常建議使用val,也就是常量,因此比如類似于spark的大型復雜系統中,需要大量的網絡傳輸數據,如果使用var,可能會擔心值被錯誤的更改。
在Java的大型復雜系統的設計和開發中,也使用了類似的特性,我們通常會將傳遞給其他模塊 / 組件 / 服務的對象,設計成不可變類(Immutable Class)。在里面也會使用java的常量定義,比如final,阻止變量的值被改變。從而提高系統的健壯性(robust,魯棒性),和安全性。

(3)指定類型

無論聲明val變量,還是聲明var變量,都可以手動指定其類型,如果不指定的話,scala會自動根據值,進行類型的推斷。

例如,val name: String = null

例如,val name: Any = "leo"

聲明多個變量:可以將多個變量放在一起進行聲明。

例如,val name1, name2:String = null

例如,val num1, num2 = 100

?

三、數據類型與操作符

(1)基本數據類型

Byte、Char、Short、Int、Long、Float、Double、Boolean。

乍一看與Java的基本數據類型的包裝類型相同,但是scala沒有基本數據類型與包裝類型的概念,統一都是類。scala自己會負責基本數據類型和引用類型的轉換操作。

使用以上類型,直接就可以調用大量的函數,例如,1.toString(),1.to(10)。

(2)類型的加強版類型

scala使用很多加強類給數據類型增加了上百種增強的功能或函數。

例如,String類通過StringOps類增強了大量的函數,"Hello".intersect(" World")。

例如,Scala還提供了RichInt、RichDouble、RichChar等類型,RichInt就提供了to函數,1.to(10),此處Int先隱式轉換為RichInt,然后再調用其to函數

(3)基本操作符

scala的算術操作符與java的算術操作符也沒有什么區別,比如+、-、*、/、%等,以及&、|、^、>>、<<等。

但是,在scala中,這些操作符其實是數據類型的函數,比如1 + 1,可以寫做1.+(1)

例如,1.to(10),又可以寫做1 to 10

scala中沒有提供++、--操作符,我們只能使用+和-,比如counter = 1,counter++是錯誤的,必須寫做counter += 1.

?

四、函數調用與apply()函數

(1)函數調用方式

在scala中,函數調用也很簡單。

例如,import scala.math._,sqrt(2),pow(2, 4),min(3, Pi)。

不同的一點是,如果調用函數時,不需要傳遞參數,則scala允許調用函數時省略括號的,例如,"Hello World".distinct

(2)apply函數

Scala中的apply函數是非常特殊的一種函數,在Scala的object中,可以聲明apply函數。而使用“類名()”的形式,其實就是“類名.apply()”的一種縮寫。通常使用這種方式來構造類的對象,而不是使用“new 類名()”的方式。

例如,"Hello World"(6),因為在StringOps類中有def apply(n: Int): Char的函數定義,所以"Hello World"(6),實際上是"Hello World".apply(6)的縮寫。

例如,Array(1, 2, 3, 4),實際上是用Array object的apply()函數來創建Array類的實例,也就是一個數組。

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的Scala与Java差异(一)之基础语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。