Dart 要想飛的高基礎要打牢篇一(變量與操做符)

介紹

Dart是什麼?

Dart是一門新的編程語言,如同JAVA、PHP同樣,是爲了解決編寫應用程序中的一些實際問題而被造輪子發明出來的,而這個造輪子的人就是 Google。可能你們都熟悉Google 的另外一個輪子Golang,而對 Dart 聽聞甚少,其實Dart 的出生跟Go很相近,只是因爲它的星途比起Go來講有點坎坷,一直沒有被廣大開發者重視,相關的技術文章和應用比較匱乏,也就一直蒙塵在泛泛語言之中。前端

使用 Dart 能夠作什麼?

登陸 Dart 的官網,你能夠很清楚的看到 Dart 的創做者將 Dart 明確的分紅了三個方向: 移動開發、DartVM 命令行程序(Server 端)、瀏覽器(前端)。express

沒基礎沒關係張

對於沒有基礎的同窗也沒關係張,咱也是最近開始學。學習過 JavaScript 或者 Java/Kotlin 的人,在學習 Dart 上幾乎是沒什麼難度的,Dart 綜合了動態語言和靜態語言的特性,儘管Dart是強類型的,但類型聲明是可選的,由於Dart能夠推斷類型編程

本人博客數組

變量的聲明

注意:未初始化的變量的初始值爲 null,即便是數字類型的變量,最初也是 null,由於數字在Dart中都是對象。一切皆對象 null 也是對象 在線運行Dart代碼瀏覽器

var name = "zhangsan";		// 隱式聲明(變量的類型會自動推斷)

// 經過指定類型的方式
String name = "zhangsan";	// 顯示聲明
Object  name = "zhangsan";	// 通用對象聲明
dynamic name =  "zhangsan"; // 動態對象聲明,這裏dynamic和Object是等價的,兩者鈞可被賦值爲其餘類型的對象
final name = "zhangsan";  	// 不可變對象
...
複製代碼

修飾符 static final const

static

用於修飾成員變量,這個變量是屬於類的,而不是屬於對象的,除此以外沒有其餘別的含義了 static 修飾符的使用方式和 Java 相似。 static 變量直到運行期被使用時纔會實例化編程語言

final

用於修飾變量,表示單賦值(single-assignment),使用 final 修飾的變量必須進行初始化,一旦被賦值以後,不可以再次被賦值,不然編譯會報錯ide

final name = "zhangsan";       // 正確
name = "lisi";   			   // 錯誤
複製代碼

const

Dart 中 const 是用來修飾某個值的函數

var list =  const [1,2,2,3,4];  	// 正確
var list = [1,2,3,4];            	// 正確(使用const賦值聲明,const可省略) 

// const須要是編譯時常量
const time = new DateTime.now();	//錯誤
複製代碼

finalconst 的共同點:學習

聲明的類型能夠省略 - 初始化後不能再賦值 - 不能和var一塊兒使用ui

更多詳情請查閱 官方文檔

內置類型

Number 數值

intdoubleNumbers 的子類:

int testInt = 18; 		// int 整數值
複製代碼
double testDouble = 2.0 // 64-bit 雙精度浮點數 
複製代碼

String 字符串

  1. Dart 字符串是UTF-16編碼的字符序列,能夠使用單引號或者雙引號來建立字符串

  2. 能夠使用三個單引號或者雙引號建立多行字符串對象

  3. 能夠使用 r 前綴建立 "原始raw" 字符串

  4. 能夠在字符串中使用表達式: ${expression}, 若是表達式是一個標識符,能夠省略 {},若是表達式的結果爲一個對象,則 Dart 會調用對象的 toString() 函數來獲取一個字符串

String testString1 = 'string 1';
String testString2 = "string 2";
String testString3 = ''' String 1 String 3 ''';
String testString4 = r'String 4\n String 5';


class Expression{

  String getString() => 'getString';

