请先原谅我的标题,本文还是讲技术的。本来我是想和以前一样介绍arduino技术。但昨天的地震和我最近遇到的一些事,让我感觉到人的渺小,在大自然、宇宙、行驶的汽车面前,人就是只蚂蚁。但人不同于蚂蚁,人有梦想。我的梦想就是从计算机这个角度来理解世界,为世界做一些事。比如利用arduino技术制作一个小车,去探测倒塌的房屋。
但我还是一脚踏实地,一步一步的学习技术,实现各种功能,最后才能用技术实现上面的愿望。下面还是要进入枯燥的技术知识,我分享一下关于arduino、c、java中的字符串的区别。
在说String以前,先看一下arduino的基本类型。这里还是引用一下官方文档https://www.arduino.cc/en/Reference/HomePage
通过c语言的sizeof能得到各类型的字节大小。
类型 | 字节长度 |
void | 1 |
boolean | 1 |
char | 1 |
unsigned char | 1 |
byte | 1 |
int | 2 |
unsigned int | 2 |
word | 2 |
long | 4 |
unsigned long | 4 |
short | 2 |
float | 4 |
double | 4 |
string - char array | 字符数组 |
String - object | 6 |
array | 数组 |
从上面可以看出arduino即有string也有String,那我们用那个呢?
Arduino的内置String数据类型比C字符数组更容易使用,但这是通过在String代码库里实现的,这将导致需要从Arduino获得更多的资源需求(从上图也可看出它需要的字节数最多,6个)。从本质上说,更容易出问题。
String数据类型这所以如此灵活,因为它使用动态内存分配。也就是说,当你创建或修改一个String,arduino会从c库请求新的存储空间,并且String使用完毕时,Arduino需要回收空间。
可以写一个程序,不停的给String加值,观察其内存的变化。
可以看到, 可用内存不断减少,最后内存泄漏,变量s没有值了。这就是arduino的String.而c语言中没有String,只有char [],这个大小可以自己控制。java中的String其实与c、arduino没有什么比较的意义。
因为它经过jdk的封装,不用考虑释放的问题,当然一直加最终也会抛出out of memory异常。
其它的数据类型我不多讲了,网上有很多教程,也可联系我,我发给你。