dart与java互调_Dart与Java不同的地方
數(shù)據(jù)類(lèi)型
基類(lèi)是num
數(shù)值型的操作
運(yùn)算符: +、 - 、* 、/ 、 ~/ 、 %
/ 除法 整數(shù)+余數(shù)
~/ 除法 取整
% 取余
常用屬性: isNaN、isEven、isOdd (是否非數(shù)字、奇偶)
常用方法:abs()、round()、floorl()、ceil()、toInt()、toDouble()
double nan = 0.0 / 0.0; nan -> not a number 只有這種情況才是非數(shù)字
abs 絕對(duì)值
round 最接近的整數(shù) Returns the integer closest to this.
floor 不比它大的整數(shù) Returns the greatest integer no greater than this.
ceil 不比它小的整數(shù) 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);
單引號(hào)能存儲(chǔ)字符串 var aaa = 'asdfasdf';
三個(gè)單引號(hào)是保存長(zhǎng)字符串,支持換行
r 關(guān)鍵字是不能使用轉(zhuǎn)義字符 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集合可以存儲(chǔ)不同類(lèi)型的數(shù)據(jù)
遍歷可以直接傳入方法
加了const關(guān)鍵字說(shuō)明不可修改 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
可以存儲(chǔ)不同類(lèi)型的變量
加了const關(guān)鍵字說(shuō)明不可修改
List轉(zhuǎn)Map key是從0開(kāi)始排序的
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
動(dòng)態(tài)類(lèi)型 dynamic b = 20;
b="kotlin";
//list本來(lái)就可以存動(dòng)態(tài)類(lèi)型
var dList = new List();
dList.add(1);
dList.add("bala");
print(dList);
var list = new List();
list.add("asdf");
list.add(false);
print(list);
運(yùn)算符
??
有值的時(shí)候直接使用當(dāng)前值,沒(méi)有值的時(shí)候使用賦值的值
a ?? b a 有值就用 a 的值 ,否則用 b 的值 int a = 10;
a ??= 66;
print(a);
var a;
var b = "kotlin";
print(a??b);
I/flutter (20501): kotlin
方法
沒(méi)有返回值類(lèi)型可以省略void不寫(xiě)
參數(shù)可以不寫(xiě)類(lèi)型
方法體只有一個(gè)語(yǔ)句可以用 => 代替 myPrint(key,value){
print("key=$key,value=$value");
}
testReturn1(a, b) => "$a,$b";
var hello = 1;
testReturn2(a, b) => hello == 1 ? "$a" : "$b";
{} 大括號(hào)包裹的是可選命名參數(shù),調(diào)用的時(shí)候一定要 name:value 的形式
[] 中括號(hào)包裹的是可選位置參數(shù)
如果既有可選參數(shù)又有普通的參數(shù),那么普通的參數(shù)一定要寫(xiě)在前面 print(myPrint(1, value:2));
print(myPrint1(1, "asdf",1));
//可選命名參數(shù)
myPrint(key, {value,age}) {
print("key=$key,value=$value,age=$age");
}
//可選位置參數(shù)
myPrint1(key, [String value,aa]) {
print("key=$key,value=$value,aa=$aa");
}
可選參數(shù)可以有默認(rèn)值,并且真正傳入的值的數(shù)據(jù)類(lèi)型可以和默認(rèn)值不同 print(myPrint1(1, "asdf",1));
//可選位置參數(shù)
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");
直接調(diào)用匿名方法 ((){
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;
}
閉包
閉包是一個(gè)方法(對(duì)象)
閉包可以訪問(wèn)外部方法的局部變量,并持有其狀態(tài)
注意閉包 a 中返回 printCount 和 printCount()的區(qū)別 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
總結(jié)
以上是生活随笔為你收集整理的dart与java互调_Dart与Java不同的地方的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2021年一季度GDP同比增长18.3%
- 下一篇: 信用卡贷款买车需要什么条件 信用卡贷款买