【安卓开发——Dart语法讲解】

Dart语法详解

1. 入口方法

在Dart中,程序的入口方法是main()函数。

2. Dart变量

在Dart中,可以使用关键字varfinalconst来声明变量。其中,var可以用于声明任何类型的变量,finalconst用于声明常量变量,不同之处在于const表达式的值在编译时就已经确定了,而final可以在声明时或在构造函数中初始化。

var name = "John";
final age = 30;
const PI = 3.14;

3. Dart的命名规则

在Dart中,标识符必须以字母或下划线开头,不能以数字开头;标识符不能包含空格或特殊字符,如@、#、$等;标识符中的字母区分大小写。标识符的命名应该遵循驼峰命名法。

int myAge = 18;
String userName = "john";

4. Dart 常量

在Dart中,常量可以使用finalconst关键字来声明。常量和变量的区别在于,一旦初始化,常量的值就不能更改;而变量的值可以修改。

final height = 1.75;
const PI = 3.14;

5. 数据类型

5.1 数值类型

Dart中的数值类型包括int(整型)和double(浮点型)。

int age = 18;
double height = 1.75;

5.1.3 运算符

Dart中的数值类型支持各种运算符,包括加、减、乘、除、取余等。

int a = 5;
int b = 2;
print(a + b); // 输出7
print(a - b); // 输出3
print(a * b); // 输出10
print(a / b); // 输出2.5
print(a % b); // 输出1

5.2 字符串类型

Dart中的字符串类型使用单引号或双引号括起来。

String hello = "Hello";
String world = 'world';

5.3 布尔类型

Dart中的布尔类型有两个值:truefalse

bool isGood = true;
bool isBad = false;

5.4 List集合类型

Dart中的List类型可以用来存储一组有序的数据,可以通过下标来访问其中的元素。

5.4.1 第一种定义List的方式
List<String> fruits = ["apple", "banana", "orange"];
5.4.2 第二种定义List的方式
List<int> numbers = new List();
numbers.add(1);
numbers.add(2);
numbers.add(3);
5.4.3 指定list的类型
List<dynamic> list = new List<dynamic>();
list.add("hello");
list.add(123);
list.add(true);

5.5 Maps类型

Dart中的Map类型用于存储键值对,其中键和值可以是任何类型。

5.5.1 第一种定义方式
Map<String, String> fruits = {
  "apple": "red",
  "banana": "yellow",
  "orange": "orange",
};
5.5.2 第二种定义方式
Map<String, int> scores = new Map();
scores["John"] = 80;
scores["Mary"] = 90;

5.6 类型判断(is 关键字)

在Dart中,可以使用is关键字来判断一个对象是否属于某个类型。

String str = "Hello";
if (str is String) {
  print("str is a string");
}

6. 运算符

6.2 关系运算符

Dart中的关系运算符包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。

6.3 逻辑运算符

在Dart中,可以使用!&&||三个符号来进行逻辑运算。

6.3.1 取反(!)
bool isGood = false;
if(!isGood){
  print("isBad");
}
6.3.2 且运算(&&)
bool isGood = true;
bool isBig = true;
if(isGood && isBig){
  print("isGreat");
}
6.3.3 或运算( | | )
bool isGood = true;
bool isBig = false;
if(isGood || isBig){
  print("isGood or isBig");
}

6.4 赋值运算

Dart中的赋值运算包括直接赋值(=)、判断为空之后赋值(??=)和复合赋值运算符(+=-=*=/=%=~/=)。

6.4.1 直接赋值(=)
int a = 5;
6.4.2 判断为空之后赋值(??=)
int a;
a ??= 5;
print(a); // 输出 5
6.4.3 复合赋值运算符(+=,-=,*=,/=,%=,~/=)
int a = 5;
a += 3;
print(a); // 输出 8

6.5 条件表达式

在Dart中,可以使用if-else语句、switch-case语句、三目运算符和??运算符来实现条件表达式。

6.5.1 if else
int score = 80;
if (score >= 90) {
  print("Grade A");
} else if (score >= 80) {
  print("Grade B");
} else {
  print("Grade C");
}
6.5.2 switch case
int score = 80;
switch (score) {
  case 90:
    print("Grade A");
    break;
  case 80:
    print("Grade B");
    break;
  default:
    print("Grade C");
}
6.5.3 三目运算( ? :)
int score = 80;
String grade = score >= 90 ? "A" : "B";
print(grade); // 输出 B
6.5.4 ??运算符
int a;
int b = a ?? 5;
print(b); // 输出 5

