更新时间:2020-04-02 15:20
cava中支持以下两种类型的类型定义
注:cava中不支持类变量,定义类变量会引发编译错误,具体见文档。
int
类型的局部变量 a
,并赋值为 10
class Example {
// ...
int test() {
int a; // <==
a = 10;
return a + 1;
}
// ...
}
10
定义局部变量 a
class Example {
// ...
int test() {
int a = 10; // <==
return a + 1;
}
// ...
}
对象变量定义后需要使用 new
语句创建相应的对象。否则变量的内容为 null
,访问会产生空指针异常。
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example a = new Example(3.1415926); // <==
return 0;
}
}
10
个元素的 int
类型数组 a
,并依次初始化为 [0..9]
class Example {
// ...
int test() {
int[] a = new int[10];
for (int i = 0; i < a.length; ++i) {
a[i] = i;
}
return a[0];
}
// ...
}
int
类型的数组,并初始化为 [0..9]
。注意:数组的长度由编译器自动推导。
class Example {
// ...
int test() {
int[] a = new int[]{0,1,2,3,4,5,6,7,8,9};
return a[0];
}
// ...
}
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example[] a = new Example[10]; // 创建对象数组
for (int i = 0; i < a.length; ++i) {
a[i] = new Example(3.1415926); // 初始化数组中的每个对象
}
return 0;
}
}
类的成员变量的定义和使用见文档。
cava中内置了以下常见类型,供直接使用(括号内为类型的实际内存大小):
值得一提的是,char类型在内部使用2个字节的编码,与java的utf16编码格式基本一致,采用定长的2个字节,而不是可变长的utf16。
和大部分语言一样,内置的数值类型存在一定的可转换关系,在合适的情况下,编译器会插入代码完成数值类型之间的转换。
当源类型和目标类型之间存在如下关系时:
称为转换是安全的。例如, short
类型到 int
类型的转换、 float
类型到 double
类型的转换都是安全的。编译器会自动插入代码完成此类转换:
float a = 3.14f;
double b = a;
short c = -1;
int d = c;
cava中各种类型之间的类型转换规则与其它常见编程语言(Java、C++)一致。
某些数值类型在转换时存在精度丢失或者表示范围不匹配的问题,这种情况下编译器会进行检查并提示错误,例如:
double a = ...;
float b = a; // error,存在丢失数值精度风险
由于此类转换一般是不安全的,所以编译器禁止代码自动进行此类转换。如果用户明确掌握类型间转换存在的风险,可以在代码中显式使用强制类型转换,避免编译器报错。
float a = 3.14f;
int b = (int)a; // 小数部分会被丢弃,仅保留整数部分,实现取整效果
cava中支持类的定义和对象的使用,具体用法见文档
在文档使用中是否遇到以下问题
更多建议
匿名提交