变量与常量
1.变量声明和初始化
//没有明确类型,编译时根据值明确类型
var name = ‘张三’;
Object name = '对象名字' ;
dynamic name = '李四';
//明确显示类型 如字符串类型String
String name = '王二';
2.默认值
没有初始化的变量,初始值为null(包括数字),因此数字、字符串都可以调用各种方法
int lineCount //为false 的时候抛出异常
assert(lineCount == null)
print (lineCount);//打印结果为null,证明数字类型初始值是null
3.final and const (修饰的变量只能赋值一次。)
使用const 一般 和static 一起用
static const int a = 10;
static const name = '张三';
使用final
final String name = '章三';
final int age = 24;
final 和const区别:final 可以开始不赋值,只能赋值一次。final不仅又const 的编译时常量的特性,最重要的是它是运行时常量,并且是惰性初始化,即再运行是第一次使用前才初始化。
4.dart 中支持的数据类型:
1.常用数据类型有
Numbers (数值类型): int / double
String (字符串)
Booleans(布尔)
List(数组)
Maps(字典)
例子:
int a =10;
double = 10.0;
String str = 'zhangsan';
Booleans b = false;
var array = ['1','2','3','4'];
var lis = new List();
lis.add('1');
lis.add('2');
lis.add('3');
var person= {
’name‘:’张三‘,
’age‘:20
}
2.判断类型方式
var str = '1234';
if(str is String){
print('这是字符串类型');
}else if(str is Int){
print('这是整型类型');
}
5.Dart 运算符
算术运算符
加 a+b 减a-b 乘a*b 除a/b 取余a%b 取整a~/b
关系运算符
a==b a!=b a>b a=b
逻辑运算符
!a取反 a&&b且 a||b或
1.基础赋值运算符 = ??=
2.复合赋值运算符 += -= *= /= %= ~/=
条件运算符
if else
switch(){
case'男':
break;
case'女':
break;
default:
break;
三目运算符
bool flag = false;
String a = flag ? '我是男':‘我是女’;
6.Dart 类型转换
Number 与String类型转换
字符串转int类型 int.parse(str);double.parse(str);
int 转String toString();
try ... catch
String price = ";
try {
var myNub = int.parse(price);//直接这样写会报错
print (myNub);
}catch{
print (0)'}
isEmpty:判断字符串是否为空
isNaN 判断对象是否为NaN
7.Dart 循环
for循环
while (表达式/循环条件)
do{
语句/循环体
}while (表达式/循环条件);
8.数组List 常用语言
/*
List里面常用的属性和方法:
常用属性:
length 长度
reversed 翻转
isEmpty 是否为空
isNotEmpty 是否不为空
常用方法:
List myList = ['1', '2', '3'];
//添加
myList.add('4');
print(myList); //1,2,3,4
myList.addAll(['5', '6']);
print(myList); //1,2,3,4,5,6
// 查找
print(myList.indexOf('7')); //-1
print(myList.indexOf('1')); //0
// 删除
myList.remove('1');
print(myList); //,2,3,4,5,6
myList.removeAt(0); //参数为索引值Í
print(myList); //3,4,5,6
// 修改
myList.fillRange(1, 2, 'a');
print(myList); //3,a,a,6
// 指定位置插入
myList.insert(1, 'b');
print(myList); //3,b,a,a,6
myList.insertAll(1, ['b', 'c']);
print(myList); //3,b,c,b,a,a,6
// 转换
var str = myList.join('-');
print(str); //3-b-c-b-a-a-6
var list = str.split('-');
print(list); //3,b,c,b,a,a,6
/*下面语法演示使用如下
下面参数都是传方法 forEach map where any every*/
// 使用 forEach map where any every
List array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
array.forEach((element) { print(element); });// 12345678910
var arr = array.map((value) { return value * 2; }); print(arr); //(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
var arr = array.where((element) { return element >7; });// (8, 9, 10)
var arr = array.every((element) { return element > 0; }); print(arr); // true 每个值都得大于0 为true 否则为false
var arr = array.any((element) { return element > 5; }); print(arr); //true 其中有值,满足element大于5 为true 否则为false
9.set 常用语法
描述://用它最主要的功能就是去除数组重复内容
//Set是没有顺序且不能重复的集合,所以不能通过索引去获取值
var newSet = new Set();
newSet.add('1');
newSet.add('2');
newSet.add('3');
将数组转set集合
newSet.addAll(newList);
Set转List
List array = newSet.toList;
10.Map字典的使用;
/*映射(Maps)是无序的键值对:
常用属性:
keys 获取所有的key值
values 获取所有的value值
isEmpty 是否为空
isNotEmpty 是否不为空
常用方法:
remove(key) 删除指定key的数据
addAll({...}) 合并映给映射内增加属性
containsValue 查看映射内的值 返回true/false
Map person={ "name":"张三", "age":20, "sex":"男" };
person.addAll({ 'work':['敲键盘',‘打豆豆’], ‘height’:180});
print (person);
11.方法/函数
/*//内置方法、函数。
print();
//自定义方法
自定义方法的基本格式
放回类型 方法名称(参数1,参数2,......){
方法体
return 返回值;
}*/
//举例:
//无返回值
void printInfo(){}
//需要传参数
void printInfo(String Name, Int Age){}
//有返回值
int getUserAge(String Name,Int age){
return age;
}
//带可选参数
String printUser(String name,[int age ]){
return name;
}
printUser('张三');
printUser('张三',19);
//定义一个带默认参数的方法
void printUser(String userName ,[int age = 20]){}
//定义一个命名参数的方法
void printUser(String userName ,{int age =20}){}
printUser('张三',age:20);
//实现一个 把方法当做参数的方法
fn1(){}
fn2(fn){
fn();
}
fn2(fn1);
12.Dart对象
/*描述:
面向对象编程(OOP)的三个基本特征是:封装、继承、多态
封装:封装是对象和类概念的主要特性。封装,把客观事物封装成抽象的类,并且把自己的部分属性和方法提供给其他对象调用, 而一部分属性和方法则隐藏。
继承:面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
多态:允许将子类类型的指针赋值给父类类型的指针, 同一个函数调用会有不同的执行效果 。
Dart所有的东西都是对象,所有的对象都继承自Object类。
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类
一个类通常由属性和方法组成。
*/
//创建对象 对象由属性和方法组成
class Person{
String name = '张三';//定义属性
int age = 20;
//也可以这样初始化对象(p2)
Person(this.name,this.age);
void getInfo(){ print("${this.name}----${this.age}");}//定义方法
void setInfo(int age){ this.age=age; }
}
void main(){
Person p1 = new Person();
p1.name = '李四';
p1.age =20;
p1.getInfo();
//初始化p2 不能像p1一样初始化
Person p2 = new Person('张三',20);
p2.getInfo();
}