了解Dart
强类型编程语言,Dart之下一切皆对象
Dart 是一种跨平台的客户端开发语言。具有专门为客户端优化、高生产力、快速高效、可移植易学的风格。Dart主要由Google负责开发和维护
继续学习查看
重要概念
-
在 Dart 中 甚至连 数字、方法和
null
都是对象。所有的对象都继承于 Object 类 -
Object所有Dart对象的基类,所以每个其他Dart类都是Object的子类,Object在编译时检查类型
-
虽然dart语言通过var进行运行时类型推导,但是Dart是强类型的语言,类型一旦确定就不可以改变
-
Dart 没有 public、 protected、 和 private 关键字。如果一个标识符以 (_) 开头,则该标识符 在库内是私有
基本语法
代码居多可复制自行运行学习
1、变量和常量
//变量和常量
var name = 'Bob'; //会指定变量类型,后面是不能修改name的类型 如现在是String 修改成int会报错
Object name1 = '张三';//不会指定变量类型,后面能修改name的类型 如现在是String 修改成int
dynamic name2 = '李四'; //同Object dynamic任意的意思
2、数字类型
///数字类型
num a = 10;//数字类型 可以代表整数,也可以代表小数
//a = 12.5;
int b = 15; //整数 继承 num
double y = 1.1; //小数 继承 num
void main() {
int d = 15;
print(d.isEven);//是否基数
print(d.isOdd);//是否偶数
//java一样
print("a++ =${a++}");//10
print("++a =${++a}");//12
print("a-- =${a--}");//12
print("--a =${--a}");//10
int e= -100;
print(e.abs());//绝对值
double f = 10.5;
print(f.round());//四舍五入
print(f.floor());//不大于它的最大整数
print(f.ceil());//不小于它的最大整数
print(f.toInt());//转成整数
print(d.toDouble());//转成小数
}
3、字符串和bool
//字符串
void main() {
String str1 = "hello";// ''
//""" 3个显示多行
String str2 = """hello
dart""";// '''
// \n 换行
String str3 = "sdffksdjf \n lskdf";
// + 和java一样
print(str1 + str2);
// * 字符串复制两遍
print(str1 * 2);
// == 比内容
print(str1 == str2);
//区第几个字符 下方值 h
print(str1[0]);
int a = 1;
int b = 2;
print('a + b = ${a + b}');//值 a+b=3
print('a = $a');//值 a=1
}
///bool true false
void main() {
bool isToor = false;
bool isToor1 = true;
}
小知识类型互转
// String 转 int
var one = int.parse('1');
assert(one == 1);
// String 转 double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);
// int 转 String
String oneAsString = 1.toString();
assert(oneAsString == '1');
// double 转 String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
4、list集合
///数组
var list=[1,2,3];//创建List:
var list1=const[1,2,3];//创建不可变的List:
var list2 =new List();//构造创建:
//常用操作:[],length;add(),insert();remove(),clear();indexOf(),lastIndexOf();
//sort(),sublist();shuffle(),asMap(),forEach();
void main() {
var list1 = [1, 2, 3, "Dart", true];
print(list1);//[1, 2, 3, Dart, true]
print(list1[1]);//2
list1[1] = "huangxiaoguo";
print(list1);//[1, huangxiaoguo, 3, Dart, true]
//不可变的List
var list2 = const [1, 2, 3];
var list3 = new List();
//常用操作
var list = ["Hello", "Dart"];
print(list[1]);//Dart
print(list.length);//2
list.add("New");
print(list);//[Hello, Dart, New]
list.insert(1, "aaa");
print(list);//[Hello, aaa, Dart, New]
list.remove("aaa");
print(list);//[Hello, Dart, New]
print(list.indexOf("Dart"));//1
list.sort();//排序
print(list);//[Dart, Hello, New]
print(list.sublist(2));//[New]
list.forEach(print);//循环
list.clear();//清除
print(list);//[]
}
5、map
///map
//创建Map:var language={“first”:“Dart”,“two”:“java”};
//创建不可变Map:var language=const{“first”:“Dart”,“two”:“java”};
//构造创建:var language=new Map();
//[],length;isEmpty(),isNotEmpty();keys,values;containsKey(),containsValue();
//remove();forEach();asMap();
void main() {
var map1 = {"first": "Dart", "two": "java", 1: true};
print(map1); //{first: Dart, two: java, 1: true}
print(map1["first"]);//Dart
print(map1[1]);//true
map1[1] = false;
print(map1);//{first: Dart, two: java, 1: false}
var language = const {"first": "Dart", "two": "java"};
var language1 = new Map();
//常用操作
var map = {"first": "Dart", "two": "java", "three": "js"};
print(map.length);//3
print(map.keys);//(first, two, three)
print(map.values);// (Dart, java, js)
//contains 包含
print(map.containsKey("first"));//true
print(map.containsValue("python"));//false
map.remove("two");//
print(map);//{first: Dart, three: js}
///循环
//key=first,value=Dart
//key=three,value=js
map.forEach(f);
var list=["1","2","3"];
print(list.asMap());//{0: 1, 1: 2, 2: 3}
}
void f(key, value) {
print("key=$key,value=$value");
}
6、运算符
///关系运算符
void main(List<String> args) {
int a = 5;
int b = 9;
print("a==b =${a == b}");//a==b =false
print("a!=b =${a != b}");//a!=b =true
print("a>b =${a > b}");//a>b =false
print("a<b =${a < b}");//a<b =true
print("a>=b =${a >= b}");// a>=b =false
print("a<=b =${a <= b}");//a<=b =true
String c = "466";
String d = "121";
print("c==d =${c == d}");// c==d =false
String m = "huang";
String n = "huang";
print("m==n =${m == n}");// m==n =true
}
///赋值运算符
void main(List<String> args) {
int a = 11;
int b, c = 5;
b ??= 10;
c ??= 10;
//??=表示如果本身为空的时候进行赋值,如果不为空就不会再进行赋值
print("b=$b,c=$c");//b=10,c=5
print("a+=2 ==>${a += 2}");//a+=2 ==>13
print("a-=2 ==>${a -= 2}");//a-=2 ==>11
print("a*=2 ==>${a *= 2}");//a*=2 ==>22
double m = 10;
print("a/=2 ==>${m /= 2}");//a/=2 ==>5.0
print("a%=2 ==>${a %= 2}");//a%=2 ==>0
a=11;
print("a~/=2 ==>${a ~/= 2}");//a~/=2 ==>5
}
///条件表达式
///三目表达式:condition? expr1:expr2
///??运算符:expr1:expr2
void main(List<String> args) {
int gender = 1;
String str = gender == 0 ? "Male" : "Frmale=$gender";
print(str);//Frmale=1
String a;
String b = "java";
String c = a ?? b;
//a为空的时候打印b,a不为空是打印a
print(c);//java
a = "huang";
b = "java";
c = a ?? b;
print(c);//huang
}
7、控制流语句
///条件语句
///if 语句
///if…else if语句
///if…else if…else语句
void main(List<String> args) {
int score = 60;
if (score > 90) {
print("优秀");
} else if (score > 60) {
print("良好");
} else if (score == 60) {
print("及格");
} else {
print("不及格");
}
//及格
}
///循环语句
///for循环
///for…in循环
void main(List<String> args) {
var list = [1, 2, 3, 4, 5];
for (var index = 0; index < list.length; index++) {
print(list[index]);
}
//1 2 3 4 5
print("-----------------------------------------");
for (var item in list) {
print(item);
}
//1 2 3 4 5
}
///while语句
///while循环
///do…while循环
void main(List<String> args) {
int count=0;
while(count<5){
print(count++);
}
//0 1 2 3 4
print("--------------$count---------------");
//--------------5---------------
do{
print(count--);
}while(count>-3 && count<5);
//5 4 3 2 1 0 -1 -2
}
///break和continue
///终止循环:break
///跳出当前循环:continue
void main(List<String> args) {
var list = [1, 2, 3, 4, 5];
for (var item in list) {
if (item == 2) {
break;
}
print(item);
}
//1
print("------------------------");
for (var item in list) {
if (item == 2) {
continue;
}
print(item);
}
// 1 3 4 5
print("------------------------");
var list2=[9,8,7];
for (var item in list) {
for (var item2 in list2) {
if(item2==8){
break;
}
print(item2);
}
}
//9 9 9 9 9
}
///switch…case语句
///比较类型:num ,String ,编译期常量,对象,枚举
///非空case必须有一个break
///default处理默认情况
///continue跳转标签(特有,其他语言少见)
void main(List<String> args) {
String language = "H5";
switch (language) {
case "Dart":
print("---------Dart-------");
break;
case "H5":
print("---------H5-------");
break;
default:
print("-----none------");
break;
}
//---------H5-------
print("-------------------------------");
switch (language) {
case "Dart":
print("---------Dart-------");
break;
case "H5":
print("---------H5-------");
continue D;
D:
case "JAVA":
print("---------JAVA-------");
break;
default:
print("------none-----");
break;
}
//---------H5-------
//---------JAVA-------
}