前言

接下来一段时间自己可能要慢慢接触Flutter,Flutter采用Dart语言开发。因为前些时间开发过微信小程序,
对于我这种不怎么接触前端语言的人来说,学习起来还是需要花费一定的时间和精力。而Flutter开发的话
对于原生开发来说比较容易接受。

介绍

Dart在静态语法方面和Java非常相似,如类型定义、函数声明、泛型等。
而在动态特性方面又和JavaScript很像,如函数式特性、异步支持等。
总的来说,个人理解Dart有以下几点好处
1、Dart可基于AOT(Ahead Of Time)编译,字面意思是提前编译,运行性能高。
2、Dart也可以基于JIT(Just In Time)编译,字面意思是即时编译,编译快速、支持热加载。
3、Dart语法结合了Java语法特点,对于Java程序员来说比较友好,容易上手。

好了,说这么多,今天的主题是写写Dart的语言入门。

在说变量之前,先简单贴个Hello world.哈哈。

void  main(){
    print("hello world!");
}

每个应用都有一个 main() 函数。相当于程序主入口。

变量,在 Dart 里定义变量的方式有 var、dynamic、Object、const这几种。

var

var可以接收任何类型的变量,类似于JavaScript中的 var ,不过JavaScript的 var 变量的值可以是
多类型的,而Dart的var 变量一旦赋值,类型便会确定,不能再改变。因为Dart本身就是跟Java
一样是强类型语言。

main() {
  var name = "LIN";
  var age = 18;
  int score = 98;//通过显式指定类型来定义变量
  
  print('name is:'+name+',  age is:'+age.toString()+',   score is:'+score.toString());
}

一种方式是变量可以直接用关键字声明var,这样的话不用指定类型,由它自动推断; 第二种方式是通过显式指定类型来定义变量。使用var定义变量,即使未显式指定类型,一旦赋值后类型就被固定,使用var定义的变量不能改变数据类型。

dynamic和Object

当我们需要动态改变变量的类型的时候,这个时候,就可以用dynamic和Object来定义变量类型。

main() {
  dynamic name = "Lin";
  name = 19;
  
  Object name2 = 20;
  name2 = "Alice";
  
  print('name is:'+name.toString());
  print('name2 is:'+name2.toString());
}

虽然提供了这个功能,不过个人觉得,可能Java开发者都比较习惯使用显示声明类型,毕竟可以提供代码可读性和方便调试吧。

const和final

const和final是Dart中定义常量的两种方式,初始化后不能再赋值。

main() {
  final width = 10;//使用final声明
  const PI = 3.14;//使用const声明
}

需要注意的是,final定义的常量是运行时常量,而const常量则是编译时常量。个人理解,final运行时要有确定的值,而const需要编译时就有确定的值:

main() {
  final time = new DateTime.now(); // 没报错
  const t = new DateTime.now(); // 报错
}

const和final的区别

共同点:

(1)类型声明都可以省略;

(2)初始化后都不能再赋值;

(3)不能和var同时使用。

不同点:

(1)类级别的常量,通常用 static const;

(2)const可以使用其他const常量的值来初始化其值;

(3)需要确定的值,final运行时要有确定的值,const需要编译时就有确定的值。

 

数据类型的常见操作:

main() {
  //String 转 int 
  var one = int.parse('100');
  print("one:"+one.toString());
  //String 转 double
  var two = double.parse('2.35');
  print("two:"+two.toString());
  //int 转 String
  int num = 100;
  String three = num.toString();
  print("three:"+three);
  // double 转 String
  double num2 = 3.14159;
  String four = num2.toStringAsFixed(2);//保留小数点后两位
  print("four:"+four);
}

字符类型的常见操作:

main() {
  //1、跟Java一样使用 + 进行字符串拼接
  String s1 = "123" + 'abc';
  //2、可以使用三引号或三个单引号来创建包含多行的字符串
  String s2 = '''第一行
  第二行''';
  String s3 = """第一行
  第二行""";
  
  var name = "李雷";
  var s4 = "hello,${name}";//插值表达式"${}",也可以用于拼接字符串

  print("s1:"+s1);
  print("s2:"+s2);
  print("s3:"+s3);
  print("s4:"+s4);
}

布尔类型
Dart中的布尔类型与Java还是有点不一样的,只有false和true两个值,而Java可以用0或非0表示,Dart
的布尔类型不行,还有一个不同的是,布尔类型的默认值为null。

main() {
  bool flag;
  print(flag);    // null
}

今天这回我们就到这里吧。下次继续函数的学习。

共勉。