  @override
  String toString() {
    return 'This is in getString class';
  }
}

void main() {
  var expression = new Expression();
  print(expression);
  print('String: ${expression.getString()}');   // getString
}
複製代碼

Boolean 布爾值

bool 這個類型有些特殊,在 Java 中未定義是 false,而在 Dart 裏 bool 對象未初始化的默認是 null

bool status;   
print(status);  // null
複製代碼

List 列表(數組)

  1. Dart 中能夠直接打印 List 包含 List 的元素,List 也是對象。Java 中直接打印 List 結果是地址值

  2. Dart 中 List 的下標索引和 Java 同樣從0開始

  3. Java 同樣支持泛型

    List<String> arrList;
    複製代碼
  4. 有增刪改查、支持倒序、自帶排序、洗牌,能夠使用 + 將 兩個 List 合併

    List a = [1, 2, 3];
    List b = [4, 5, 6];
    List c = a + b;
    print(c);  // [1, 2, 3, 4, 5, 6];
    複製代碼

Map 集合(字典)

Java 相似,映射是無序的鍵值對。經常使用的兩種定義方式

var test = Map();
var test2 = {
    "a": "b",
    "c": "d"
};
複製代碼

Map 的 keyvalue 類型是能夠指定的

var test3 = Map<int, String>();
test3[1] = "map 1";    // 正確
test3["2"] = "map 2";  // 錯誤,類型不正確
複製代碼

注意:key 必須是惟一的

Set 集合

Set 是沒有順序且不能重複的集合,因此不能經過索引去獲取值

var test = Set();
test.add(1);
test.add(1);  // 重複元素無效
複製代碼

Runes 符號字符

Runes 是 UTF-32 編碼的字符串。它能夠經過文字轉換成符號表情或者表明特定的文字

Runes runes = Runes('\u{1f605} \u6211');
var str = String.fromCharCodes(runes);  
print(str);  // 😅
複製代碼

Symbol 標識符

這個更不經常使用。Symbol 標識符,主要是反射用,如今 mirrors 模塊已經被移除

類型轉換與操做符

數值字符串 相互轉換的方法

字符串轉整數使用 int.parse()

String testString = '1234';
int testInt = int.parse(testString);
複製代碼

字符串轉浮點數使用 double.parse()

String testString = 123.123; 
double testDouble = double.parse(testString);
複製代碼

數值轉字符串使用 toString()

int testInt = 1234;
String testString = testInt.toString();
複製代碼

操做符

描述 運算符
後綴操做 expr++ expr-- () [] . ?.
前綴操做 -expr !expr ~expr ++expr --expr
乘除 * / % ~/
加減 + -
位移 << >>
按位與 &
按位異或 ^
按位或 |
類型操做 >= > <= < as is is!
想等 == !=
邏輯與 &&
邏輯或 ||
是否爲空 ??
三目運算 expr1 ? expr2 : expr3
級聯 ..
賦值 = *= /= ~/= %= += -= <<= >>= &= ^=

一些基本實例:

a++ 
a--
a + b 
a = b
c ? a : b
a is T    
    
if (n % i == 0 && d % i == 0)
if (n % i == 0 || d % i == 0)
    
2 + 3 == 5
2 - 3 == -1
2 * 3 == 6
5 / 2 == 2.5 // 結果是double類型
5 ~/ 2 == 2  // 結果是一個整數
5 % 2 == 1   // 餘數

2 == 2   // true
2 != 3   // true
3 > 2    // true
2 < 3    // true
3 >= 3   // true
2 <= 3   // true

b ??= value	// 若是b爲空,則將值分配給b;不然,b保持不變 
a *= 3	// 賦值且相乘 a = a * 3
   
.....  
複製代碼

結尾

本片文章到此結束,有喜歡個人文章的能夠關注我呦,寫的很差請諒解 。謝謝你們..

本人博客

相關文章
相關標籤/搜索