Dart入门01 -- 变量,常量,数据类型,类型转换

Dart简介

  • Dart 是面向对象的、类定义的、单继承的语言,它的语法类似 C 语言,可以转译为 JavaScript,支持接口 (interfaces)、混入 (mixins)、抽象类 (abstract classes)、具体化泛型 (reified generics)、可选类型 (optional typing) 和 sound type system;

VSCode环境搭建

  • 在学习Dart语法时,本人使用的是VSCode编辑器,下载官方网址为:https://code.visualstudio.com/
  • 其次安装Flutter,Dart,Code Runner三个插件,如下所示:
image.png
  • 然后在桌面上创建一个文件夹01_Dart基本语法,用VSCode打开,再创建dart文件,就可以进行Dart语法演练了;

main函数

  • Dart语言的入口是main函数,并且必须显示的进行定义;
  • Dart的入口函数main是没有返回值的;
  • 传递给main函数的命令行参数,是通过List完成的;
  • 代码展示如下:
image.png

变量

  • 在Dart语言中,所有的变量都可视为一个对象,所有的对象都看作一个类的实例,数字函数null也是对象,所有的对象都派生自Object类
变量的定义与初始化
  • 关键字vardynamic都可以定义变量,两者最大的区别在于var定义的变量,在初始化后类型确定不可更改,dynamic定义的变量,类型随值类型的变化而变化;
  • 通过var关键字定义变量,表明变量的值是可以发生改变的;
  • 定义变量之后,未进行初始化,系统默认赋值为null
void main(List args) {
  var num;
  if (num == null) {
    print("num is null"); //执行 num = null
  } else {
    print("num = ${num}");
  }

  int a;
  if (a == null) {
    print("a is null"); //执行 a = null
  } else {
    print("num = ${num}");
  }
}
  • 整型变量a,定义之后未进行初始化,默认赋值为null,表明a也是一个对象;
  • 使用var关键字定义变量,变量在进行初始化之后,变量的类型也就确定了,表明Dart语言支持类型推断
void main(List args) {
  var a = 100;
  a = "yanzi";
}
  • 上述代码出现报错,Error: A value of type 'String' can't be assigned to a variable of type 'int',原因在于变量a,在进行初始化时,系统经类型推断确认为int类型,是不能赋值字符串数据的;
  • 通过dynamic关键字定义变量,dynamic类型的变量,在使用中可以随时改变其类型,系统会根据该变量的当前值类型确定其当前时刻的类型
void main(List args) {
  dynamic a = 100;
  a = "yanzi";
}
  • 上述代码不会报错,也就是说dynamic修饰的变量,可以随时更改变量的数据类型;

常量

  • 关键字constfinal,都可定义常量,其值不可发生更改,且定义与初始化同时进行,否则会报错;
  • const定义的常量,在编译时就已经初始化,且不可改变;
  • final定义的常量,在运行时进行初始化,且不可改变;
void main(List args) {
  const a1 = "yanzi";
  const int a2 = 100;
  print(a1);
  print(a2);

  final name1 = "yanzi";
  final String name2 = "sss";
  print(name1);
  print(name2);
}

数据类型

  • 在Dart语言中,支持的数据类型有8种,依次是num数值类型String字符串类型bool布尔型List数组类型Map字典类型Set集合类型Runes类型Symbols类型
num数值类型
  • num数值类型有两种分别为intdouble,均继承自num类;
void main(List args) {
  int a = 100;
  double b = 120.2;

  print("a = ${a}");
  print("b = ${b}");

  double c = 200; //自动将int转成double
  print("c = ${c}");
}
  • double c = 200,会自动将int转成double类型;
String字符串类型
  • 在Dart中,可使用双引号,也可以使用单引号创建字符串;
  • 可以用${字符串变量名},引用字符串;
void main(List args) {
  String name1 = "yanzi";
  String name2 = 'SF';
  var name3 = "ssss";

  print("name1 = ${name1}");
  print("name2 = ${name1}");
  print("name3 = ${name1}"); //name3 = yanzi
}
字符串的常用方法
  • 获取字符串长度
void main(List args) {
  String name1 = "yanzi";

  print(name1.length); //5
}
  • 判断字符串是否为空
void main(List args) {
  String name1 = "yanzi";

  print(name1.isEmpty); //false
}
  • 判断字符串是否不为空
void main(List args) {
  String name1 = "yanzi";

  print(name1.isNotEmpty); //true
}
  • 字符串拼接
    • 使用加号+,进行字符串拼接;
    • 使用${字符串变量名},进行字符串内嵌,实现字符串拼接效果;
void main(List args) {
  String name1 = "yanzi";
  String name2 = " ssss";
  String name3 = name1 + name2;

  String name4 = "asd" + "123";

  print("name3 = " + name3); //name3 = yanzi ssss
  print("name3 = ${name3}"); //name3 = yanzi ssss
  print("name4 = " + name4); //name4 = asd123
}
  • 字符串截取
void main(List args) {
  String name1 = "aaabbb";
  //截取指定区间的字符串
  print(name1.substring(0, 2)); //aa

  //截取指定index至末尾
  print(name1.substring(3)); //bbb

  //利用 指定字符 切割 获取数组 
  String str = "a,b,c,d,e";
  List strs = str.split(",");
  print(strs); //[a, b, c, d, e]
}
  • 字符串转化大小写
void main(List args) {
  String name1 = "aaabbb";
  String name2 = "AddSSS";

  //转成大写
  print(name1.toUpperCase()); //AAABBB

  //转成小写
  print(name2.toLowerCase()); //addsss
}
  • 字符串去除空格
void main(List args) {
  String name1 = " aaabbb ";

  //去除左右两边空格
  print(name1.trim()); //

  //去除左边空格
  print(name1.trimLeft()); 

  //去除右边空格
  print(name1.trimRight()); 
}
bool布尔型
  • 使用关键字bool定义布尔型变量,属于bool类型;
void main(List args) {
  bool isTop = false;
  bool isRich = true;

  if (isTop) {
    print("高");
  }

  if (isRich == true) {
    print("帅");
  }
}
List数组类型
  • 使用List类,表示数组,存储数据元素;
void main(List args) {
  //int整型数组
  var arr1 = List();
  arr1.add(10);
  arr1.add(20);
  arr1.add(30);
  arr1.add(100);
  arr1.add(200);

  print(arr1); //[]
}
Map字典类型
  • 使用Map类,表示字典,存储键值对数据;
void main(List args) {
  var dic1 = {"name": "yanzi", "age": 16};
  var dic2 = new Map();
  dic2["name"] = "yanzi";
  dic2["age"] = 30;

  Map dic3 = new Map();
  dic3["name"] = "yanzi";
  dic3["age"] = "15";

  Map dic4 = new Map();
  dic4["name"] = "liyanyan";
  dic4["age"] = "33";

  Map dic5 = {"name": "yanzi", "age": "23"};
}
Set集合类型
  • Set是一系列无序项的集合;
void main(List args) {
  //定义初始化
  Set names1 = {};
  var name2 = {};

  //添加元素
  name2.add("yanzi");
  name2.add("sss");
  name2.add("aaa");

  print(name2); //{yanzi, sss, aaa}
}
Runes类型
  • Dart的rune类型主要是unicode编码之类的;
Symbols类型
  • Dart的Symbol表示程序中出现的操作符或标识符;

类型转换

  • 字符串转int,double 数值,调用num类型的parse方法
void main(List args) {
  String str1 = "12345";
  print(int.parse(str1)); //12345

  String str2 = "123.56";
  print(double.parse(str2)); //123.56
}
  • int,double数值转字符串,调用num类型的toString方法
void main(List args) {
  int num1 = 100;
  print(num1.toString()); //100

  double num2 = 123.56;
  print(num2.toString()); //123.56
}

你可能感兴趣的:(Dart入门01 -- 变量,常量,数据类型,类型转换)