0
点赞
收藏
分享

微信扫一扫

【初见Dart】第二章:数据类型


第二章:数据类型

  • ​​1. 变量与常量​​
  • ​​1.1 变量​​
  • ​​1.2 示例代码​​
  • ​​2. 数值型​​
  • ​​2.1 内置类型​​
  • ​​2.2 数值型操作​​
  • ​​2.3 示例代码​​
  • ​​3. 字符型​​
  • ​​3.1 字符串创建​​
  • ​​3.2 字符串操作​​
  • ​​3.3 常用方法​​
  • ​​3.4 示例代码​​
  • ​​4. 布尔型​​
  • ​​4.1 布尔​​
  • ​​4.2 示例代码​​
  • ​​5. 列表List​​
  • ​​5.1 List(数组)创建​​
  • ​​5.2 常用操作​​
  • ​​5.3 示例代码​​
  • ​​6. Map​​
  • ​​6.1 Map创建​​
  • ​​6.2 常用操作​​
  • ​​6.3 示例代码​​
  • ​​7. Dynamic​​
  • ​​7.1 示例代码​​

1. 变量与常量

1.1 变量

- 使用var声明变量,可赋予不同类型的值
- 未初始化时,默认值为null
- 使用final声明-一个只能赋值一次的变量

1.2 示例代码

void main() {
//变量
var a;
var b = 20;
print(a);
print(b);

a = 10;
print(a);

a = "Hello Dart!"; // 这里a竟然可以重新赋值为String类型,是因为有dynamic类型的存在,相当于kotlin的Any
print(a); //输出Hello Dart!

//不可变量
final c = 30; //相当于Kotlin中的val

//常量
const d = 50; //相当于Kotlin中的const val
}
null
20
10
Hello Dart!

2. 数值型

【初见Dart】第二章:数据类型_示例代码

2.1 内置类型

- 数值型- Number
- 字符串- String
- 布尔型- Boolean
- 列表- List
- 键值对- Map
- Runes, Symbols

2.2 数值型操作

运算符: +、-.*. /、~/、% (这里)
常用属性: isNaN、isEven. isOdd等
常用方法: abs()、round()、 floor()、 ceil()、 toInt()、 toDouble()

2.3 示例代码

void main() {
num a = 10;
//a = 12.5; 可以擦除类型,重新赋值

int b = 20; //申明具体类型,不能再赋予不同类型的数值了

double c = 12.5;

print(b + c); //32.5
print(b - c); //7.5
print(b * c); //250.0
print(b / c); //1.6
print(b ~/ c); //1 得到商
print(b % c); //7.5 余数

print(0.0 / 0.0); //NaN 非数字

print(b.isEven); //true 偶数?
print(b.isOdd); //false 奇数?

int d = -20;
print(d.abs()); //20 绝对值

double e = 10.5;
print(e.ceil()); //11 进一
print(e.round()); //11 四舍五入
print(e.floor()); //10 取整
print(e.toInt()); //10 转化
print(d.toDouble()); //-20.0
}
32.5
7.5
250.0
1.6
1
7.5
NaN
true
false
20
11
11
10
10
-20.0

3. 字符型

3.1 字符串创建

- 使用单引号,双引号创建字符串
- 使用三个引号或双引号创建多行字符串
- 使用r创建原始raw字符串

3.2 字符串操作

运算符:+. *. ==、0]
插值表达式: ${expression}
常用属性: length. isEmpty. isNotEmpty

3.3 常用方法

contains(), subString()
toLowerCase(), toUpperCase()
startsWith(), endsWith()
trim(), trimLeft(), trimRight()
indexOf(), lastIndexOf()
split(), replaceXXX()

3.4 示例代码

