DART 总结(对比JAVA)

DART概述

概念

Dart 是由谷歌开发的通用的编程语言,它常用于构建web、服务器、桌面和移动应用程序。
Dart是一种简洁、清晰、基于类的面向对象的语言,它是基于JavaScript的但是结构要比JavaScript要多。
Dart是一种面向对象的、类定义的、垃圾回收语言。它支持接口、mixin、类对象,具有化泛型、静态类型等。

  • 在dart中,能够放在变量中的所有内容都是对象,每个对象都是一个类的实例。甚至于数字、函数和null值都是对象,并且所有对象都继承自Object类;
  • Dart是强类型语言,但类型标识是可选的,因为Dart可以推断类型,所以可以直接用数据类型定义变量,但是也可以用var声明变量进行类型推断;
  • 能够放在变量中的所有内容都是对象,所以如果一个变量没有初始化值,那它的默认值就为null;
  • 在dart中,即使是函数也是对象,并且具有类型Function类型;
  • 与Java不同,Dart没有关键字public、protected和private。如想设置私有变量或函数,则变量和函数名以下划线(_)开头;
  • dart中,没有函数重载;

特性

1.Dart是AOT(Ahead Of Time)编译的,可编译成快速,可预测的本地代码。
2.Dart可以JIT(Just In Time)编译,开发周期快,为Flutter热重载提供基础。
3.Dart可以轻松创建60fps运行的流畅动画和转场。
4.Dart的声明式编程布局,易于阅读和可视化,不需要单独的声明式布局语言,如:XML,JSX。
5.Dart非常易于学习,具有静态和动态语言,编程人员都熟悉的特性。

Dart的内置库

包名 描述
dart:asynv 异步编程,提供Future,Stream类
dart:collection 集合
dart:convert 不同类型的字符编码解码
dart:core Dart语言核心功能,内置类型
dart:html 网页开发用到的库
dart:io 文件读写,IO相关
dart:math 数字常量以及函数,随机算法等
dart:svg 事件和动画矢量图支持

变量

命名

在Dart语言当中,定义变量的方式是

dataType viriableName = Initial Valute

这里其实和Java是一样的,不仅如此连命名的方式也和Java相同,都是采用驼峰命名的方式。

声明

在声明的时候,除了基本数据类型之外,还有三种变量的声明: vardynamicObject

var:如果没有初始值的时候,var可以变成任意类型。

dynamic:动态任意类型,编译阶段不检查类型。

Object: 动态任意类型,在编译阶段检查类型。

和var的区别:
var如果有初始值,那么类型会被锁定。

void main(){
  // a 的数据类型可以随意改变,这种类型就是 dynamic
  var a ;
  a = 10;
  a = "dart";

  // 这里我们使用 dynamic 声明
  dynamic d = 10;
  d = 'dart';
}

默认值

1.没有初始值的变量会自动获取一个默认值null。
2.一切皆为对象,对象的默认值是null。

私有变量

  • 与Java不同,Dart没有关键字public、protected和private。如想设置私有变量或函数,则变量和函数名以下划线(_)开头

final和const

表示不可改变

const 变量是一个编译时常量,final变量在第一次使用时被初始化

相同点:

  • 声明的类型可以省略
  • 初始化后不能再赋值
  • 不能和var同时使用

不同点:

  • 类级别常量,使用static const
  • const可使用其他const 常量的值来初始化其值
  • 使用const赋值声明,const可以省略
  • 可以更改非final、非const变量的值。即使曾经具有const值
  • const导致的不可变性是可以传递的
  • 相同的const常量不会再内存中重复创建
  • const需要是编译时常量

基本数据类型

8种基本数据类型:

Number

数值型里面有包含了int型和doubule两种类型,这两种和Java类似,其中int是整数型,double是64-bit双精度浮点数,这两种都是Number类型的子类。

void main() {
  num a = 10; // 整形
  a = 20.1; // 浮点型
  print(a);// 20.1

  int i = 10;
  // i = 10.1;     // 这个地方会报错,因为将 int 型的数据改为 double 型 向下转型
  // i = int.parse('10.1'); // 字符串转换为int类型
  i = 10.1.round();// 通过round()方法将double转换为int
  print(i); // 10

  double d = 20.1;
  d = 20; // 这个地方不会报错,因为将 double 型的数据改为 int 型,向上转型
  // 向上转型 : (小范围)---》(大范围),这种属于自动转换
  // 向下转型 : (大范围)---》(小范围),这种属于强制转换
  print(d); // 20.0
}

数值型的操作

运算符: +、 - 、* 、/ 、 ~/ 、 %

常用属性: isNaN、isEven、isOdd

