1,变量声明:
请牢记他们之间的关系和用法。
可以使用 var、Object 或 dynamic 关键字,任意类型给予赋值
三个的区别在于
var 是C# 3中引入的其实它仅仅只是一个语法. var本身并不是一种类型,Var声明的变量在赋值的那一刻,就已经决定了它是什么类型.
Object 所有对象的父类,object之所以能够被赋值为任意类型的原因,其实都知道,因为所有的类型都派生自object.
dynamic dynamic运行时确定类型,并不是在编译时候。
下面是个例子,请捂住你们的眼睛,猜一下。哪个是错的。在运行时错误,还是编译时错误呢
For example;
- NO.1
var a = 1;
a = "Test";
- NO.2
object a = 1;
a = "Test";
- NO.3
dynamic a = "test";
a++
答案:
No.1 编译的时候错误, 因为var类型在赋值的那一刻就决定它是什么类型,int 是不可以转化为string的。
No.2 是对的;
NO.3 运行时错误,dynamic编译的时候不会检测,运行的时候string是不会自增长的。
2,常量声明:特殊字符 final ,const
之间的区别:
final 要求变量只能初始化一次
const:声明时必须初始化,并且赋值必需为编译时常量。
大家看下以下例子:
var a = 1;
final f = 3;
const d = 2;
final b = a;//编译器通过
const c = d;//报错:Const variables must be initialized with a constant value
const e = a;
小细节:
被final或者const修饰的变量,变量类型可以省略。
//可以省略int类型的声明
final test = 111;
//等同于上面
final int test = 111;
注意:flnal 和 const 都不能和 var 同时使用
3,数值型
Dart 中只提供了两种类型: int ,double,num(num 包含整形int ,浮点型double);
void main(){
num a = 10; // 整形
a = 20.1; // 浮点型
int i = 10;
i = 10.1; // 这个地方会报错,因为将 int 型的数据改为 double 型
double d = 20.1;
d = 20; // 这个地方会报错,因为将 double 型的数据改为 int 型
}
4,数值型的操作
运算符: + (加)、 -(减) 、*(乘) 、/ (除)、 ~/(取整) 、 %(取余)
常用属性: isNaN、isEven、isOdd
常用方法:abs()、round()、floorl()、ceil()、toInt()、toDouble()
For example; // (assert结果不为true的时候,会报错)
// 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');
5,字符串类型
1,在 dart 中居然可以使用 单引号 和 双引号声明字符串。这两种方式都可以。
void main() { String string = '单引号声明字符串'; String string1 = "双引号声明字符串"; String str7 = "算了,还有正常一点" + ",使用 + 来拼接 "; }
6, bool
- Dart 是强 bool 类型检查,只有bool 类型的值是true 才被认为是true。
- 只有两个对象具有bool类型:true和false,它们都是编译时常量。
- Dart的类型安全意味着可以使用 if(nonbooleanValue) 或 assert(nonbooleanValue) 等代码, 相反Dart使用的是显式的检查值。
- assert 是语言内置的断言函数,仅在检查模式下有效
- 在开发过程中, 除非条件为真,否则会引发异常。(断言失败则程序立刻终止)。
String name = 'Bob'; if (name != null) { print('You have a name!'); } assert(name == null); _counter++;
打印为You have a name!
I/flutter (12455): Another exception was thrown: 'file:///home/byron/Downloads/video/flutter_module/lib/main.dart': Failed assertion: line 42 pos 14: 'name == null': is not true.
I/flutter (12455): You have a name!
但不会影响程序正常运行!
下个章节我们将进行函数学习。小伙伴们,好记性不如烂笔头,多多练习数据类型。
本文暂时没有评论,来添加一个吧(●'◡'●)