携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
数据类型以及数据类型判断、转换
一、Dart中的数据类型
1.常用数据类型:
- Numbers(数值):int、double
- Strings(字符串):String
- Booleans(布尔):bool
- List(数组):在Dart中,数组是列表对象,所以大多数人只是称他们为列表
- Maps(字典):Map是一个键值对对象,可以理解为js中的对象
2.不常用数据类型:
- Runes
Rune是UTF-32编码的字符串,可以通过文字转换成符号表情或者代表特定的文字。- Symbols
Symbol对象表示在Dart程序中声明的运算符或者标识符
二、类型解析
1.字符串 String
(1)可以使用''或""包裹内容,如果是单个''内容不支持换行,如果是三个'',内容可以换行。
(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']);
}
三、判断类型
- Dart中可以使用
is关键词来判断类型
void main() {
var str = 222;
if (str is String) {
print('String类型');
} else if (str is int) {
print('int类型');
} else {
print('其他类型');
}
}
四、类型转换
- Number类型转为String类型 toString()
- String类型转为Number类型 int.parse()
五、其他判断
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('男');
}
四、命名构造函数
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);
}
五、类的私有
在函数或者属性前加_,但是要注意 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}');
}
}
六、类的静态与非静态
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();
}