入口方法,打印和注释如下
void main{
// print('你好dart');
/* print('你好dart'); */
print('你好dart');
}
变量
可以通过var关键词声明变量,也可以通过类型关键词来声明变量
使用var定义的话会自动推断类型,但是和js不同,声明的变量 类型指定之后是不可变为其他类型的
var str = 'this is var';
String str = 'this is var';
int str = 123;
变量的命名规则
1、变量名称必须由数字、字母、下划线和美元符组成
2、注意:标识符开头不能是数字
3、不能是保留字和关键字
4、变量名称是区分大小写的
5、变量名起名建议能够见名思意
常量
使用关键字const或者final来声明,常量是不可以改变的
const PI = 3.14159;
final PI = 3.14159;
const和final的区别
final可以开始不赋值 只能赋一次;而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化
final a = new DateTime.now(); // 正常
const b = new DateTime.now(); // 会报错
数据类型
Dart中支持以下数据类型
常用数据类型:
Numbers(数值):int、double
Strings(字符串):String(使用三个单引号或者三个双引号包含起来时,代码中的字符可以换行,类似于js的模板字符串)
Booleans(布尔):bool
List(数组):在Dart中,数组是列表对象,所以大多数人只是称它们为列表
Maps(字典):通常来说,Map是一个键值对相关的对象。键和值可以是任何类型的对象。每个键只出现一次
项目中用不到的数据类型:
Runes:Rune是UTF-32编码的字符串,它可以通过文字转换成符号表情或者代表特定的文字。
Symbols:Symbol对象表示在Dart程序中声明的运算符或标识符。
字符串拼接
两种方式,一种是通过美元符,另一种是通过加号
String str1 = '你好';
String str2 = 'Dart';
print("$str1 $str2");
print(str1+str2);
布尔型变量的声明
bool flag = false;
条件判断中使用的是两个等号,而且是不会自动进行类型转换的(也就是说两个类型不同的变量比较为flase),这个和js不同,需要注意。
List类型的声明
var l1 = ['aaa','bbb','ccc'];
// 另一种方法
var l2 = new List();
l2.add('张三');
l2.add('张四');
l2.add('张五');
//定义list指定类型
var l3 = new List<String>();
Map类型的声明
map中的key必须加引号,value可以是任何类型;只可以用中括号的形式来访问里面的值,不能通过点的方式来访问
var person = {
"name":"张三",
"age":20
};
print(person);
print(person['name']);
//第二种定义Maps的方式
var p = new Map();
p['name'] = "李四";
p['age'] = 22;
判断变量是什么类型
通过is关键字来判断变量是什么类型,有点想js里面的typeof
var str = '1234';
if(str is String){
print('是String类型');
}
运算符
算术运算符
+ - * / ~/(取整) %(取余)
关系运算符
== != > < >= <=
逻辑运算符
! && ||
赋值运算符
基础赋值运算符 = ??=(表示左边变量为空的话就将右边的值赋值给左边)
复合赋值运算符 += -= *= /= %= ~/=
条件表达式
if else switch case
??运算符
var a;
var b = a ?? 10;
print(b); //10
// ??运算符其实就是 是不是空的意思 ,娶不为空的值
类型转换
Number类型与String类型之间的转行
Number类型转换成String类型 toString()
String类型转换成Number类型 int.parse()
String类型转换成double类型 double.parse()
String str = '123';
var myNum = int.parse(str);
var myDou = double.parse(str);
注意:当str是一个空的字符串时候,转换就会报错。所以要使用try-catch包裹
String pirce = '';
try{
var myNum=double.parse(price);
print(myNum);
}catch(err){
print(0);
}
其他类型转换成Booleans类型
isEmpty:判断字符串是否为空
var str = '';
if(str.isEmpty){
print('str空');
}
isNaN:判断是否为NaN
注意:Dart中除零不会报错
var myNum= 0/0;
if(myNum.isNaN){
print('myNum是NaN');
}