1.可以放在变量中的所有东西都是一个对象,每个对象都是一个类的实例。数字、函数和 null
对象。除了null
,所有对象都继承自Object该类。
2.尽管 Dart 是强类型的,但类型注释是可选的,因为 Dart 可以推断类型。在上面的代码中,number
被推断为类型int
3.如果您启用null 安全,则变量不能包含,null
除非您说它们可以。您可以通过在变量?
类型的末尾放置一个问号 ( )来使变量可以为空。例如,一个类型的变量int?
可能是一个整数,也可能是null
. 如果你知道一个表达式永远不会计算为,null但 Dart 不同意,你可以添加
!断言它不是空的(如果是,则抛出异常)。一个例子:
int x = nullableButNotNullInt!
4.当您想明确表示允许任何类型时,请使用该类型Object?
(如果您已启用 null 安全)、Object
, 如果您必须将类型检查推迟到运行时 —可以考虑特殊类型dynamic
5.Dart 支持泛型类型,例如List
(整数列表)或List
(任何类型的对象列表)。
6.Dart 支持顶级函数(例如main()
),以及绑定到类或对象的函数(分别为静态和实例方法)。您还可以在函数内创建函数(嵌套或局部函数)。
7.同样,Dart 支持顶级变量,以及绑定到类或对象的变量(静态和实例变量)。实例变量有时称为字段或属性。
8.与Java,Dart不具备关键字public
,protected
和private
。如果标识符以下划线 ( _
)开头,则它对其库是私有的。有关详细信息,请参阅 库和可见性。
9.标识符可以以字母或下划线 ( _
)开头,后跟这些字符加数字的任意组合。
10.Dart 有表达式(有运行时值)和 语句(没有)。例如,条件表达式 condition ? expr1 : expr2
的值为expr1
orexpr2
。将其与没有价值的if-else 语句进行比较。一个语句通常包含一个或多个表达式,但一个表达式不能直接包含一个语句。
11.Dart 工具可以报告两种问题:警告和错误。警告只是表明您的代码可能无法工作,但它们不会阻止您的程序执行。错误可以是编译时或运行时。编译时错误完全阻止代码执行;运行时错误会导致在代码执行时引发异常。
基本数据类型 | 说明 |
---|---|
int | 整型 |
double | 浮点型 |
num | num是int,double的基类 |
String | 字符类型 |
bool | 布尔 |
Dart中的基本数据类型中,基本和Java相似都有int,double,String等类型,区别是没有像short,float,char这样的小类型。所有类型都是对象,不需要像Java一样拆箱装箱的操作。例如:String age = 20.toString();数字也是对象,可以直接进行方法操作。
集合 | 说明 |
---|---|
List | 列表集合 |
Map | 键值对 |
Set | 无序集合 |
运算符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
~/ | 取整 |
% | 取余 |
++ | 自增 |
-- | 自减 |
运算符 | 说明 |
---|---|
== | 判断值或内容是否相等 |
!= | 判断是否不相等 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
位运算符 | 说明 |
---|---|
& | 与 |
| | 或 |
^ | 异或 |
! | 取反 |
&& | 短路与 |
|| | 短路或 |
运算符 | 说明 |
---|---|
+= | int i = 2; print(i+=5); 输出:7 |
-= | int i = 2; print(i-=5); 输出:-3 |
*= | int i = 2; print(i*=5); 输出:10 |
/= | double i= 2; print(i/=5);输出:0.4 |
%= | int i = 2; print(i%=5); 输出:2 |
??= | int i; i ??= 20; print(i); //如果变量没有赋值才进行赋值,否则不进行赋值 |
三目运算符
- int i = 1;
- int j = 2;
- print(i < j ? 'A':'B');
- //输出:A
??运算符,如果??前面的表达式为null,则使用??后面的值
- int i=1;
- int j = 2;
- print(i ?? j);
- //输出:1
- int i;
- int j = 2;
- print(i ?? j);
- //输出:2
?. 判空引用操作符
- String str;
- int len = str?.length; //如果没有?,会报错
- print(len); //null
as类型转换
- num a = 1;
- int b = a as int;
- print(b);
is/is! 类型判断
- int b = 1;
- print(b is int);
.. 级联操作符
- final Set _elements = HashSet();
- final List elements = _elements.toList()..sort();