Dart语言学习 —— 变量和常量

  1. var

注:与实测结果不一致(来自Flutter中文网,其采用Dart 2.0语法

可以接收任何类型的变量,Dartvar变量一旦赋值,类型便会确定,不能再改变其类型。Dart是一个强类型语言,任何变量都有确定类型,当用var声明一个变量后,Dart在编译时会根据第一次赋值数据的类型来推断其类型,编译结束后其类型就已经被确定。

var t;

t = "hi world";

// 下面代码在dart中会报错,因为变量t的类型已经确定为String

// 类型一旦确定后则不能再更改其类型。

t = 1000;

实测:

void varTest(){

  print('---------var test----------');

  

  // 声明的时候赋值,类型便会确定

  var b = 'b';

  //  b = 10;  报错

  

  // 声明的时候 不 赋值,后期类型同样可以改变

  var a;

  print(a);

  a = 1000;

  print(a);

  print(a.runtimeType);

  

  a = "Hello World";

  print(a);

  print(a.runtimeType);
 
var clapping = '\u{1f44f}';
print(clapping);

  print('\n');


}

 

结果:

 

 

  1. dynamicObject

Object Dart所有对象的根基类,即所有类型都是Object的子类(包括FunctionNull),所以任何类型的数据都可以赋值给Object声明的对象dynamicvar都是关键词,声明的变量可以赋值任意对象。

print('---------dynamic and Object test----------');

  // 声明的时候赋值,后期也能改变赋值类型

  dynamic b = 20;

  print(b); //20

  b = "JavaScript"; //正确

  print(b);

  Object x;

  x = 'Hello Object';

  x = 1000;

  // dynamic 声明的对象编译器会提供所有可能的组合

  // Object  声明的对象只能使用Object的属性和方法

  dynamic a = " ";

  Object a1 = "";

  // no warning

  print(a.length);

  // warning:

  // The getter 'length' is not defined for the class 'Object'

//  print(a1.length);

  print('\n');

 

 

dynamic的这个特点使得我们在使用它时需要格外注意,这很容易引入一个运行时错误.

 

  1. finalconst

如果您从未打算更改一个变量,那么使用 final  const,不是var,也不是一个类型。 一个 final 变量只能被设置一次,两者区别在于:const 变量是一个编译时常量,final变量在第一次使用时被初始化。被final或者const修饰的变量,变量类型可以省略。

final声明时可以不赋值,const声明时必须赋值

final 测试:

void finalTest(){
  print(
'---------final test----------');

 
var a = 'a';
 
// 可以省略 String 这个类型声明(变量类型可以省略)
  // 赋值可以是常量,也可以是变量
 
final str = "hi world";
 
final String str1 = a;
  print(str +
'   ' + str1);

 
// final 只能赋值一次,在第一次使用时被初始化
//  str = '';

 
print('\n');
}

 

const 测试:

void constTest(){
  print(
'---------const test----------');

 
var a = 'a';
 
// 可以省略 String 这个类型声明(变量类型可以省略)
  // 是一个编译时常量
  // 只能 常量 赋值
 
const str = "const test";
 
const String str1 = "const test1";
//  const str2 = a;  // 不能使用变量赋值
 
print(str + '   ' + str1);

  print(
'\n');
}

 

结果:

发布了49 篇原创文章 · 获赞 6 · 访问量 1103

猜你喜欢

转载自blog.csdn.net/qq_36478274/article/details/103473061