接下来一段时间自己可能要慢慢接触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
}
今天这回我们就到这里吧。下次继续函数的学习。
共勉。