常用方法:abs()、round()、floorl()、ceil()、toInt()、toDouble()

String

Dart字符串是UTF-16编码的字符序列。

1.可以使用单引号或者双引号来创建字符

void main() {
  print("This is a String");
  print('This is also a stirng');
}

这两个是一样的。

单双引号成对嵌套

void main() {
  String str = '单引号中的"双引号"';
  String str1 = "双引号中的'单引号'";
  print(str); // 单引号中的"双引号"
  print(str1); //双引号中的'单引号'

  String str2 = '单引号中的 \'单引号\' ';
  String str3 = "双引号中的 \"双引号\" ";
  print(str2); //单引号中的 '单引号'
  print(str3); //双引号中的 "双引号"
}

2.字符串拼接

void main() {
  String s1 = "First string.....";
  String s2 = "   Second string";
  print(s1 + s2); // First string.....   Second string
  
  // 使用空格即可拼接字符串
  
  // 使用的是空格拼接,多个空格也可以
  String str1 = '单引号空格字符串' '拼接' '~'; // 单引号字符串空格拼接~
  
  // 使用换行符以及空格
  String str2 = '单引号符串'
      '换行了'
      '再加空格'
      '拼接'; // 单引号符串换行了再加空格拼接

  // 单双引号 空格拼接
  String str3 = "单双引号空格字符串" '拼接' "~"; // 单双引号字符串空格拼接~

  // 单双引号 换行符以及空格
  String str4 = "单双引号符串"
      '换行了'
      '再加空格'
      '拼接'; // 单双引号符串换行了再加空格拼接
  
  // 下面这两种情况会报错
  // String blockStr4 = '单引号''''空格';
  // String blockStr5 = "双引号""""空格";
}

3.字符插值

${exprsssion},如果表达式是一个标识符,可以省略{},如果表达式的结果为一个对象,Dart会调用对象的toString()函数来获取一个字符串。

void main() {
  String s1 = "First string.";
  print("String 后面拼接 $s1");// String 后面拼接 First string.

  print("The sum of 1 and 1 equals ${1 + 1}.");// // The sum of 1 and 1 equals 2.
}

4.多行显示
使用双引号创建多行字符
还可以使用(’)和(")

 var s = 'Firtst'
  'Second'
  "Third";
   print(s);// FirtstSecondThird

使用三引表示多行字符

 var multilineString = """This is a
   multiline string
   consistiong of
   multiple lines""";
  print(multilineString);
/*  This is a
   multiline string
   consistiong of
   multiple lines */

5.使用r前缀创建“原始raw”字符串

  String s4 ="adbchi\ndfafa";
  print(s4);// 转译 /n

  String s5 =r"adbchi\ndfafa";
  print(s5);// 不转译 /n

  //输出的结果
  adbchi
  dfafa
  adbchi\ndfafa

Bool

Dart的bool和Java类似只有两种类型,一种是true一种是false,但是,不同的是bool对象未初始化的默认值是null

List

  • 实例化数组

      // 使用构造创建
      var list = new List();
    
      //创建一个int类型的list
      List intlist = [1, 2, 3];
    
      // 创建一个常量List, 不可以改变的List
      List constList = const[10, 7, 23];
    
  • Dart就可以直接打印list包含list的元素,java中直接打印list结果是地址值。

     var list = [0, 1, 2, 3, 4, 5, 6];
     print(list); // [0, 1, 2, 3, 4, 5, 6]
    
  • Dart中List的下标索引和java一样都是从0开始。

  • Dart中List也支持泛型,这点和java一样,同时还可以进行泛型的判断。

     var list1 = List<String>();
     print(list1 is List<String>); // true 这里的 is 是一种类型判断
    
  • 有增删改查的操作,支持倒叙,自带顺序,洗牌,可以使用+将两个List合并。

      var list = [0, 1, 2, 3, 4, 5, 6];
      print(list);
      var list2 = [7, 8, 9, 10, 11];
      print(list + list2); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    
  • 数组中的常用操作

      //  在数组中可以存放多个不同类型的对象
      var list = [1, 2, 3, 'Flutter', true];
      print(list);      // 输出的结果:[1, 2, 3, Flutter, true]
    
      // 修改数组下标为2 的值
      list[2] = 'Dart'; // 输出的结果:[1, 2, Dart, Flutter, true]
    
    	// 从下标0开始,下标2结束(不包括2),修改之间的值为字符a
      list.fillRange(0, 2, 'a'); // 输出的结果:[a, a, Dart, Flutter, true]
    
      // 获取数组的长度
      print(list.length);   // 输出的结果:5
    
      // 向数组中添加元素
      list.add("value"); // [a,
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值