Dart(一)—变量、常量、基本类型、运算符、条件判断以及类型转换
前言
Dart语言跟Kotlin都是一种强大的脚本语言,它的很多语法跟Kotlin是很相似的。比如Dart也是可以不预先定义变量类型 ,自动会类型推倒,它修饰一般变量的关键字也是var
,所以如果我们熟悉Kotlin,Dart也会很容易上手。
Dart变量和常量
变量
如前言所说,Dart和Kotlin一样是强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒,Dart中定义变量可以通过var
关键字可以通过类型来申明变量:
var str = 'dart';
String str2 = 'this is dart';
int count = 123;
注意: var 后就不要写类型 , 写了类型 不要var 两者都写 var a int = 5; 报错
常量:final 和 const修饰符
const
修饰的值不变 要在定义变量的时候就得赋值;final
可以开始不赋值 只能赋一次,而final
不仅有const
的编译时常量的特性,最重要的它是运行时常量,并且final
是惰性初始化,即在运行时第一次使用前才初始化。
final name = 'Max';
final String sex = '男';
const bar = 1000000;
const double atm = 1.01325 * bar;
如果我们使用了阿里的代码规范插件,其实他会提示我们最好用const
代替final
。
Dart的命名规则
- 变量名称必须由数字、字母、下划线和美元符($)组成。
- 注意:标识符开头不能是数字
- 标识符不能是保留字和关键字。
- 变量的名字是区分大小写的如: age和Age是不同的变量。在实际的运用中,也建议,不要用一个单词大小写区分两个变量。
- 标识符(变量名称)一定要见名思意 :变量名称建议用名词,方法名称建议用动词
Dart的入口方法
Dart 入口方法main
有两种定义
//表示main方法没有返回值
void main(){
print('dart');
}
main(){
print('dart');
}
Dart基本类型
数据类型
Dart中常用的数据类型有以下的类型:
Numbers(数值):
int
double
Strings(字符串)
String
Booleans(布尔)
bool
List(数组)
在Dart中,数组是列表对象,所以大多数人只是称它们为列表
Maps(字典)
通常来说,Map 是一个键值对相关的对象。 键和值可以是任何类型的对象。每个键只出现一次,而一个值则可以出现多次
数值类型: int double
int
整型:
int a=123;
a=45;
double
既可以是整型,也可是浮点型:
double b=23.5;
b=24;
字符串类型
字符串定义:
var str1='this is str1';
String str2='this is str2';
字符串拼接:
print("$str1 $str2");
print(str1 + str2);
布尔类型
定义方式:
bool flag1=true;
var flag2=true;
判断条件上和Kotlin
使用无异。
List(数组/集合)
不指定类型定义List
:
var list1 = ["张三",20,true];
print(list1);
print(list1[2]);
这就有点颠覆我们以往的观念了,一个list里面还可以有不同的类型。
指定类型定义List
:
var list2 = <String>["张三","李四"];
print(list2);
通过[]
来定义Lsit
:
通过[]
创建的集合的容量可以变化:
var list = [];
list.add("小明");
list.add(24);
list.add(true);
print(list);
也可以指定List
中的元素类型:
List<String> list = [];
又或者是:
List<String> list = List.empty(growable: true);
growable
为 false
是为 固定长度列表,为 true
是为 长度可变列表
通过List.filled创建的集合长度是固定:
var list1 = List.filled(2, "");
var list2 = List<String>.filled(2, "");
Map
Map
的定义:
直接赋值方式:
var person={
"name":"小明",
"age":28,
"work":["程序员","Android开发"]
};
print(person["name"]);
print(person["age"]);
print(person["work"]);
通过Map
分别赋值:
var map =new Map();
map["name"]="小明";
map["age"]=26;
map["work"]=["程序员","Android开发"];
print(map);
is 关键词来判断类型
var str = 123;
if(str is String){
print('是string类型');
}else if(str is int){
print('int');
}else{
print('其他类型');
}
运算符
算术运算符
使用和符号上和Kotlin
中的基本无异:
int a=13;
int b=5;
print(a+b); //加
print(a-b); //减
print(a*b); //乘
print(a/b); //除
print(a%b); //其余
print(a~/b); //取整
关系运算符
关系运算符主要有:
== != > < >= <=
使用:
int a=5;
int b=3;
print(a==b); //判断是否相等
print(a!=b); //判断是否不等
print(a>b); //判断是否大于
print(a<b); //判断是否小于
print(a>=b); //判断是否大于等于
print(a<=b); //判断是否小于等于
逻辑运算符
! 取反:
bool flag=false;
print(!flag); //取反
&&并且:全部为true的话值为true 否则值为false:
bool a=true;
bool b=true;
print(a && b);
||或者:全为false的话值为false 否则值为true:
bool a=false;
bool b=false;
print(a || b);
赋值运算符
基础赋值运算符 =、??= ++ --
int c=a+b; //从右向左
b??=23; 表示如果b为空的话把 23赋值给b
++ --
// ++ -- 表示自增 自减 1
//在赋值运算里面 如果++ -- 写在前面 这时候先运算 再赋值,如果++ --写在后面 先赋值后运行运算
var a = 10;
var b = a--;
print(a); //9
print(b); //10
// var a=10;
// a++; //a=a+1;
// print(a);
复合赋值运算符 +=、-= 、*= 、 /= 、%= 、~/=
+=
var a=12;
a+=12; //a = a+12
print(a);
-=
a-=6; // a = a-6
*=
a*=3; //a=a*3;
/=
需要返回double
类型
double a=12;
a/=12;
%=
double a=12;
a %= 12;
~/=
返回的是int
整型
int a1 = 3;
int a2 = 2;
int a = a1 ~/= a2;
a = 1.
条件表达式
**if else **
bool flag=true;
if(flag){
print('true');
}else{
print('false');
}
switch case
var sex = "女";
switch (sex) {
case "男":
print('性别是男');
break;
case "女":
print('性别是女');
break;
default:
print('传入参数错误');
break;
}
三目运算符
bool flag = false;
String str = flag?'我是true':'我是false';
print(str);
??运算符
var a;
var b= a ?? 10;
print(b); // a为空,则赋值为10
// var a=22;
// var b= a ?? 10;
//
// print(b); // 20
类型转换
Number与String类型之间的转换
Number
类型转换成String
类型toString()
String
类型转成Number
类型int.parse()
String
转Number
String str = '123';
var myNum = int.parse(str);
print(myNum is int);
// String str='123.1';
// var myNum=double.parse(str);
// print(myNum is double);
转String
:
var myNum=12;
var str=myNum.toString();
print(str is String);
其他类型转换成Boolean类型
isEmpty
:判断字符串是否为空
var str = '';
if (str.isEmpty) {
print('str空');
} else {
print('str不为空');
}
isNaN
:判断值是否为非数字
var myNum = 0 / 0;
if (myNum.isNaN) {
print('NaN');
}
作者:柒叁
链接:https://juejin.cn/post/7116024077273432094
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。