Flutter Dart基础数据类型

默认值
Dart 的所有东西都是对象,包括数字,函数等。它们都继承自 Object。
Dart语言中对于为初始化的值统一默认为null,不管是字符串还是数值类型。

使用 var 声明变量,可赋予不同类型的值;未初始化时,默认值为 null ;
使用 final 声明一个只能赋值一次的变量
final 要求变量只能初始化一次,并不要求赋的值一定是编译时常量,可以是常量也可以不是。 const 要求在声明时初始化,并且赋值必需为编译时常量。

void main(){
  
  // 声明一个变量 a
  var a;
  print(a);   // 打印 a 的值,显示为 null

  a = 10;
  print(a);   //  打印 10

  a = "测试字符串"; 
  print(a);   // 打印  测试字符串

  a = 30;
  print(a);   //  打印30

  final b = 10;
  b = 20; // 这个会报错
  
  const a  = 10;
  a = 20;   // 这里也会报错:[dart] Constant variables can't be assigned a value.
  
//dynamic 关键字(动态数据类型)
// a 的数据类型可以随意改变,这种类型就是 dynamic
  var a ;
  a = 10;
  a = "dart";

  // 这里我们使用 dynamic 声明
  dynamic d = 10;
  d = 'dart';
}
  1. 数值型
    Dart 中只提供了两种类型:
void main(){
  
  num a = 10;   // 整形
  a = 20.1;     // 浮点型

  int i = 10;
  i = 10.1;     // 这个地方会报错,因为将 int 型的数据改为 double 型

  double d = 20.1;
  d = 20;       // 这个地方会报错,因为将 double 型的数据改为 int 型
}

数值型操作

运算符: +、 - 、* 、/ 、 ~/ 、 %
常用属性: isNaN、isEven、isOdd
常用方法:abs()、round()、floorl()、ceil()、toInt()、toDouble()

void main(){
  
  int i = 10;
  double d = 20.1;
  
  print(i/d);   // 0.49751243781094523
  print(i~/d);  // 0  这个操作是取整

  print( i.isOdd );   // 判断是奇数
  print( i.isEven );  // 判断是偶数
  
// 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');
}

3.字符串
dart 中可以使用 单引号 和 双引号声明字符串

.使用3个引号可以定义多行字符串。
字符串中加入”\n”也开始以换行。
在字符串引号前边加上“r”,则不会转义。
“+”进行多个字符串相加。
“*n”将字符串复制n次。
“==”用于判断两个字符串是否相等。
“[n]”用于去除字符串中的第n个索引的子字符串。

使用”${}”打印表达式的值,打印单个变量的值不用加“{}”。

length打印字符串的长度。
“isEmpty”判断字符串是否为空。

“contains()是否包含某个字符串”。
”substring(startIndex,endIndex)截取一段字符串”。“

startsWith()”是否以某个字符串开头。
“endsWith()是否以某个字符串结尾”。

“indexOf()“某个字符串的下标。
”lastIndexOf()”最后一次出现某个字符串的下标。”

toLowerCase()“转为小写,”toUpperCase()“转为大写。

“trim()”清除空格。”trimLeft()“清除前边的空格。”trimRight()“清除后边的空格。”

split()“分割字符串。
”replace(),replaceAll(‘old’,’new‘)“替换字符串。

void main(){
  String string = '单引号声明字符串';
  String string1 = "双引号声明字符串";

  // 拼接字符串, 输出:单引号空格 或者 双引号空格
  String blockStr = '单引号''空格';
  String blockStr1 = '单引号' '空格';
  String blockStr2 = "双引号""空格";
  String blockStr3 = "双引号" "空格";

  // 下面这两种情况会报错
  // String blockStr4 = '单引号''''空格';
  // String blockStr5 = "双引号""""空格";

  // 测试中间添加字符
  String blockStr6 = '单引号''_''空格';   // 输出:单引号_空格
  String blockStr7 = "双引号""#""空格";   // 注意不能使用 $,$会报错, 输出:单引号#空格

  // 单双引号混合使用
  String blockStr8 = '单""""引号';        // 输出:单""""引号
  String blockStr9 = '单""_""引号';       // 输出:单""_""引号

  // 单双引号混合使用
  String blockStr10 = "双''''引号";        // 输出:双''''引号
  String blockStr11 = "双''_''引号";       // 输出:双''_''引号
  
  String stradd = "str1" + "str2";   //输出 str1str2
  //${表达式}的使用
  var flag = true;
  var str = "测试";

  print("${str} ${flag}");
  // 输出:true测试
}

