dart与java互调_Dart与Java不同的地方

数据类型

基类是num

数值型的操作

运算符: +、 - 、* 、/ 、 ~/ 、 %

/ 除法 整数+余数

~/ 除法 取整

% 取余

常用属性: isNaN、isEven、isOdd (是否非数字、奇偶)

常用方法:abs()、round()、floorl()、ceil()、toInt()、toDouble()

double nan = 0.0 / 0.0; nan -> not a number 只有这种情况才是非数字

abs 绝对值

round 最接近的整数 Returns the integer closest to this.

floor 不比它大的整数 Returns the greatest integer no greater than this.

ceil 不比它小的整数 Returns the least integer no smaller than this.

string 字符串

String a = '''asdfasdf

==asdfasdf''';

String b = 'aaa \n bbb';

String bb = r'aaa \n bbb';

print(a);

print(b);

print(bb);

单引号能存储字符串 var aaa = 'asdfasdf';

三个单引号是保存长字符串,支持换行

r 关键字是不能使用转义字符 asdfasdf

==asdfasdf

aaa

bbb

aaa \n bbb

字符串* [] String b = 'agggb';

print(b*5);

print(b[4]);

I/flutter ( 7429): agggbagggbagggbagggbagggb

I/flutter ( 7429): b

集合

List

list集合可以存储不同类型的数据

遍历可以直接传入方法

加了const关键字说明不可修改 var list =[1,"asdfas",'aaaa',false,0.2];

print(list);

list[0]="hhh";

print(list);

var list2 = const[1,2,3];

var list3=new List();

list.forEach(print);

I/flutter (26396): [1, asdfas, aaaa, false, 0.2]

I/flutter (26396): [hhh, asdfas, aaaa, false, 0.2]

I/flutter (26396): hhh

I/flutter (26396): asdfas

I/flutter (26396): aaaa

I/flutter (26396): false

I/flutter (26396): 0.2

Map

可以存储不同类型的变量

加了const关键字说明不可修改

List转Map key是从0开始排序的

foreach可以传入自定义方法 var map={"ad":22,3:"gggg",1:"asd",true:'aa',0.58:'asdf'};

print(map[true]);

print(map["ad"]);

map[1]=false;

print(map[1]);

var finalMap = const{1:2};

map.forEach(myPrint);

print(map.keys);

print(map.values);

var list =['aaa','f',"asd",false,0.85];

print(list.asMap());

void myPrint(key,value){

print("key=$key,value=$value");

}

I/flutter (17298): aa

I/flutter (17298): 22

I/flutter (17298): false

I/flutter (17298): key=ad,value=22

I/flutter (17298): key=3,value=gggg

I/flutter (17298): key=1,value=false

I/flutter (17298): key=true,value=aa

I/flutter (17298): key=0.58,value=asdf

I/flutter (17298): (ad, 3, 1, true, 0.58)

I/flutter (17298): (22, gggg, false, aa, asdf)

I/flutter (17298): {0: aaa, 1: f, 2: asd, 3: false, 4: 0.85}

dynamic

动态类型 dynamic b = 20;

b="kotlin";

//list本来就可以存动态类型

var dList = new List();

dList.add(1);

dList.add("bala");

print(dList);

var list = new List();

list.add("asdf");

list.add(false);

print(list);

运算符

??

有值的时候直接使用当前值,没有值的时候使用赋值的值

a ?? b a 有值就用 a 的值 ,否则用 b 的值 int a = 10;

a ??= 66;

print(a);

var a;

var b = "kotlin";

print(a??b);

I/flutter (20501): kotlin

方法

没有返回值类型可以省略void不写

参数可以不写类型

方法体只有一个语句可以用 => 代替 myPrint(key,value){

print("key=$key,value=$value");

}

testReturn1(a, b) => "$a,$b";

var hello = 1;

testReturn2(a, b) => hello == 1 ? "$a" : "$b";

{} 大括号包裹的是可选命名参数,调用的时候一定要 name:value 的形式

[] 中括号包裹的是可选位置参数

如果既有可选参数又有普通的参数,那么普通的参数一定要写在前面 print(myPrint(1, value:2));

print(myPrint1(1, "asdf",1));

//可选命名参数

myPrint(key, {value,age}) {

print("key=$key,value=$value,age=$age");

}

//可选位置参数

myPrint1(key, [String value,aa]) {

print("key=$key,value=$value,aa=$aa");

}

可选参数可以有默认值,并且真正传入的值的数据类型可以和默认值不同 print(myPrint1(1, "asdf",1));

//可选位置参数

myPrint1(key, [value=10,aa]) {

print("key=$key,value=$value,aa=$aa");

}

方法可以赋值给变量 var fun01 = myPrint;

var fun02 = myPrint(1, value:2);

Function fun03 = myPrint(1, value:2);

字符乘法 var times01 = times;

print(listTimes(list02, times01));

String times(str) => str*3;

List listTimes(List list,String times(str)){

for(int i =0;i

匿名方法 (str) {

print("bala~~$str");

};

匿名变量赋值给变量,可以直接使用 var fun01 = (str) {

print("bala~~$str");

};

fun01("asdf");

直接调用匿名方法 ((){

print("bbbbbbbbaaaaaa");

})();

匿名方法demo var list = ["b","a","l","a"];

print(listTimes01(list));

List listTimes01(List list) {

var func = (str){return str*3;};

for (int i = 0; i < list.length; i++) {

list[i] = func(list[i]);

}

return list;

}

闭包

闭包是一个方法(对象)

闭包可以访问外部方法的局部变量,并持有其状态

注意闭包 a 中返回 printCount 和 printCount()的区别 a(){

int count = 6;

/*printCount(){

print(++count);

}

return printCount;*/

return (){

print(++count);

};

}

var func = a();

func();

func();

func();

I/flutter (28650): 7

I/flutter (28650): 8

I/flutter (28650): 9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值