1、数值类型:num
在java中的八大基本数据类型,dart 中都可以用数值类型来表示,dart中数值类型只有两种:int 和double;整型和浮点型,它们的父类都是? num;
int? :表示整型;

继承num
int 在java中占4个字节;在dart中,如果编译成javaScript 的时候占32bit(4个字节),默认是64bit,因此dart中int的长度应该是根据环境来确定的,此处可以看作了java 一致;
在Dart中,我们可以将你int当成java中的short、int、long来使用,如果我们写的dart声明的变量超过了4个字节,那么Dart会将其编译成类似java中的long,否则编译成java中的short或者int;
java中int 是基本数据类型,Dart中int 是类,所以两者的字节占用大小是没有可比性的;

dart源码中int类型注释
double:表示浮点型;

继承num
dart? 中没有float类型,只有double,表示浮点型都用double表示;与java类似;
2、字符串类型:String
????基本使用:
?????????与java没有什么区别;
? ????????String str = "hello";//声明一个字符串
字符串拼接比较:
? ??????java写法:
? ??????1、可以使用 + 号进行字符串拼接(会生成多个对象,不推荐);
String str = "hello";
String txt = str+10+"美女,晚上好";
? ??????2、可以使用?stringbuffer/stringbuilder/format 进行拼接;
int i = 2;
String str ="1";
String? format =String.format("%s%d",str,i);
? ??????dart写法:
String str ="你好,";
int num = 10;
String txt = "$str你是$num号美女吗?"
print(txt);
输出结果:你好,你是10号美女吗?
注意:
1、??符号后面跟的是变量;
2如果后面跟的是字符或者数字,则需要{ }将其括起来,否则编译其无法判定哪个字符串是变量。例如:
String str ="你好,";
int num = 10;
String txt = "${str}sam,你是$num号美女吗?"
print(txt);
输出结果:你好,sam,你是10号美女吗?
字符串声明
? ??java写法
? ??????String text ="我是一个字符串";
dart:写法
? ??????单引号声明?
String text =‘我是一个Dart 字符串’;
? ??????双引号声明
String text =“我是一个双引号声明的Dart 字符串”;
字符串转义
? ??java写法
String? s = ""带有双引号的字符串"" ;
String? n = "\n这是一个换行的字符串" ;
? ??dart写法
/**单双引号使用*/
String dartS = '" 带有双引号的dart字符串 "';
String dartS1 = “'带有单引号的dart字符串 '”;
String? n = "\n这是一个换行的字符串" ;//可以使用java中的方式
String? n1 = r"
这是一个换行的字符串" ;//dart中使用方式,r前缀, raw:原始,表示字符串中所有的换行、制表等符号保持不变/**三引号使用,多行字符串的声明*/
String? moreText = """第一行文字
第二行文字
第三行文字
第四行文字
....
""";
3、布尔类型 :bool
? ? ? ? ? ?与java一致,没什么可说的;
4、数组类型:List
? ??dart写法
? ??????数组声明
List
list = new List();//声明一个带有泛型的数组 List
list = List();//new 关键字可以省略 List
list2 =[1,2,3,4,5];//可以在声明时直接赋值,java中则不可以;
? ??????数组值的获取
像java数组一样通过下标取元素
int item0=list2[0];
? ??????遍历数组
//使用foreach 循环进行遍历
for (var? item? in list2 ){
print ( item)
}
//使用for循环进行遍历
for (var j = 0 ;j< list2 .length; ++j){
print ( list2 [j] )
}
? ??? ??不可变的数组声明
????????List
list1 = const [1,2,3];//数组被const 修饰,不可改变 ? ? ? ? list1=[3,4,5];?//可以修改引用
????????
list1.add(1);//此处虽在编译时不会报错,但运行时会报错;
const 修饰的是[1,2,3]这一个对象,表示这个对象不可变,不能在add元素了;
? ?以上代码报以下错误:

运行时报错
?????????const??Listlist1 = [1,2,3];//数组被const 修饰,不可改变 ? ? ? ? ?
list1=[3,4,5];//此处在编译时会报错;? ? ? ?
?list1.add(1);//同样不运行添加元素;
?const 修饰的是变量,也就是引用,那么变量不能够再引用其他对象了;
由此可见,const在修饰谁时,谁就是不可变的!与cc++类似;
5、映射集合:Map
?? ??????与java类似
????????Map
map = {1:1, 2:2, 3:3 }; ? ? ? ?通过下标获取元素
? ? ? ?int value=? map[1];//注意里面的1是key,不是下标;
????????修改元素
????????map[1]= 100;
????????不可变集合
????????于List 类似,同List;
? ? ? ? ?遍历map与java一样
6、Unicode:Runes
? ? ? ? ? ?(Unicode32)特殊字符表示类、用于表示一个表情符号、
? ? ? ? ? ? 此类型在开发中几乎用不到,此处不做详细说明
7、标识符:Symbols
????????类似c/c++中的宏
? ? ? ? ? 此类型在开发中几乎用不到,此处不做详细说明