该笔记只针对代码部分作展示,不讲解详细的概念
第一章 Dart 入门基础
Dart 是一个免费且开源的语言,提供了高易用性、研发生产力提高、在全平台极速运行等特性。
Hello Word
第一个程序 hello word
void main (List<String> args){
print("hello world");
}
变量
使用 var 来声明变量
var name = "张三" //即可
常量
使用const 和 final 来声明常量
const name = "张三"
final age = 18
- const 与 final 的区别
-
- final 定义时可以不赋值 但是后续赋值只能赋值一次
-
- const 定义时 必须负值
-
- final 是可以 运行时 定义初始化
final nowTime;
const a = "value";
final b = "value";
final now = new DateTime.now();
// 定义常量 时声明数据类型
const int i = 1;
final String str = "hello";
变量引用与字符串连接
变量引用
var name = "张三";
print("hello $name"); //第一种
print("hello ${name}"); // 第二种
字符串连接
print("你好 " + "张三");
数据类型基础
数据类型 | 关键字 | 描述 |
---|---|---|
整型 | int | 整数型 |
数字 | num | 一个用于装载数值(整数、小数均可)的容器 |
字符串型 | String | 字符串类型 |
浮点数 | double | 浮点数 |
布尔值 | boolean | 布尔类型 |
集合or 数组 | List | 集合 |
Set集合 | Set | 不重复的集合 |
键值对型 | Map<K,T> | 键值对类型 |
void main(List<String> args) {
int a = 10; //整形变量
num b = 5; // 声明了一个用于装载数值(整数、小数均可)的容器
var name = "name"; // 编译器被要求自行推断变量 name 的类型。在此它会被推断为字符串类型。
double weight = 12; // 声明和赋值同时做了 double 类型
String gender; //字符串 gender 可以是 null
// 注意:赋值是将数据装入变量容中。没有赋值的变量的值就是 null。如果允许一个变量的值是 null,在变量声明时就要说明,方法是在他的类型后加上一个问号。
//String? gender; // gender 可以是 null
bool isReady = false; // boolean 类型
List data = [12.34, 100, 'OK', false]; // 集合or 数组
List<String> seasons = [
'sparing',
'summer',
'fall',
'winter'
]; // <类型>用于指定装载的数据类型 泛型
Set<String> colors = {'blue', 'green', 'red'}; //set集合
Map emp_info = {'name': 'Bill', 'age': 20, 'education': 'master'}; //map集合
/*
列表计算
*/
var arr = [1, 2, 3];
var arr1 = [4, 5, 6];
print(arr + arr1);
}
布尔型
布尔型顾名思义就是布尔值 只有真或者假
void main(List<String> args) {
var test = true;
print(test is bool);
}
number型 (数值型)
void main(List<String> args) {
/*
有两种类型
一、int 不能大于64位
二、double
*/
//声明方式
var a = 1;
int b = 1;
double c = 1;
//赋值
// 整形 不能 转double;
//double 可以 转整形(丢失精度)
// string -》 int
print(int.parse("1"));
// string -》 double
print(double.parse("1.1"));
//num 支持整数 浮点数
//int ---> string
print(1.toString());
//is 关键字 用于判断 数据类型
print(1.toString() is String);
//数字的计算
/*
+
-
*
/
%
*/
//print('2'+1) 不存在隐式类型转换
//取整
print(3 ~/ 2); //把小数点后面去除
//数字的方法
print(1.isNaN); // 是不是一个数字
print(1.isInfinite); //是不是一个无穷
print((-1).isNegative); // 是不是 一个负数
print(2.isEven); // 判断是不是一个偶数
//数学方法
//取绝对值
print((-1).abs());
//向上取整
print(1.1.ceil());
//向下取整
print(1.8.floor());
//四舍五入
print(2.5.round());
// 去除小小数点后的东西
print(2.6.truncate());
}
String 类型
void main(List<String> args) {
/*
单双引号 不区分
*/
String str = "abc";
String name = '张三';
//三引号
var string = '''sadsa
adsa
dsa
dsa
sa
''';
//可折行写 并且保留折行
/*
字符串拼接
// 第一种 + 号
// 第二种 变量带入
print("hello $name"); //第一种
$name 后面 不能紧跟一个符号
print("hello ${name}"); // 第二种
*/
//常见的字符串方法
/*
var a = 'a' ;
var b = 'b' ;
*/
// 字符串 比较
// a == b true
// 只能比较相等 不能比较大小
//字符串长度 与 下标
print(str.length);
print(str[0]);
//判空
print(str.isEmpty);
//字符串分割为数组
print(string.split(""));
// 检查是否含有某个字符串
print(str.contains("a"));
//检查是否以一个字符串开头
print(str.startsWith("a"));
//检查是否含有某个字符串并返回下标
print(str.indexOf("a"));
// 从0 开始
print(str.lastIndexOf("c"));
//字符串截取
print(str.substring(1));
//(index) 从头到尾部
//(开始 , 结束)
print(str.substring(1, 2));
//大小写转换
print(str.toLowerCase());
print(str.toUpperCase());
//去除首位空格
var str1 = " hello ";
print(str1.trim());
//字符串的方法都是返回一个字符串 原来的不改变
//正则表达式
var e = new RegExp("e");
print(str1.replaceAll(e, "b"));
//检测是否包含
print(e.hasMatch(str1));
}
List 类型
void main(List<String> args) {
var list = [1, 2, 3, 4, 5]; //第一种声明方式
List<int> list1 = [2,5,6,8]; //第二张声明方式
// list1.runtimeType 查看运行时类型
//常见属性
/*
* first 返回list 集合中第一个元素
* last 返回list 集合中最后一个元素
* length 返回集合长度
* isEmpty 查看集合是否为空
* */
//常用方法
/*
* add() 往list 尾部添加元素
* insert(index,E) 在指定位置添加元素
* remove(index) 删除指定元素
* removeAt(index) 删除指定元素 并返回元素
* clear() 清空list
* map() 修改数组中的元素
* */
list.forEach((e)=>{
print(e)
});
}
set集合
void main(List<String> args){
// 无序 不可重复
var set = {"link","hash","set"}; //第一种创建方法
print(set.runtimeType);
Set<String> set1 = {"link","hash","set"}; //第二种创建方式
print(set1.runtimeType);
/*
* 常见的几种属性
*length 返回长度
*isEmpty 是否为空
* */
/*
* 常见方法
add(value);
remove(value);
clear();
* */
}
Map 类型
void main (List<String> args){
var map = {"name":"zhansan","age":18,"addr":"yunnan"};
print(map.runtimeType);
print(map.length);
print(map.keys);
print(map.values);
//常见属性
/*
map.length; 键值对数量
map.keys; 键的数量
map.values; 值的数量
* */
/*
* 常用方法
map.containsKey(key); 查看是否有这个键
map.containsValue(value); 查看是否有这个值
* */
}
方法与参数
void main(){
int getNumber(int a ,int b){
int c =a+b;
return c;
}
print(getNumber(10, 20));
/*
* 第二种书写方式
* */
//当语句只有一句时
bool isEven(int num) => num%2 ==0? true:false;
print(isEven(10));
//可选命名参数
/*
* */
void getAge(String id, String sid,{int age,String name}){
print("${id}+${sid}+${age}+${name}");
}
getAge("id", "sid",name:"28a");
//可选位置参数
}
闭包
main(List<String> args) {
fn(){
var num = 123;
return(){
num++;
print(num);
};
}
var b = fn();
b();
b();
b();
b();
}
类与对象
类是用于描述实体的一种方式,对象是对这个实体具体体现
class Student{
String name;
int age;
Student(this.name,this.age);
// 构造函数
// 命名构造函数
// Student.dart.now(){
// print("now");
// }
}
main(){
new Student("张安", 18);
// new Student.dart.now();
}
identical函数
main(){
// var o1 = new Object();
// var o2 = new Object();
// print(identical(o1, o2));
//false
// 实例化常量构造函数
var o1 = const Object();
var o2 = const Object();
print(identical(o1, o2));
//true
// 当const 所指向的值或对象相同的时候 他们的内存地址就相同
}
后续有时间又更新吧