void main() {
String str1 = 'Hello';
String str2 = "Hello1";
String str3 = """Hello
Dart"""; //多行显示,也可单引号表示
print(str3); //Hello
//换行打印Dart

String str4 = 'Hello \nDart'; //转义字符串
String str5 = r'Hello \nDart'; //非转义字符串,r是使\n失效

//字符串运算
String str6 = "Hello ";
print(str6 + "Dart"); //Hello Dart 拼接
print(str6 * 5); //Hello Hello Hello Hello Hello 重复
print(str6 == "Hello "); //true 比对
print(str6[0]); //H 截取

//插值表达式
int a = 10, b = 10;
print("a: $a + b: $b = ${a + b}");//a: 10 + b: 10 = 20

//属性
print(
'str3: ${str3.length} str4: ${str4.length} str5: ${str5.length}'); //可以看出,"""换行其实就是\n,所以str3和str4的长度相等
//str3: 10 str4: 11 str5: 12
print(str6.isEmpty);//false
print(str6.isNotEmpty);//true

//常用方法
String str7 = "Hello Dart!";
print(str7.contains("Hello"));//true 包含?
print(str7.substring(0, 3));//Hel 截取
print(str7.startsWith("H"));//true 以H开头?
print(str7.endsWith("!"));//true 以!结尾?
print(str7.split(" "));//[Hello, Dart!] 转化数组,以空格展开
print(str7.replaceAll("Dart", "Flutter"));//Hello Flutter! 替换
}
Hello
Dart
Hello Dart
Hello Hello Hello Hello Hello
true
H
a: 10 + b: 10 = 20
str3: 10 str4: 11 str5: 12
false
true
true
Hel
true
true
[Hello, Dart!]
Hello Flutter!

4. 布尔型

4.1 布尔

- 使用bool表示布尔类型
- 布尔值只有true和false

4.2 示例代码

void main() {
bool isOK = false;
print(isOK);
}
false

5. 列表List

5.1 List(数组)创建

- 创建List : var list = [1, 2, 3];
- 创建不可变的List : var list = const [1, 2, 3];
- 构造创建: var list = new List();

5.2 常用操作

[], length
indexOf(), lastIndexOf()
add(),insert()
sort(), sublist()
remove(), clear()
shuffle(), asMap(), forEach()

5.3 示例代码

void main() {
var list1 = [1, 2, 3, "Dart", true];
print(list1);//[1, 2, 3, Dart, true]
print(list1[2]);//3

list1[1] = "Hello";
print(list1);//[1, Hello, 3, Dart, true]

var list2 = const [1, 2, 3];
//list2[0]=5; 无法重新赋值

//var list3 = new List();//被废弃的方法 用var list = [];

//常用操作
var list = [ "hello", "dart"];
print(list.length);//2 数组长度
list.add("New");//[hello, dart, New] 尾部加入
print(list);
list.insert(1, "Java");//[hello, Java, dart, New]
print(list);
list.remove("Java");//[hello, dart, New] 移除
print(list);

//list.clear();
//print(list);

print (list.indexOf("dart1"));//-1
list.sort();//[New, dart, hello] 根据ASCII码排序
print(list);

print(list.sublist(1));//[dart, hello] 没有end,及start->len进行截取
list.forEach(print);//New lamda用法 item作为obj给print打印
//dart 逐条打印
//hello
}

6. Map

6.1 Map创建

创建Map:var language = {first': 'Dat', second': 'Java' };
创建不可变Map:var language = const { 'first': 'Dart', 'second: 'Java' };
构造创建:var language = new Map();

6.2 常用操作

[], length
containsKey(), containsValue()
isEmpty(), isNotEmpty()
remove()
Keys, values
forEach()

6.3 示例代码

void main() {
var map1 = {"first": "Dart", 1: true, true: "2"};
print(map1); //{first: Dart, 1: true, true: 2}

print(map1["first"]); //Dart
print(map1[true]); //2
map1[1] = false;
print(map1); //{first: Dart, 1: false, true: 2}

var map2 = const {1: "Dart", 2: "Java"};
// map2[1] = "Python";
var map3 = new Map();

//常用操作
var map = {"first": "Dart", "second": "Java", "third": "Python"};
print(map.length); //3 长度
print(map.isEmpty); //false 为空?
print(map.keys); //(first, second, third) 所有key
print(map.values); //(Dart, Java, Python) 所有value

print(map.containsKey("first")); //true 包含key?
print(map.containsValue("C")); //false 包含value?
map.remove("third"); //移除
print(map); //{first: Dart, second: Java}
map.forEach(f); //key=first, value=Dart lamda打印
//key=second, value=Java

var list = ["1", "2", "3"];
print(list.asMap()); //{0: 1, 1: 2, 2: 3} //转化为map
}

void f(key, value) {
print("key=$key, value=$value");
}

7. Dynamic

7.1 示例代码

void main() {
var a;
a = 10;
a = "Dart";

dynamic b = 20;
b = "JavaScript";

var list = [];
list.add(1);
list.add("hello");
list.add(true);
print(list);//[1, hello, true] 相当于kotlin的Any
}


举报

相关推荐

0 条评论