Dart(一)需要注意的點


Dart(一)需要注意的點

轉 https://www.jianshu.com/p/73640f27544f

Dart中,一切皆對象,包括變量、數字、函數等
    int a = 11; print(a==11);// true a = null; print(a==null);// true 
num、int和double
  • dart中沒有浮點型,int和double字如其面,num聲明的變量包含了int和double兩種類型。
  • 加減乘除的除法“/”,在java中,5/2=2,但是在dart中5/2=2.5,dart中有個特有符號“~/",表示的就是除后取整,跟java中的除法一樣,因此 5 ~/ 2 = 2。
  • 在java中,int a, 那么a=0;在dart中,int a,那么a=null。
  • java中的long,對應dart中的int
三目運算符 ? :
  • 在dart中可以使用?:運算符,如:
int a=1; int b = a>1?3:4; 
  • 但是還有個 ?? 運算符,如:
int a ; int b = a ?? 2;// 表示,如果a為空,則返回2 a ??= 2;//表示如果a為空,則將2賦值給a 
int a; print('a=$a');// a = null int b = a ?? 2; print('b=$b');// b = 2 a ??= 3; print('a=$a');// a = 3 
Dart中,布爾值 只有true是真 false是假 其他全不合法(與js不一樣)。
 
image.png
assert(bool)語句,方便使用

如果bool==true 正常往后執行 否則拋出異常。

int a = 1; int b = 2; assert(a>b);//拋異常 
變量的作用域

在Dart中,沒有類似於java中聲明變量作用域的關鍵字,如public,protected和private。如果一個標識符以下划線_開頭,則表示是私有的,否則表示公有的。

Dart是強類型語言
  • 可以使用int String等明確類型聲明變量,變量只能賦值該類型數據。
  • 可以使用var 聲明變量,第一次賦值時,dart根據賦值的數據自動推導其類型,比如var age = 1,那么age就是int類型了,就不能在賦值別的類型了,如再age = “12”,那么就報錯了。
dynamic與Object的區別
  • Dart中,一切皆對象,有對象就必然有類,所有的類(不包括Object自身)都直接或間接繼承Object,如果一個類沒有明顯去extends某一個類,默認繼承Object。Object代表的是一個類型,其他所有類都是Object的子孫類,所以可以用Object去接收任何類型對象,Dart在編譯期會進行類型檢查,父類的引用指向子類的對象,所以沒問題。Dart是強類型語言,這是靜態語言特性。但是用Object接收的參數,只能調用Object中的屬性和函數,超出Object的范圍會報錯,編譯期可以直接類型檢查出來。
  • dynamic,動態語言的特點之一就是編譯期不進行類型檢查而是運行時進行類型檢查,而Dart又想盡可能兼顧動態語言和靜態語言特性,因此dynamic就為此開了口子,使用dynamic聲明一個變量時,編譯器就不會進行類型檢查了,因此也可以用dynamic接收任何類型參數,調用你希望調用的方法,此時編譯器不會進行檢查,如果確實調用了一個不存在的方法,那么會調用dynamic的noSuchMethod方法。
java中有類型提升功能,dart中沒有。
  • java中字符串和數字相加,起到鏈接字符串作用;dart中則不能讓字符串與數字相加,比如將數字轉為字符串才能相加,其實就是字符串鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM