Flutter开发-Dart基础语法(二)(数据类型、函数、对象、类)

135 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

数据类型以及数据类型判断、转换

一、Dart中的数据类型

1.常用数据类型:

  1. Numbers(数值):int、double
  2. Strings(字符串):String
  3. Booleans(布尔):bool
  4. List(数组):在Dart中,数组是列表对象,所以大多数人只是称他们为列表
  5. Maps(字典):Map是一个键值对对象,可以理解为js中的对象

2.不常用数据类型:

  1. Runes
    Rune是UTF-32编码的字符串,可以通过文字转换成符号表情或者代表特定的文字。
  2. Symbols
    Symbol对象表示在Dart程序中声明的运算符或者标识符

二、类型解析

1.字符串 String

(1)可以使用''""包裹内容,如果是单个''内容不支持换行,如果是三个'',内容可以换行。 image.png (2)字符串拼接

字符串拼接可以使用$+两种方式

void main() {
  String str1 = 'hello';
  String str2 = 'world';
  print("$str1,$str2");
  print(str1 + str2);
}

2.数值 int、double

(1) int 必须是整型。 (2) double 既可以是整型也可以是浮点型。

void main() {
  int a = 123;
  double b = 1.2;
  double c= 1;
  
  print(a);
  print(b);
  print(c);
}

3.布尔 bool

(1)bool值为true/false。

void main() {
  bool isshow = true;
  print(isshow);
}

(2) 条件判断语句
a. if判断

void main() {
  bool isshow = false;
  if (isshow) {
    print('真');
  } else {
    print('假');
  }
}

4.List数组

void main() {
  var list = ['aaa', 'bbb'];
  print(list);
  print(list.length);
  print(list[1]);
  list.forEach((element) {
    print(element);
  });
}

5.Maps字典

在获取值时,不能像js对象一样直接·,需要['key']

// 第一种定义方式
void main() {
  var person = {'name': '张三'};
  print(person);
  print(person['name']);
}
// 第二种定义方式
void main() {
  var person = new Map();
   person['name'] = '张三';
   print(person);
   print(person['name']);
}

三、判断类型

  1. Dart中可以使用is关键词来判断类型

void main() {
  var str = 222;
  if (str is String) {
    print('String类型');
  } else if (str is int) {
    print('int类型');
  } else {
    print('其他类型');
  }
}

四、类型转换

  1. Number类型转为String类型 toString()
  2. String类型转为Number类型 int.parse()

五、其他判断

  1. isEmpty:判断字符串是否为空

Dart中的函数、对象、类

一、函数返回类型

函数的返回类型可写可不写

main() {
  String strfunc() {
    return '字符串';
  }
  var str = strfunc();
  print(str);
}

二、定义一个带可选参数的方法

main() {
  String strfunc(String name, [age]) {
    if (age != null) {
      return name + age;
    } else {
      return name;
    }
  }

  var str = strfunc('王小二', '13');
  print(str);
}

三、定义类

class Person {
  String name = '默认';
  int age = 13;
  // 默认构造函数
  Person(name, age) {
    this.name = name;
    this.age = age;
  }
  void showName(sex) {
    print('${this.name}-${this.age}-${sex}');
  }
}

main() {
  Person p1 = new Person('王小二', 18);
  p1.showName('男');
}

image.png

四、命名构造函数

class Person {
  String name = '默认';
  int age = 13;
  // 默认构造函数
  Person(name, age) {
    this.name = name;
    this.age = age;
  }
  // 命名构造函数
  Person.now() {
    print('我是命名构造函数');
  }
  void showName(sex) {
    print('${this.name}-${this.age}-${sex}');
  }
}

main() {
  Person p2 = new Person.now();
  print(p2);
}

image.png

五、类的私有

在函数或者属性前加_,但是要注意 class类需要抽离成模块才可以,我们将其放在lib下的dart文件中。

class Person {
  String name = '默认';
  int _age = 13;
  // 默认构造函数
  Person(name, age) {
    this.name = name;
    this._age = age;
  }
  Person.now() {
    print('我是命名构造函数');
  }
  void showName(sex) {
    print('${this.name}-${this._age}-${sex}');
  }
}

image.png

六、类的静态与非静态

class Person {
  static String name = '静态属性';
  int age = 13;
  
  // 静态方法只能访问静态属性
  static void show() {
    print(name);
    print(age) // 会报错
  }
  // 非静态方法可以访问静态属性与非静态属性
  void show2() {
    print(name);
    print(age);
  }
}

main() {
  Person p1 = new Person();
}