布尔值
assert 是语言内置的断言函数,仅在检查模式下有效
在开发过程中, 除非条件为真,否则会引发异常。(断言失败则程序立刻终止)。

// 检查是否为空
var fullName = '';
assert(fullName.isEmpty);

// 为0检查
var hitPoints = 0;
assert(hitPoints <= 0);

// 检查是否为 null.
var unicorn;
assert(unicorn == null);

// 检查是否为 NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);

列表

void main(){

  // 使用构造创建
  var list = new List();

  //创建一个int类型的list
  List intlist = [1, 2, 3];

  // 创建一个常量List, 不可以改变的List
  List constList = const[10, 7, 23];

基本操作

//  在数组中可以存放多个不同类型的对象
  var list = [1, 2, 3, 'Flutter', true];
  print(list);      // 输出的结果:[1, 2, 3, Flutter, true]

  // 修改数组下标为2 的值
  list[2] = 'Dart';
  print(list);      // 输出的结果:[1, 2, Dart, Flutter, true]

  // 获取数组的长度
  print(list.length);   // 输出的结果:5

  // 向数组中添加元素
  list.add("value");
  print(list);        // 输出的结果:[1, 2, Dart, Flutter, true, value]

  // 向数组中的指定位置添加元素
  list.insert(1, 'element');  
  print(list);      // 输出的结果:[1, element, 2, Dart, Flutter, true, value]

  // 移除数组中的元素
  list.remove("value");
  print(list);      // 输出的结果:[1, element, 2, Dart, Flutter, true]

  // 移除数组中指定的元素
  list.removeAt(1);
  print(list);      // 输出的结果:[1, 2, Dart, Flutter, true]

  // 判断数组中是否有某个元素
  print(list.indexOf("element"));   // 输出结果:-1

  // 可以使用 sort() 函数来排序, 但是由于我们使用定义的数组类型不一样,就不能使用
  var intlist = [1, 2, 5, 6 ,3];

  // 根据语法提示: List.sort([(int, int) → int compare]) → void
  intlist.sort( (a, b) =>  a.compareTo(b) );
  print(intlist);   // 输出结果:[1, 2, 3, 5, 6]

}

map 集合

void main(){

  // 创建Map 
  var language = {'fisrt': 'dart', 'second': 'java'};

  // 创建不可变的 Map
  var constLanguage = const {'fisrt': 'dart', 'second': 'java'};

  // 通过构造器创建
  var initLanguage = new Map();

基本操作
// 创建Map 
  var map = {'fisrt': 'dart', 'second': 'java'};

  // 获取长度
  print(map.length);    // 输出结果:2

  // 判断是否为空
  print(map.isEmpty);     // 输出结果:false
  print(map.isNotEmpty);  // 输出结果:true

  // 获取到所有的 key
  print(map.keys);        // 输出结果:(fisrt, second)

  // 获取到所有的 values
  print(map.values);      // 输出结果:(dart, java)

  // 判断是否包含某个key
  print(map.containsKey("key"));    // 输出结果:false

  // 判断是否包含某个value
  print(map.containsValue("key"));    // 输出结果:false

  // 添加一个新的元素进去
  map['third'] = 'key';
  print(map);         // 输出结果:{fisrt: dart, second: java, third: key}

  // 循环打印 代码提示:Map.forEach((String, String) → void f) → void
  map.forEach( (key, value) =>  getMap(key, value) );
}

void getMap(key, value){
  print("key:${key}, value:${value}");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值