6.6 类型转换

在Dart中,可以使用asis来进行类型转换。

String str = "123";
int num1 = int.parse(str); // 字符串转整数
double num2 = double.parse(str); // 字符串转浮点数
int a = 5;
String b = a.toString(); // 数字转字符串

7. 循环语句

在Dart中,可以使用forwhiledo-while三种循环语句来处理重复执行的任务。

7.1 for循环

for (int i = 0; i < 10; i++) {
  print(i);
}

7.2 while和do while

int i = 0;
while (i < 10) {
  print(i);
  i++;
}

int j = 0;
do {
  print(j);
  j++;
} while (j < 10);

7.3 break和continue

在循环中,可以使用breakcontinue关键字来控制程序的流程。

for (int i = 0; i < 10; i++) {
  if (i== 5)
  { break; // 中断循环 } 
  if (i % 2 == 0) {
  continue; // 跳过本次循环,进入下一次循环 
  }
  print(i); 
  }

8. 函数

在Dart中,函数是一个带有名称和参数的代码块,可以重复调用。

8.1 定义函数

int sum(int a, int b) {
  return a + b;
}

8.2 函数参数

Dart中的函数参数可以分为必需参数、可选位置参数和可选命名参数。

8.2.1 必需参数
int sum(int a, int b) {
  return a + b;
}

sum(1, 2); // 输出 3
8.2.2 可选位置参数
int sum(int a, [int b = 0, int c = 0]) {
  return a + b + c;
}

sum(1); // 输出 1
sum(1, 2); // 输出 3
sum(1, 2, 3); // 输出 6
8.2.3 可选命名参数
int sum(int a, {int b = 0, int c = 0}) {
  return a + b + c;
}

sum(1); // 输出 1
sum(1, b: 2); // 输出 3
sum(1, b: 2, c: 3); // 输出 6

8.3 匿名函数

在Dart中,可以使用匿名函数来定义一个没有名称的函数。

var sum = (int a, int b) {
  return a + b;
};

print(sum(1, 2)); // 输出 3

9. 类与对象

在Dart中,所有东西都是一个对象。每个对象都是一个类的实例,所有的类都继承自Object类。

9.1 定义类

class Person {
  String name;
  int age;

  void sayHello() {
    print("Hello, my name is $name.");
  }
}

var person = new Person();
person.name = "Tom";
person.age = 20;
person.sayHello(); // 输出 Hello, my name is Tom.

9.2 构造函数

在Dart中,构造函数是一个特殊的函数,用于创建和初始化类的对象。

9.2.1 默认构造函数
class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
  
  void sayHello() {
    print("Hello, my name is $name, I'm $age years old.");
  }
}

var person = new Person("Tom", 20);
person.sayHello(); // 输出 Hello, my name is Tom, I'm 20 years old.
9.2.2 命名构造函数
class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
  
  Person.fromMap(Map<String, dynamic> map) {
    name = map['name'];
    age = map['age'];
  }
  
  void sayHello() {
    print("Hello, my name is $name, I'm $age years old.");
  }
}

var person = new Person.fromMap({"name": "Tom", "age": 20});
person.sayHello(); // 输出 Hello, my name is Tom, I'm 20 years old.

9.3 静态成员

在Dart中,可以使用static关键字来定义静态成员,静态方法和静态变量不需要实例化对象就可以访问。

class Person {
  String name;
  int age;
  static String hobby = "Dancing";

  Person(this.name, this.age);
  
  static void sayHello() {
    print("Hello, I love $hobby.");
  }
}

Person.sayHello(); // 输出 Hello, I love Dancing.

10. 异常处理

在Dart中,可以使用try-catch语句来捕获和处理异常。

try {
  int result = 10 ~/ 0; // 抛出异常
} catch (e) {
  print("Exception: $e"); // 输出 Exception: IntegerDivisionByZeroException
} finally {
  print("Finally block."); // 输出 Finally block.
}

11. 文件操作

在Dart中,可以使用dart:io库来进行文件操作。

11.1 读取文件

import 'dart:io';

void main() async {
  var file = File('example.txt');
  var contents = await file.readAsString();
  print(contents);
}

11.2 写入文件

import 'dart:io';

void main() async {
  var contents = 'Hello, world!';
  var file = File('example.txt');
  await file.writeAsString(contents);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Muuuzi丶

您的鼓励是我创作的无限动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值