前言
- Dart语言是一个真正面向对象的语言,宗旨是一切皆对象,Object是一切类的基类,Object声明的类型可以是任意类型(在Dart语言连方法,数字和"null"都是对象,数字包括int),如果值没有初始化,默认值为null
- Dart语言也拥有头部函数,形式为void main(){}格式,(如果知道JAVA的话,这个就相当Java的public static void main(Sting[] args){})
- 对于作用域,和JAVA不同的是,Dart语言没有public protected private等关键字,在Dart语言中没有这些关键字,当方法名或变量以"_"开头,表明此方法或变量是私有的
基础类型
var和dynamic
- var : 由于Dart语言是一种弱语言类型,所以类型可以用var关键字表示,var在声明的变量赋值的那一刻,就决定了他是什么类型,例如var i = "zhanglu" ------------确定这个类型为String,而声明一个没有初始化的类型例如 var j; 那么他的类型是Object类型
- dynamic:不是在编译时候确定实际类型的, 而是在运行时。dynamic声明的变量行为与Object一样,使用一样,所以在编译期可以随时修改他的值,关键在于运行时原理不同。比较影响性能
final ,const的区别
final与const从使用上根本看不出区别,但是final是运行时常量-------运行时确定,而const是编译器常量-------编译时确定,它的值在编译期就可以确定,编译时常量能够让代码运行的更高效.例如:
const i = 2; final j = i ; //正确 const的时间节点在final之前
final i = 2; const j = i; // 错区 final不能在编译时确定值,因此const也不能确定值
## 内置的类型
与Java的八大内置基本数据类型不同,Dart 内置支持下面这些类型:
- - numbers
- - strings
- - booleans
- - lists (也被称之为 *arrays*)
- - maps
- - runes (用于在字符串中表示 Unicode 字符)
- - symbols
------------数值----------------------
- `num`是数字类型的父类,有两个子类` int`和 `double`。
- Dart在编码时,可以将int当short,int,long使用
- Dart根据平台不同 如果我们写的代码超过4个字节,那么Dart将会将其编译成JAVA当中的Long,否则编译成shate或者int
- int 在JS里是32位,在JAVA中占64位-------Dart里int是一个类,JAVA里是关键字
------------------字符串-----------
Dart 字符串是 UTF-16 编码的字符序列。 可以使用单引号或者双引号来创建字符串,单引号和双引号可以嵌套使用,否则需要使用`\`进行转义。字符串中也可以引用变量与表达式。
- //如果插入一个简单的标识符,而后面没有紧跟更多的字母数字文本,那么{}应该被省略。例如:var a = "my name is $name!"; var b = "my name is ${name.toUpperCase()}!";
- 与Java一样可以使用 `+` 操作符来把拼接字符串,也可以把多个 字符串放到一起来实现同样的功能:
- 使用三个单引号或者双引号可以 创建多行字符串对象,例如:
var s1 = ''' You can create multi-line strings like this one.''' var s2 = """This is also a multi-line string.""";
4.提供一个 `r` 前缀可以创建一个 “原始 raw” 字符串
print(r"换行符:\n"); // 换行符:\n r:不需要转义
print("换行符:\\n"); // 换行符:\n
Lists---------------数组
这里以冒泡排序为例
/**
* 冒泡排序
*/
List<int> list = [12, 95, 65, 86, 75, 65];
// 循环遍历---下标从0开始,list.length - 1是最后一位下
for (var i = 0; i < list.length - 1; i++) {
for (var j = 0; j < list.length - i - 1; j++) {
// 倒序---------如果后边的比自身大,就交换位置
if (list[j] < list[j + 1]) {
// 交换位置
int temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
}
// 打印
print(list.toString());
打印:[95, 86, 75, 65, 65, 12]
// 赋值
list[0] = 56; 打印:[56, 95, 65, 86, 75, 65]
// 在值前边加const,可以定义为一个不变的常亮,list不可以add了,但可以引用其他对象
List<int> list =const [12, 95, 65, 86, 75, 65];
list = [1,3,4]
// 在引用前边加const,那么这个引用就不可以引用其他类型了
Maps键值对相关的对象。 键和值可以是任何类型的对象。每个 键 只出现一次, 而一个值则可以出现多次。
var maps = {'a': "zhanglu", 'b': "zhangsan", 'c': "lisi"};
// 第二种
var maps = new Map();
maps['a'] = "lichang";
maps['b'] = "zhangli";
maps['c'] = "wujing";
//如果插入一个简单的标识符,而后面没有紧跟更多的字母数字文本,那么{}应该被省略。
// var a = "my name is $name!";
// var b = "my name is ${name.toUpperCase()}!";
print("${maps['a']}和${maps['b']}以及${maps['c']}");
var keys = maps.values;
for (var key in keys) {
print(key);
}