Dart(一)—变量、常量、基本类型、运算符、条件判断以及类型转换

245 阅读4分钟

前言

Dart语言跟Kotlin都是一种强大的脚本语言,它的很多语法跟Kotlin是很相似的。比如Dart也是可以不预先定义变量类型 ,自动会类型推倒,它修饰一般变量的关键字也是var,所以如果我们熟悉KotlinDart也会很容易上手。

Dart变量和常量

变量

如前言所说,DartKotlin一样是强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒,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()

StringNumber

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');
}