Flutter学习笔记之Dart类型以及运算符

前言

学习教程地址
系统:macOS
软件:Android Studio 4.1.2
Dart的语法类似C语言,可以转译为JavaScript。

一、Dart入口方法

Dart入口为main方法

//void表示无返回值
void main(){
  print("hello ,Dart");
}

main(){
  print("hello ,Dart");
}

二、Dart类型

1、Dart命名规则

(1)、变量名称必须由数字、字母、下划线和美元符$组成。
(2)、注意标识符开头不能是数字。
(3)、标识符不能是保留字和关键字。
(4)、变量的名字区分大小写,如age和Age是不同的变量,在实际的运用中建议不要用一个,以免混淆。
(5)、标识符(变量名)一定要见名思意,变量名称建议用名词,方法名称建议用动词。

2、基础类型
2.1、变量

(1)、var定义变量,可以定义任意类型的变量,会自动推断变量类型。

var str = "你好dart";
var num = 1334;
print(str);
print(num);

(2)、通过类型定义变量

//字符串
String mystr = "你好dart";
//数字类型
int mynum = 1234;
//Booleans类型
bool isFlag = true;
//double类型
double a = 12.12;
2.2、常量

常量即永远不改变的量,请使用final或const修饰,而不是使用var或其他变量
(1)、const值不变,一开始就得赋值。

const PI = 3.1415926;
// PI = 2333 //错误,常量不可以修改
print(PI);

(2)、final可以开始不赋值,只能赋一次;

final PII = 3.1415926;
// PII = 2333 //错误,常量不可以修改
print(PII);

(3)、差别:final不仅有const的编译时常量的特性,最重要的是它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化。
即直接赋值用final或const均可,但如果从方法中获取,只能用final。

final a = new DateTime.now();//当前时间
print(a);
// const b = new DateTime.now();//报错
3、List集合类型(数组)
3.1、var定义List,元素可以是多种类型同时出现。
//(1)、第一种定义List的方式——[]
var l1 = ['aaa',2,'cccc'];
print(l1);
print(l1.length);//长度
print(l1[1]);//以下标取元素

//(2)、第二种定义List的方式——new
var l2 = new List();
l2.add('张三');
l2.add(4);
l2.add('王五');
print(l2);
print(l2[2]);
3.2、指定类型定义List,元素只能是指定类型。
var l3 = new List<String>();
l3.add('张三');
l3.add('李四');
l3.add('王五');
print(l3);
4、Map类型(字典)
4.1、第一种定义Map的方式——{}
var person = {
   "name":"张三",
   "age":20,
   "work":["程序员","外卖员"]
};
print(person);
print(person["name"]);
print(person["age"]);
print(person["work"]);
4.2、第二种定义Map的方式——new
var p = new Map();
p["name"] = "李四";
p["age"] = 20;
p["work"] = ["程序员","外卖员"];
print(p);

三、Dart类型判断

通过is关键词判断类型

var str = '1234 ';
if(str is String){
  print('str是String类型');
}else if(str is int){
  print('str是int类型');
}else{
  print('str是其他类型');
}

四、运算符

1、算术运算符
int a = 12;
int b = 10;

print(a + b);   //加
print(a - b);   //减
print(a * b);   //乘
print(a / b);   //除
print(a % b);   //取余
print(a ~/ b);  //取整
2、关系运算符
print(a == b);	//等于
print(a != b);	//不等于
print(a > b);	//大于
print(a < b);	//小于
print(a >= b);	//大于等于
print(a <= b);	//小于等于
3、逻辑运算符
3.1、! 取反
bool flag = false ;
print(!flag);//结果为true
3.2、&& 并且:全部为true的话值为true 否则值为false。
bool flag1 = true;
bool flag2 = false;
print(flag1 && flag2);;//结果为false
3.3、|| 或者:全为false的话值为false 否则值为true。
print(flag2 || flag1);//结果为true
4、赋值运算符
4.1、基础赋值运算符 = 和 ??=

(1)、= 为直接赋值

int m = 11;

(2)、??= 赋默认值

int n = 10;
n ??= m;//表示如果n的值为空把m的值赋给n
print(n);
4.2、复合赋值运算符 += -= *= /= %= ~/=
print(m += 10);  //a=a+10;
print(m -= 10);  //a=a-10;
print(m *= 3);   //a=a*3;
double f = 12;
print(f /= 3);   //f=f/3; 除法接收结果的变量不能是int型,否则会报错
print(m %= 3);   //a=a%3;
print(m ~/= 3);  //a=a~/3;
5、自增自减运算符
5.1、自增运算符++,自增1
var a = 10;
a++; 		//a=a+1;
print(a);	//11
++a;		//a=a+1;
print(a);	//12
5.2、自减运算符–,自减1
var a = 10;
a--; 		//a=a-1;
print(a);	//9
--a; 		//a=a-1;
print(a);	//8
5.3、拓展

在赋值运算里面。
如果++ --写在前面,这时候先运算,再赋值;
如果++ --写在后面,先赋值后进行运算。

var a = 10;
var b = a++;	//a先赋值给b,再进行自增运算。
print(a);//11
print(b);//10

b = ++a;		//a先进行自增运算,再赋值给b。
print(a);//12
print(b);//12

b = a--;		//a先赋值给b,再进行自减运算。
print(a);//11
print(b);//12

b = --a;		//a先进行自减运算,再赋值给b
print(a);//10
print(b);//10

五、Dart类型转换

1、Number与String类型之间的转换
1.1、String===>Number —— parse();

(1)、String====>int

String str = '123';
var myIntNum = int.parse(str);
print(myIntNum is int);//结果为true

(2)、String====>double
在不确定str是int还是double的情况下建议用double,double兼容int。

str = '123.1';
var myDoubleNum = double.parse(str);
print(myDoubleNum is double);//结果为true
1.2、Number===>String —— toString();
var str1 = myIntNum.toString();
print(str1 is String);//结果为true
拓展:被转换参数为空报错的情况下可使用try…catch
str = '';
try{
  var myDoubleNum = double.parse(str);
  print(myDoubleNum is double);
}catch(error){
  print(0);
}
2、其他类型转换成Booleans类型
2.1、isEmpty:判断String是否为空
var str;
if(str.isEmpty){
  print('str为空');
}else{
  print('str不为空');
}
2.2、判断Number是否为空
var myNum;
if(myNum == null){
  print('空');
}else{
  print('非空');
}

myNum = 0/0; //不会报错,但会返回NaN
if(myNum.isNaN){
  print('NaN');
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值