【dart语言基础一】

本文介绍了Dart语言的基础知识,包括注释、箭头语法、类的声明与继承、变量声明与数据类型,以及函数的定义和参数使用。还涵盖了final和const的区别、函数的可选参数以及类的构造函数。此外,讲解了算术、相等、类型判断等操作符的使用。
摘要由CSDN通过智能技术生成

(一)dart语言基础

  • 首先了解一下注释
多行注释    /** .. **/

单行注释://	
  • 箭头语法
    =>
    比如:
void main() => runApp(MyApp());

就等于:

void main() {
 return runApp(MyApp());
}
class 代表类
extends 代表继承
var 声明变量而且不指定类型
_ 下划线声明的变量是私有的,dart中没有public private 关键字 默认的都是public 
  • 数据类型
String
Int
Double
Set
Map
List
Num
bool
Runes
等
  • 字符串的声明与取值
"字符串"'字符串'(单引号双引号均可)。
取值:var content = 'dart语法'
取值的时候直接使用:$content
  • 变量声明
var content = 'Dart 语法'; //使用 var 来声明变量,不需要特别指定变量的数据类型,因为 Dart 会自动推断其数据类型,所以可以使用 var 来定义任何的变量。var 并不是直接存储值,而是存储的值的对象的引用

var switchOn = true;
var index = 0;

String name = "Dart 语法";//明确数据类型
int count = 0;
dynamic example = 'Dart语法';//数据类型是动态可变的,也可以定义任何变量,但是和 var 不同的是,var赋值后,就不能改变数据类型。
Object index = 0;//Dart 里所有东西都是对象,是因为 Dart 的所有东西都继承自 Object,因此 Object 可以定义任何变量,而且赋值后,类型也可以更改:
  • final 和 const
final content = 'Dart语法'
const content = 'Dart语法'
// 使用 final 和 const 的时候可以把 var 省略
// final 和 const 变量只能赋值一次,而且只能在声明的时候就赋值
// const 是隐式的 final
// 在使用 const 的时候,如果变量是类里的变量,必须加 static ,是全局变量时不需要加,例如:
区别:const 是编译时常量,在编译的时候就初始化了,但是final 变量是当类创建的时候才初始化。
  • 函数
Dart语言中 Function代表函数
返回值类型 函数名(函数参数) {
}
比如:
void firstFunc() {
}
bool helloWord(String msg,String name){
	print(name + 'say' + msg);
	return (true);
}
  • 函数的参数
函数的参数分为:
1、必选参数:必填的参数(首先必选参数在前面,和普通的参数定义一样,后面跟可选参数,可选参数需要用 {} 或者 [] 包起来,用不同的括号,可选参数的意义与用法也不一样。
)
2、可选参数:可填可不填的参数

bool helloWord(String msg , {String from, int clock}){
  print(msg+" from " + from + " at " + clock.toString());
  return true;
}

bool helloWord(String msg , {@required String from, int clock}){
  print(msg+" from " + from + " at " + clock.toString());
  return true;
}

bool say(String msg , [String from , int clock]){
  print(msg+" from " + from + " at " + clock.toString());
  return true;
}

 bool say(String msg , {String from = 'empty', int clock = 0}){
    print(msg+" from " + from + " at " + clock.toString());
    return true;
}
定义一个person类
class Person {
	String name,age
	Person(String name,String age) {
	this.name = name;
	this.age = age;
	}
}
默认构造函数的方法:
Person(String name,String age)

Dart中的构造函数语法糖
Person(this.name,this.age);

那么 Person类就可以简化为:
class Person {
	String name,age
	Person(this.name,this.age);
}

  • 类创建
Persion person = Person('张三','18')

print(person.name)
  • 操作符
算术运算操作符
+var a = 2 + 3;
-var a = 2 - 3;
-exper	负数	var a = -1;
*var a = 2 * 3;
/	除,精确除法	var a = 5 / 2; // a的结果为 2.5
~/	整除	var a = 5 ~/ 2; // a的结果为 2
%	取余	var a = 5 % 2; // a的结果为 1

相等和大小关系操作符
==	是否相等	assert(2 == 2);
!=	不等于	assert(2 != 3);
>	大于	assert(3 > 2);
<	小于	assert(2 < 3);
>=	大于等于	assert(3 >= 3);
<=	小于等于	assert(3 <= 3);

类型判断操作符
as	类型转换	(emp as Person).firstName = 'Bob';
is	判断是否是某个类型,如果是的话,就返回 true	
if (emp is Person) {
// 如果 emp 是 Person 类型
emp.firstName ='Bob';
}
is!	判断是否不是某个类型,如果不是的话,就返回 true	
if (emp is! Person) {
// 如果 emp 不是 Person 类型
}

赋值操作符
var a,b;
a = 1; //使用 = 赋值
b ??= 1; // 当 b 是空的话才赋值,否则不会赋值

逻辑运算操作符
!expr	反转表达式(将 false 改为 true,反之亦然)	
!(2 == 3);// 结果为 true
`	`	逻辑或	(2 == 2) || (2 == 3);// 结果为 true
&&	逻辑与	(2 == 2&& (3 == 3);// 结果为 true

按位与移位运算符
&	按位与
对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。	final value = 0x22;
final bitmask = 0x0f;
var result = value & bitmask;//结果为 0x02

`	`	按位或,对于每一个比特位,当两个操作数相应的比特位至少有一个1时,结果为1,否则为0。	final value = 0x22;
final bitmask = 0x0f;
var result = value	bitmask;//结果为 0x2f

^	按位异或,对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。	final value = 0x22;
final bitmask = 0x0f;
var result = value ^ bitmask;//结果为 0x2d

~expr	按位非,反转操作数的比特位,即0变成11变成0。	final value = 0x22;
final bitmask = 0x0f;
var result = value & ~bitmask;//结果为 0x20

<<	左移	final value = 0x22;
final bitmask = 0x0f;
var result = value << 4;//结果为 0x220

>>	右移	final bitmask = 0x0f;
var result = value >> 4;//结果为 0x02

条件运算符
condition ? expr1 : expr2
如果 condition 是 true,返回 expr1,否则返回 expr2。

当你需要根据一个 boolean 表达式来赋值时,可以使用 ? :


expr1 ?? expr2
如果 expr1 为 null,就返回 expr2 的值,否则返回 expr1 的值。
如果需要根据一个 boolean 表达式是否为 null 来作为条件,可以使用 ??

级联操作符
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
querySelector() 返回一个 selector 对象,后面的 ..text、..classes、..onClick就是在 selector 对象上进行的。

其他操作符
()	函数调用代表函数调用
[]	访问列表引用列表中指定索引处的值
.	访问成员变量	访问表达式里的成员变量,例如 foo.bar,表示访问 foo 表达式里的 bar 成员变量
?.	有条件的成员变量访问很像 .,但是左边的表达式可以为 null,例如 foo?.bar,如果 foo 为 null,则不会抛异常,而是返回 null,如果 foo 不为 null,则可以返回 bar

?.想要访问表达式的某个属性时,就可以使用这个,可以有效避免 NPE??在赋值时,可以使用 ??,若发现为空,可以为其赋默认值。
??=expr1 ??= expr2 等效于 expr1 = expr1 ?? expr2 就是判断 expr1 是否为null,如果为null的话,就使用默认值 expr2。

  • 组合操作符
+=	-=	*=	/=	~/=	%=
>>=	<<=	^=	&=
例如:
+=	a += b ; 就等效于 a = a + b;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值