dart基础语法(1)

今晚重新把视频看了一遍,总结下 dart基础语法上部分的知识点

一.Hello World

老师当初教育的,管你什么语言,都给我从hello world开始

void main(){
  print("hello world");
}
  • 一、Dart语言的入口也是main函数,并且必须显示的进行定义;

  • 二、Dart的入口函数main是没有返回值的;

  • 三、传递给main的命令行参数,是通过List<String>完成的。

    • 从字面值就可以理解List是Dart中的集合类型。

    • 其中的每一个String都表示传递给main的一个参数;

  • 四、定义字符串的时候,可以使用单引号或双引号;

  • 五、每行语句必须使用分号结尾,很多语言并不需要分号,比如Swift、JavaScript;

二.变量 

2.1明确的声明

变量类型 变量名称 = 赋值;

String name = “杨彬”

2.2类型推导(var/final/const)

var/dynamic/const/final 变量名称 = 赋值;

var  声明的是            变量

dynamic 忽略吧  在开发中, 通常情况下不使用dynamic, 因为类型的变量会带来潜在的危险

const/final 声明的是  常量(JAVA里面这玩意不可变)

那问题来了。这玩意都是常量,有啥区别

1.const 对应的是常量值,必须赋值,编译期间需要有一个确定的值

2.final可以通过计算 函数方法 获取,运行期间来确定       

var age = 24

三.数据类型

3.1数字类型

记住一句话   整数用int,浮点数用double就行了。

// 1.整数类型intint age = 18;int hexAge = 0x12;print(age);print(hexAge);
// 2.浮点类型doubledouble height = 1.88;print(height);

字符串和数字之间的转化:

// 字符串和数字转化// 1.字符串转数字var one = int.parse('111');var two = double.parse('12.22');print('${one} ${one.runtimeType}'); // 111 intprint('${two} ${two.runtimeType}'); // 12.22 double
// 2.数字转字符串var num1 = 123;var num2 = 123.456;var num1Str = num1.toString();var num2Str = num2.toString();var num2StrD = num2.toStringAsFixed(2); // 保留两位小数print('${num1Str} ${num1Str.runtimeType}'); // 123 Stringprint('${num2Str} ${num2Str.runtimeType}'); // 123.456 Stringprint('${num2StrD} ${num2StrD.runtimeType}'); // 123.46 String

 3.2布尔类型

无非跟java一个样  boolean   true false 

但是注意一个问题:

注意: Dart中不能判断非0即真, 或者非空即真

Dart的类型安全性意味着您不能使用if(非booleanvalue)或assert(非booleanvalue)之类的代码。

  var message = 'Hello Dart';  // 错误的写法  if (message) {
   
       print(message)  }

3.3字符串类型

var s1 = 'Hello World';var s2 = "Hello Dart";var s3 = 'Hello\'Fullter';var s4 = "Hello'Fullter";

使用${expression} 来做拼接。其实像 java +

// 3.拼接其他变量var name = 'coderwhy';var age = 18;var height = 1.88;print('my name is ${name}, age is $age, height is $height');

3.4集合类型 

 Dart则内置了最常用的三种:List / Set / Map

List可以这样来定义:

// List定义// 1.使用类型推导定义var letters = ['a', 'b', 'c', 'd'];print('$letters ${letters.runtimeType}');
// 2.明确指定类型List<int> numbers = [1, 2, 3, 4];print('$numbers ${numbers.runtimeType}');

其中,set可以这样来定义:

  • 其实,也就是把[]换成{}就好了。

  • SetList最大的两个不同就是:Set是无序的,并且元素是不重复的。

// Set的定义// 1.使用类型推导定义var lettersSet = {'a', 'b', 'c', 'd'};print('$lettersSet ${lettersSet.runtimeType}');
// 2.明确指定类型Set<int> numbersSet = {1, 2, 3, 4};print('$numbersSet ${numbersSet.runtimeType}');

最后,Map是我们常说的字典类型,它的定义是这样的:

// Map的定义// 1.使用类型推导定义var infoMap1 = {'name': 'why', 'age': 18};print('$infoMap1 ${infoMap1.runtimeType}');
// 2.明确指定类型Map<String, Object> infoMap2 = {'height': 1.88, 'address': '北京市'};print('$infoMap2 ${infoMap2.runtimeType}');

四.函数

dart是没有java函数的重载的 切记

函数的定义方式:

返回值 函数的名称(参数列表) {
   
     函数体  return 返回值}

4.1可选参数

可选参数可以分为 命名可选参数 和 位置可选参数

定义方式:

命名可选参数: {param1, param2, ...}位置可选参数: [param1, param2, ...]

命名可选参数的演示:​​​​​​​

// 命名可选参数printInfo1(String name, {int age, double height}) {
   
     print('name=$name age=$age height=$height');}
// 调用printInfo1函数printInfo1('why'); // name=why age=null height=nullprintInfo1('why', age: 18); // name=why age=18 height=nullprintInfo1('why', age: 18, height: 1.88); // name=why age=18 height=1.88printInfo1('why', height: 1.88); // name=why age=null height=1.88

位置可选参数的演示:​​​​​​​

// 定义位置可选参数printInfo2(String name, [int age, double height]) {
   
     print('name=$name age=$age height=$height');}
// 调用printInfo2函数printInfo2('why'); // name=why age=null height=nullprintInfo2('why', 18); // name=why age=18 height=nullprintInfo2('why', 18, 1.88); // name=why age=18 height=1.88

命名可选参数, 可以指定某个参数是必传的(使用@required, 有问题)

// 命名可选参数的必须printInfo3(String name, {int age, double height, @required String address}) {
   
     print('name=$name age=$age height=$height address=$address');}

4.2. 参数默认值

参数可以有默认值, 在不传入的情况下, 使用默认值

  • 注意, 只有可选参数才可以有默认值, 必须参数不能有默认值​​​​​​​

// 参数的默认值printInfo4(String name, {int age = 18, double height=1.88}) {
   
     print('name=$name age=$age height=$height');}

Dart中的main函数就是一个接受可选的列表参数作为参数的, 所以在使用main函数时, 我们可以传入参数, 也可以不传入

 

Guess you like

Origin blog.csdn.net/yangbin0513/article/details/121527914