网站登录怎么做,优购物官方网站女鞋,图片制作器app,中国能源建设集团有限公司子公司Dart基础学习02--变量及内置类型 Dart中的变量 首先看一个变量的定义和赋值 var name Bob; 在Dart中变量名都是引用#xff0c;这里的name就是一个指向值为Bob的字符串的引用。 默认值 在Dart中没有初始化的变量都有一个默认值null#xff0c;哪怕是int型的变量它的初始值也…Dart基础学习02--变量及内置类型 Dart中的变量 首先看一个变量的定义和赋值 var name Bob; 在Dart中变量名都是引用这里的name就是一个指向值为Bob的字符串的引用。 默认值 在Dart中没有初始化的变量都有一个默认值null哪怕是int型的变量它的初始值也是null,因为在Dart中int也是一个对象。 int lineCount;
assert(lineCount null); 注意这里引入一个Dart的重点知识在Dart中任何可以放入变量中的都属于对象而对象又都是类的一个实例。即使是数字方法null也都是对象并且所有的对象都继承自Object这个类。 可选类型 在Dart中可以选择使用静态类型来定义变量如下 String name Bob; 这样做的好处有以下几点 1.变量可以更好的表达你的意图。 2.编辑器或编译器可以通过变量的静态类型来检测代码中未知饿的错误。 final 和 const 如果一个变量不允许改变的话可以使用final和const关键字来代替var或者其他静态类型。其中final类型的变量只能被赋值一次而const类型的为编译时常量自然也无法改变其值。 一个用final定义的顶级变量或类成员变量只有在它第一次被使用的时候才会初始化。 final name Bob; // 也可以写作: final String name Bob;
// name Alice; // 这一步会报错 注意final的这种懒惰型初始化方法可以有效的提升程序运行速度。 如果你想要让你的变量是编译时常量的话就可以使用const关键字但需要注意的是如果这个变量是一个类的成员变量的话就必须要使用static const。原因是如果没有声明一个类的对象事例的话类的成员变量是不存在的既然不存在自然就无法将其作为编译时常量了。更近一步说只有在程序运行且声明了类的对象实例的情况下其成员变量才是存在的。使用static修饰成员变量的话此变量就与对象实例无关了而可以直接通过类来获得。 const bar 1000000; // 压力单位 (dynes/cm2)
const atm 1.01325 * bar; // 标准大气压 Dart的内置类型 Dart支持的内置数据类型有数字字符串布尔数组集合等。 数字类型 Dart提供两种数字类型 int 整型范围在 -2^53 to 2^53. double 64位双精度浮点类型采用 IEEE 754标准。 int和double都是num的子类num类型之间的基本操作有,-,*,/和位操作,。另外num对象有abs(),ceil(),floor和一些其他的运算方法。如果以上这些方法还满足不了你的话你可以使用Math库。 下面是一些整形变量的定义 var x 1;
var hex 0xDEADBEEF;
var bigInt 34653465834652437659238476592374958739845729; 下面是一下双精度型变量的定义 var y 1.1;
var exponents 1.42e5; 你也可以使用下面这些方法将字符串转换为数字类型 // 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); int类型支持按位操作如,,,|,看一下下面几个例子 assert((3 1) 6); // 0011 1 0110
assert((3 1) 1); // 0011 1 0001
assert((3 | 4) 7); // 0011 | 0100 0111 字符串类型 在Dart中字符串采用utf-16的编码格式。可以使用单引号或双引号来创建变量。 var s1 Single quotes work well for string literals.;
var s2 Double quotes work just as well.;
var s3 It\s easy to escape the string delimiter.;
var s4 Its even easier to use the other delimiter.; 在Dart中可以使用${expression}作为作为字符串的插值若expression 只是一个变量标识符的话可以省略{}。 var s string interpolation;assert(Dart has $s, which is very handy. Dart has string interpolation, which is very handy.);
assert(That deserves all caps. ${s.toUpperCase()} is very handy! That deserves all caps. STRING INTERPOLATION is very handy!); 注意在Dart中用来判断两个对象是都等效。两个字符串等效的条件是他们包含相同的字符串。 在Dart中可以将几个字符串靠在一起或使用来连接它们 var s1 String concatenation works even over line breaks.;
assert(s1 String concatenation works even over line breaks.);var s2 The operator works, as well.;
assert(s2 The operator works, as well.); 另外还可以使用三个来定义多行的字符串 var s1
You can create
multi-line strings like this one.
;var s2 This is also a
multi-line string.; 可以使用r来定义一些原生字符串转义字符无效 var s rIn a raw string, even \n isnt special.; 布尔类型 在Dart中使用bool标识布尔类型。bool类型的只只有true或false。值得注意的是在Dart中只有true会被当作是正确而false或者其他数字null等都会被当作false。 下面这段代码在Dart中if条件是不成立的。应为name是一个对象。 var name Bob;
if (name) {// Prints in JavaScript, not in Dart.print(You have a name!);
} 下面这段代码中的Dart会进入else段而JavaScript则会进入if段 if (1) {print(JS prints this line.);
} else {print(Dart in production mode prints this line.);
} 数组 在Dart中使用List来表示数组这个是比较让我们不能接受的一个设计。不多说看具体怎么用吧 var list [1, 2, 3];
//List list [1, 2, 3];
assert(list.length 3);
assert(list[1] 2); 在List中的单位也是从0开始的。 键值集合 在Dart中使用Map来表示键值类集合。其中的键值可以是任何对象且键不能重复。 下面看一下Map的具体用法 var gifts {
// Keys Valuesfirst : partridge,second: turtledoves,fifth : golden rings
};var nobleGases {
// Keys Values2 : helium,10: neon,18: argon,
}; 同样可以使用构造方法来定义Map var gifts new Map();
gifts[first] partridge;
gifts[second] turtledoves;
gifts[fifth] golden rings;var nobleGases new Map();
nobleGases[2] helium;
nobleGases[10] neon;
nobleGases[18] argon; 往Map中添加新键值 var gifts {first: partridge};
gifts[fourth] calling birds; // Add a key-value pair Map中检索键所对应的值 var gifts {first: partridge};
assert(gifts[first] partridge);
assert(gifts[second] null); 获得Map中键值对的个数 var gifts {first: partridge};
gifts[fourth] calling birds;
assert(gifts.length 2); 从Map中移除键值对 var nobleGases {54: xenon};assert(nobleGases[54] xenon);// containsKey方法可以用于判断是否包含某个Key
assert(nobleGases.containsKey(54));nobleGases.remove(54);
assert(!nobleGases.containsKey(54)); Map的更多用法可以参考Maps。 所有Dart学习内容和相关源码都会在github上的DartNovel开源项目进行同步欢迎关注。 转载于:https://www.cnblogs.com/zqlxtt/p/4825410.html