Appearance
第3章:Dart 核心语法基础
3.1 程序入口
在 Dart 中,每个程序都必须有一个 main() 函数作为入口点。main() 函数是 Dart 程序的唯一入口,程序从这里开始执行。
基本语法:
dart
void main() {
// 代码逻辑
}示例:
dart
void main() {
print('Hello, Dart!');
}3.2 变量与常量
变量声明
Dart 提供了几种声明变量的方式:
使用
var关键字:- 变量类型会根据初始值自动推断
- 变量的值可以后续修改
dartvar name = 'Dart'; // 自动推断为 String 类型 name = 'Flutter'; // 可以修改值使用
dynamic关键字:- 变量可以存储任何类型的值
- 类型检查在运行时进行
dartdynamic value = 'Hello'; // 初始为 String 类型 value = 123; // 可以改为 int 类型使用
Object关键字:- 变量可以存储任何对象
- 但需要进行类型转换才能使用特定类型的方法
dartObject obj = 'Hello'; String str = obj as String; // 需要类型转换 print(str.length);
常量声明
Dart 提供了两种声明常量的方式:
使用
final关键字:- 只能赋值一次
- 可以在运行时计算值
dartfinal String name = 'Dart'; final age = 10; // 类型可以推断使用
const关键字:- 只能赋值一次
- 值必须在编译时确定
dartconst String name = 'Dart'; const double pi = 3.14159;
变量命名规则
Dart 的变量命名规则:
- 必须以字母或下划线开头
- 后续字符可以是字母、数字或下划线
- 区分大小写
- 不能使用 Dart 关键字作为变量名
示例:
dart
// 正确的变量名
var name;
var _age;
var user123;
// 错误的变量名
var 123name; // 不能以数字开头
var name-123; // 不能包含连字符
var class; // 不能使用关键字3.3 基础数据类型
数值类型
整数 (int):
- 表示整数
- 范围:-2^63 到 2^63 - 1
dartint age = 18; int number = -100;浮点数 (double):
- 表示小数
- 64位双精度浮点数
dartdouble height = 1.75; double pi = 3.14159;
常用操作:
- 加减乘除:
+,-,*,/ - 取模:
% - 自增自减:
++,--
字符串类型
声明:
dart
String name = 'Dart';
String message = "Hello, World!";拼接:
dart
String firstName = 'John';
String lastName = 'Doe';
String fullName = firstName + ' ' + lastName; // 使用 + 运算符
String greeting = 'Hello, $fullName!'; // 使用字符串插值常用方法:
length:获取字符串长度isEmpty:检查字符串是否为空contains():检查字符串是否包含指定子串substring():截取子串replaceAll():替换字符串toLowerCase():转换为小写toUpperCase():转换为大写
布尔类型
声明:
dart
bool isTrue = true;
bool isFalse = false;逻辑判断:
dart
if (isTrue) {
print('条件为真');
} else {
print('条件为假');
}空类型
Dart 2.12+ 引入了空安全(null safety)特性,默认情况下变量不能为 null。
可空类型:
dart
String? name; // 可以为 null
name = null; // 合法
name = 'Dart'; // 也可以赋值空安全操作:
??:空值合并运算符??=:空值赋值运算符?.:可选链运算符
3.4 注释
Dart 支持三种注释方式:
单行注释:
dart// 这是单行注释多行注释:
dart/* 这是多行注释 可以跨越多行 */文档注释:
dart/// 这是文档注释 /// 用于生成 API 文档 void main() { // 代码 }
3.5 实操案例
声明变量、常量,实现简单数值计算、字符串拼接:
dart
void main() {
// 声明变量
var name = 'Dart';
int age = 5;
double height = 1.75;
// 声明常量
final String author = 'Google';
const double pi = 3.14159;
// 数值计算
int a = 10;
int b = 20;
int sum = a + b;
int difference = a - b;
int product = a * b;
double quotient = a / b;
// 字符串拼接
String firstName = 'John';
String lastName = 'Doe';
String fullName = '$firstName $lastName';
String greeting = 'Hello, $fullName!';
// 打印结果
print('Name: $name');
print('Age: $age');
print('Height: $height');
print('Author: $author');
print('Pi: $pi');
print('Sum: $sum');
print('Difference: $difference');
print('Product: $product');
print('Quotient: $quotient');
print('Greeting: $greeting');
}运行结果:
Name: Dart
Age: 5
Height: 1.75
Author: Google
Pi: 3.14159
Sum: 30
Difference: -10
Product: 200
Quotient: 0.5
Greeting: Hello, John Doe!3.6 新手易错点
变量未初始化:
- 在空安全模式下,非可空变量必须初始化
- 错误示例:
int age; // 错误,必须初始化 - 正确示例:
int age = 0;或int? age;
空安全使用错误:
- 错误示例:
String name; name = null; // 错误,非可空变量不能赋值为 null - 正确示例:
String? name; name = null;
- 错误示例:
命名不规范:
- 错误示例:
var 123name; // 错误,不能以数字开头 - 正确示例:
var name123;
- 错误示例:
类型不匹配:
- 错误示例:
int age = '18'; // 错误,类型不匹配 - 正确示例:
int age = 18;或int age = int.parse('18');
- 错误示例:
字符串插值错误:
- 错误示例:
print('Age: age'); // 错误,变量不会被解析 - 正确示例:
print('Age: $age');或print('Age: ${age}');
- 错误示例:
