void main(){
print('li');
var a = 1;//可以多次赋予
print(a);
final b = -2;//变量只能赋值一次
print(b);
const c = 3;//常量也不能修改
int d = 4;//整型
print(d.isEven);// 是否偶数 返回true
print(d.isOdd);// 是否奇数 返回false
print(b.abs());//取绝对值
double e = 5.6;//浮点型 ~/这个是取整 %取余数
print(e.round());//四舍五入
print(e.floor());//不大于的最大整数
print(e.ceil());//不小于的最小整数
print(e.toInt());//change to int
print(e.toDouble());//like his name
//插值 这里一个很像format 或者是 %s
print("d + b is ${d+b}");
print('b is $b');//如果只是传一个参数就不用花括号了
//string a = 'aaa';也可以使用3引号,多行。字符串前面加r 转义。
//常用属性 length isEmpty isNotEmpty
String ss = 'hhh123666666999999';
print(ss.length);
print(ss.isEmpty);
//contains()是否包含,返回布尔值 索引indexOf() 大小写toLowerCase() toUpperCase()
//trim()截取前后空格split()分隔 substring()截取。相当与python[0:4]
print(ss.contains('hh'));
print(ss.substring(0,4));
//list ,const 不可变list,add()增加元素,insert(插入下标,元素) remove() clear()
// sort() indexOf()返回位置 length长度属性 sublist()截取
// shuffle()打乱 forEach()传入一个方法
var list1 = const [1,2,3, 'ddd'];
print(list1.sublist(0,2));
list1.forEach(print);//循环这个list 调用这个方法
//字典,.key .value containsKey() containsValue()
var doc = {"h1":"here", "h2":"you", "h3":"are"};
print(doc.keys);
print(doc.values);
print(doc.containsKey('hi'));//true
}
list.asMap()//转list为字典 key为0,1,2...
//dynamic 动态类型 可以被赋予不同的值
a = 1;
print(a++)//先打印后加1
print(++a)//先加1再打印
??= 赋值,上图中 b??=10的意思是如果b有值,那么b仍然是那个它原本该有的值,如果b没有值,那么b将会被赋予=之后的值。
//条件表达式
// 三目运算符condition?expr1:expr2
// ??运算符expr1 ?? expr2
void main(){
int a = 1;
String s = a == 1 ? "aaa" : "bbb";
print(s);//aaa //a == 1 ? 如果是true
//返回expr1 反之返回 expr2
String z;
String b = "java";
var c = z ?? b;
print(c);//java 如果两个那个值中有一个没有定义的话 返回另外一个,
// 如果都定义了的话,返回第一个。如果都没有定义的话 返回 null
}
//条件表达式
// if
void main(){
int a = 1;
if(a > 0){
print('1111');
}else if(a == 0){
print(-111);
}else {
print(000);
}
}
for
void main() {
var list1 = [1,2,3,4,5,6,7,8,9,10];
for(int index = 0; index < list1.length; index ++){//初始条件 操作,index++也可以写在花括号里
print(list1[index]);//输出1到10
}
}
for in
void main(){
var list = [1,2,3];
for (var item in list){
if(item != 2){
print(item);//1 3
}
}
}
//1 2 3 4
while
void main() {
int a = 0;
while(a < 5){
print(a++);
}
}
//1 2 3 4
do... while...
void main(){
var b = 1;
do{
print(b++);
}while(b > 0 && b < 5);
}
//1 2 3 4
break 终止循环
void main(){
var list = [1,2,3];
for (var item in list){
if(item == 3){
break;
}
print(item);
}
}
// 1 2
提一下assert
如果布尔条件为false,则使用assert语句来中断正常执行。
void main() {
var a = 1;
assert(a != 3);
print(a);//1
}
void main() {
var a = 1;
assert(a != 1);
print(a);//没有执行
}
continue 跳出当前循环 继续循环
void main(){
var list = [1,2,3,4,5,6];
for (var item in list){
if(item == 2){
continue;
}
print(item);
}
}
//1 3 4 5 6
var command = 'OPEN';
switch (command) {
case 'CLOSED':
executeClosed();
break;
case 'PENDING':
executePending();
break;
case 'APPROVED':
executeApproved();
break;
case 'DENIED':
executeDenied();
break;
case 'OPEN':
executeOpen();
break;
default://默认情况
executeUnknown();
}
与标签调用 标签可以自定义 test