色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文看懂scala和java的區別

姚小熊27 ? 來源:網絡整理 ? 2018-03-07 18:30 ? 次閱讀

Scala簡介

Scala是一種有趣的語言。它一方面吸收繼承了多種語言中的優秀特性,一方面又沒有拋棄Java這個強大的平臺,它運行在Java虛擬機(JavaVirtualMachine)之上,輕松實現和豐富的Java類庫互聯互通。它既支持面向對象的編程方式,又支持函數式編程。它寫出的程序像動態語言一樣簡潔,但事實上它確是嚴格意義上的靜態語言。Scala就像一位武林中的集大成者,將過去幾十年計算機語言發展歷史中的精萃集于一身,化繁為簡,為程序員們提供了一種新的選擇。

Java簡介

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平***立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

Java的工作原理

一文看懂scala和java的區別

由四方面組成:

(1)Java編程語言

(2)Java類文件格式

(3)Java虛擬機

(4)Java應用程序接口

當編輯并運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟件(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類[22],通過調用類(這些類實現了JavaAPI)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中,然后再通過運行與操作系統平臺環境相對應的Java虛擬機來運行class文件,執行編譯產生的字節碼,調用class文件中實現的方法來滿足程序的JavaAPI調用。

scala和java的區別

1、對字符串的支持

scala采用三個雙引號“”“支持換行字符串,Java需要采用“+”進行字符串的連接。

2、方法返回值

scala的return是可選的,方法調用會自動返回最后求值的表達式。如果scala使用了return則需要顯示指定方法的返回值

Java需要顯示的采用return進行值的返回。

3、類和方法修飾符的默認值

scala默認是public,java默認是protected.

4、默認導入的類

scala默認導入java.lang包、scala包、scala.Predef類。

java默認導入java.lang包

5、接口

scala不支持接口interface,采用trait(類似于Java中的抽象類)。

java支持接口

6、類成員和單例對象

scala語言機制上支持單例對象和伴生對象,伴生類。伴生類和伴生對象需要在一個類文件中使用,在使用伴生對象時,系統隱式地調用apply生成一個伴生實例的對象。

java由類成員,單例對象需要自己實現。

7、方法參數

scala支持以函數作為參數,格式為deferror(msg:=》String)表示msg是輸入參數,輸出參數為String的函數。

java不支持。

scala相對于java存在的優勢

相比較與Java,在下覺得Scala最主要的有以下兩點優勢:

FP泛型支持

如果用多了Spring中大量的template接口,你就會覺得FP其實還是蠻好用的。

而這僅僅是FP好處的冰山一角。

函數其實就是一個input-》output(scala也是這么表示一個函數的),沒有任何副作用,與狀態無關,由于這種特性,所以函數式的編程范式在分布式領域有很多好處

對于函數式編程,我的知識實在是皮毛,但可以這么說,FP相對與OO有哪些優勢,Scala對于Java差不多就有哪些優勢。

正因為FP有如此多的優勢,所以Java8才引入了FP.從某種程度上來說,Java認可了Scala的做法。

類型系統支持

如果說Java是一種類型安全的語言,那么毫無疑問,Scala的類型更加安全,從某種程度上說,Scala的類型是圖靈完備的,而Java不是。我的一位好朋友在這方面研究的比較深(http://hongjiang.info/scala/),而我對與Scala的類型系統的理解,也還是皮毛。

正是以上這兩點大優勢,造成了Scala比Java更加安全,同時又具備靈活性,想象力。

其他語言層面上的優勢

在Java中,你是否有時很想繼承多個AbstractClass呢?對不起,Java只支持單繼承

在Scala中,你可以進行mixin(Java8也開始引入defaultmethod了呢)

在Java中,想要一個singleton?要么在staticblock中做,要么利用Enum的單例特性完成,或者其他更糾結的方法。

在Scala中,只要聲明為object,即為單例。

在Java中,想要延遲加載一個單例?doublecheck吧

在Scala中,只要在object中將變量修飾為lazy即可

在Java中,想要對集合進行一些操作?使用一層一層的for循環吧

在Scala中,使用collection的一些集合操作,即可獲得如寫SQL般的享受。

在Java中,在并發中想對Future進行回調?對不起,Future不是Listenable(無法支持回調),除非你使用額外的工具(如guava,spring)

在Scala中,本來就主張異步編程,future和promise的配合讓人非常愉快。

在Java中,要透明擴展一個第三方庫的類怎么辦?包裝,再加一層。

在Scala中,有強大的implicit機制讓你更優雅的做到這一點,同時還能保證類型安全(比起Ruby的monkeypatch,要安全得多)

Scala的表達力很強,相同功能的代碼,用Java和Scala的行數不可同日而語。

這些單單是語言層面上的優勢,除此之外,Scala還能無縫結合Java

盡管羅列了如此多的好處,但Scala有如下劣勢:

語法復雜,學習曲線非常高

國內Scala程序員很難找(目前Scala的影響力也在緩慢擴大,比如Scala社區中的明星Spark的流行也在慢慢拉動Scala的流行,如同rails之于ruby)

社區,生態還比較小,Scala風格的庫還非常少(但可以和Java很容易的斜街很多時候彌補了這一點)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2966

    瀏覽量

    104702
  • scala
    +關注

    關注

    0

    文章

    42

    瀏覽量

    6417
收藏 人收藏

    評論

    相關推薦

    5 月編程語言榜:C 再度暴漲,Scala 成功上位

    TIOBE 剛剛發布了 5 月編程語言排行榜。Scala 經過長時間的沉淀,本月終于進入了 TIOBE 榜單的前 20 名。Scala種 JVM 上運行的函數式編程語言,可與 Java
    發表于 05-08 13:17

    Scala入門到精通——第三十節 Scala腳本編程與結束語

    高級使用使用Scala進行Linux腳本編程結束語1. REPL命令行高級使用在使用REPL命令行時,有時候我們需要粘貼的代碼比較大,而普通的粘貼可能會些些問題,比如中文粘貼會出現亂碼、多行代碼粘貼
    發表于 06-26 17:44

    Java SE、Java EE、Java ME之間的區別

    本文把JAVA SE、JAVA EE、JAVA ME拿來做下區別,同時也分享下作者的些成果。
    發表于 07-11 08:31

    JAVA SE、JAVA EE和JAVA ME有什么區別

    本文把JAVA SE、JAVA EE、JAVAME拿來做下區別,同時也分享下作者的些成果。目前的Ja
    發表于 07-15 07:11

    scala的安裝步驟

    Scala基礎學習】:初識scala—001
    發表于 03-05 13:46

    張圖看懂ERP和MES的區別分析資料下載

    張圖看懂ERP和MES的區別
    發表于 01-04 15:44 ?14次下載

    scala語言主要應用領域詳解

    Scala門多范式的編程語言。本文開始介紹了Scala的概念,其次介紹了Scala的特性,最后闡述了scala語言的主要應用領域。
    的頭像 發表于 03-07 18:08 ?1.9w次閱讀

    看懂java如何寫接口給別人調用

    計算機語言分類有很多,如C、C++、C#、Java、Php、Python等等,她們有各自的特性及擅長的領域,但她們各自又不是全能的。在個稍微大型點的項目都會用到多種語言共同完成,那么這些編程語言
    的頭像 發表于 03-26 18:47 ?5.4w次閱讀

    簡單說明Scala語言與其優點

    Scala種有趣的語言,是種多范式的編程語言,其設計的初衷是要集成面向對象編程和函數式編程的各種特性。Scala運行在JVM上,兼容現有的J
    發表于 10-10 09:23 ?6680次閱讀

    看懂PCB助焊層跟阻焊層的區別與作用資料下載

    電子發燒友網為你提供看懂PCB助焊層跟阻焊層的區別與作用資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望
    發表于 04-21 08:44 ?32次下載
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>看懂</b>PCB助焊層跟阻焊層的<b class='flag-5'>區別</b>與作用資料下載

    看懂FPGA芯片投資框架.zip

    看懂FPGA芯片投資框架
    發表于 01-13 09:06 ?4次下載

    看懂PCB天線、FPC天線的特性.zip

    看懂PCB天線、FPC天線的特性
    發表于 03-01 15:37 ?33次下載

    javaweb和java有什么區別

    Javaweb和Java是兩個不同的概念,它們之間存在明顯的區別。下面將詳細介紹這兩者的區別,以滿足你關于詳盡、詳實、細致的要求。 Java
    的頭像 發表于 11-16 10:49 ?3560次閱讀

    看懂BLE Mesh

    看懂BLE Mesh
    的頭像 發表于 12-06 16:24 ?1474次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>看懂</b>BLE Mesh

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java是兩個不同的概念,它們在功能、用途和實現方式上存在區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: –
    的頭像 發表于 07-16 13:35 ?785次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么<b class='flag-5'>區別</b><b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么<b class='flag-5'>區別</b>
    主站蜘蛛池模板: 日本工口生肉全彩大全| 亚洲AV无码A片在线观看蜜桃| 天堂在线亚洲精品专区| 一个人的HD高清在线观看| gratis videos欧美最新| 国产人妻午夜无码AV天堂| 久久大香萑太香蕉av| 日本特黄的免费大片视频| 亚洲一区电影在线观看| 成年妇女免费播放| 久久亚洲AV成人无码动态图| 视频在线免费观看| 在线视频免费国产成人| 国产成人精品久久久久婷婷| 久久综合伊人| 乌克兰美女x?x?y?y| 99精品在线| 黄色大片aa| 色久久久综合88一本道| 2020年国产理论| 国产在线综合色视频| 日本50人群体交乱| 在线自拍综合亚洲欧美| 国产精品久久久精品a级小说| 免费一级特黄欧美大片久久网| 亚洲电影不卡| 成人国产精品日本在线| 久久综合色悠悠| 亚洲视频 在线观看| 国产成人精品综合在线| 牛牛在线精品视频| 一本道mw高清码二区三区| 国产成人精品精品欧美| 強姧伦久久久久久久久| 最近免费中文字幕MV在线视频3 | 久久AV喷吹AV高潮欧美| 色综合久久久久久| QVOD在线播放| 美女18黄| 长泽梓黑人初解禁bdd07| 国产午夜精品久久理论片|