2024年安卓最全Flutter学习之Dart基础数据类型_dart containskey(1),阿里4轮面试

总结

首先是感觉自己的基础还是不够吧,大厂好像都喜欢问这些底层原理。

另外一部分原因在于资料也还没有看完,一面时凭借那份资料考前突击恶补个几天居然也能轻松应对(在这里还是要感谢那份资料,真的牛),于是自我感觉良好,资料就没有怎么深究下去了。

之前的准备只涉及了Java、Android、计网、数据结构与算法这些方面,面对面试官对其他基础课程的考察显得捉襟见肘。

下一步还是要查漏补缺,进行针对性复习。

最后的最后,那套资料这次一定要全部看完,是真的太全面了,各个知识点都涵盖了,几乎我面试遇到的所有问题的知识点这里面都有!希望大家不要犯和我一样的错误呀!!!一定要看完!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

}`


**常量**


在 dart 中使用 const 声明常量;使用 const 声明的必须是编译期常量。



void main(){ const a = 10; a = 20; // 这里也会报错:[dart] Constant variables can't be assigned a value. }


在上面我们可以看到 dart 的一些简单的语法。其实和 js 蛮像,声明的变量的数据类型是随便去改变的,没有一个固定的数据类型(例如:java 这种语言)。其次就是 final 和 const 都可以声明变量,并且声明了变量之后都不能修改。


这里简单的说下 final 与 const 的区别:


**final 要求变量只能初始化一次,并不要求赋的值一定是编译时常量,可以是常量也可以不是。而 const 要求在声明时初始化,并且赋值必需为编译时常量。**


### Dart中的内置类型


在Dart 有几种内置的数据类型:数值型-Number、布尔型-boolean、键值对-Map、字符串-String、列表-List、其他类型-Runes、Symbols


#### 数值型


Dart 中只提供了两种类型:




















































 num 
 










 整形int 
 










 浮点型double 
 










`void main(){

num a = 10; // 整形
a = 20.1; // 浮点型

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

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


从上面可以看到如果是使用 num 声明的变量,可以随意的转换类型,但是如果是使用了int 或者 double 明确的声明,那么就不能转换了


##### 数值型的操作


数值型的操作


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


**常用属性**: 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’);`


#### 字符串


**在 dart 中居然可以使用 单引号 和 双引号声明字符串。这两种方式都可以。**



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


**在 String 中单、双引号互相嵌套的情况**



`void main(){

String str = ‘单引号中的"双引号"’;
String str1 = “双引号中的’单引号’”;
print(str);
print(str1);

String str2 = '单引号中的 ‘单引号’ ';
String str3 = "双引号中的 “双引号” ";
print(str2);
print(str3);
}`


**字符串拼接的方式**


**下面列出 dart 中拼接字符串的各种~~骚操作~~(黑魔法)**。



`void main(){
// 使用的是空格拼接,多个空格也可以
String str1 = ‘单引号空格字符串’ ‘拼接’ ‘~’; // 单引号字符串空格拼接~

// 使用换行符以及空格
String str2 = ‘单引号符串’
‘换行了’ ‘再加空格’ ‘拼接’; // 单引号符串换行了再加空格拼接

// 单双引号 空格拼接
String str3 = “单双引号空格字符串” ‘拼接’ “~”; // 单双引号字符串空格拼接~

// 单双引号 换行符以及空格
String str4 = “单双引号符串”
‘换行了’ ‘再加空格’ ‘拼接’; // 单双引号符串换行了再加空格拼接

String str5 = ‘’’
使用3个单引号、
看到我使用了么
‘’';

String str6 = “”"
使用3个双引号、
看到我使用了么
“”";

String str7 = “算了,还是正常一点” + “,使用 + 来拼接”;
}`


**从上面可以看到 dart 中可以使用`空格`来做为拼接。所以我们继续研究下。**



`void main(){

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

// 下面这两种情况会报错
// String blockStr4 = ‘单引号’‘’‘空格’;
// String blockStr5 = “双引号”“”“空格”;

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

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

// 单双引号混合使用
String blockStr10 = “双’‘’'引号”; // 输出:双’‘’‘引号
String blockStr11 = "双’‘_’‘引号"; // 输出:双’‘_’'引号
}`


**${表达式}的使用**


类似于JS中 ES6 上面的表达式的使用,感觉是相通的。



`void main(){

var flag = false;
var str = “测试字符串”;

print(“我们来验证字符串: s t r " " 然后看看我们的 f l a g : {str}" "然后看看我们的 flag: str""然后看看我们的flag{flag}”);
// 最后输出的结果为:我们来验证字符串:测试字符串然后看看我们的 flag:false
}`


#### 布尔值


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



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

总结

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于Flutter的学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。
由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的
还有高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

跨平台开发:Flutter.png

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。**

[外链图片转存中…(img-W0w9DLHE-1715746977002)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值