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
總結
以上是生活随笔為你收集整理的dart与java互调_Dart与Java不同的地方的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年一季度GDP同比增长18.3%
- 下一篇: 信用卡贷款买车需要什么条件 信用卡贷款买