编写 TJava 程序时,应注意以下几点:
· 大小写不敏感:TJava 是大小写不敏感的,这就意味着标识符 Hello 与 hello 是相同的。程序员不在为个别难识别的字符搞得无处寻找。接口名之外。
· 接口名:所有的接口名是大小写敏感的,唯一的。没有特定的命名要求。
1.1. 标识符
TJava 所有的组成部分都需要名字。变量名以及方法名都被称为标识符。
关于 TJava 标识符,有以下几点需要注意:
· 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
· 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
· 关键字不能用作标识符
· 标识符是大小写敏感的
· 合法标识符举例:age、$salary、_value、__1_value
· 非法标识符举例:123abc、-salary
1.2. 变量
出现在“=”(等于号)左边的符合变量命名规则的符号。变量中只能是英文字母、数字及下划线。
1.3. 数组
数组是象表格一样储存数据的对象,可以保存多个同类型变量。按行、列分布。
一维数字数组:
!a=[1,2,3,4]; //a是一组数字
!b=0;
for(i:a){
b=b+i;
}
c=b; //输出c 结果:10
一维字符串数组
!a=["aa","bb",'111']; //b是一组字符串
!b='';
for(i:a){
b=b+'-'+i;
}
b=b; //结果: {"b":"'-aa-bb-111'"}
二维数字数组
a=[[1,2,3,4], [5,6,7,8]]; //a是二维数字数组
b=0;
for(i:a){
for(j:i)
b=b+j;
}
c=b; //输出c 结果:36
二维字符串数组
!b=[["aa","bb",'11'], ["aaa","bbb",'111']]; //b是二组字符串数组
x=b.0.1; //第一行的第二列,即:bb
y=b.1.0; //第二行的第一列,即:aaa
输出结果:{"x":"bb","y":"aaa"}
数组与数据库的结合
!a=api.find(); //从api表中找出主键id的第一行
b=a.name; //从集合a中取字段名为name的值
c=a.0; //从集合a中取第一列的值
输出结果:{"b":"userReg","c":373}
!a=api.findAll(id<10); //从api表中找出所有id<10的所有数据
b=a.0.id;//从数组a中取出第一行字段名为id的值
输出结果:{"b":373}
1.4. 集合
集合是由关键字储存一行数据的对象,象表格的一行。
!a=[name:'li',age:20]; //定义a集合且a不输出
b='';
for(i:a){
b=b+'-'+i;
}
b=b; //结果: {"b":"'-li-20'"}
x=a.0; //通过索引取值
y=a.name; //通过键取值
z=a.age
输出结果:{"b":"'-li-20'","x":"li","y":"li","z":20}
!a=[[name:'li',age:20],[name:'yu',age:22]];
b='';
for(i:a){
b=b+'-'+i.0;
}
b=b;
x=a.0.0;
y=a.0.name;
z0=a.1.0;
z1=a.1.age
输出结果: {"b":"'-li-yu'","z0":"yu","z1":22,"x":"li","y":"li"}
通过map方式定义集合
!a=[[name='li',age=20],[name='yu',age=22]];
b='';
for(i:a){
b=b+'-'+i.1;
}
b=b;
x=a.0.0;
y=a.0.name;
z0=a.1.0;
z1=a.1.age
输出结果: {"b":"'-20-22'","z0":"yu","z1":22,"x":"li","y":"li"}
1.5. 关键字
下面列出了 TJava 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
1.6. 注释
类似于 Java 也支持单行以及多行注释。注释中的字符将被 Java 编译器忽略。
l //单行
if(b) return 0; //存在则返回
l /* */多行
/* 这是第一个TJava程序 *它将打印Hello World * 这是一个多行注释的示例 */
1.7. 空行
空白行或者有注释的行,Java 编译器都会忽略掉。
1.8. 语句
通过“;”分别开来。或者通过“,”定义多条语句。
数据类型
TJava数据类型的定义不需要加任何类型,系统自动识别。数据类型有::
· 字符型:通过单引号或者双引号的括起来的数据。如:a=’’我的一个中国人’,b=”我的一个中国人”;
· 数字型:表示数字的常量。如:a=1,b=0.2;
· 布尔型:表示真或者假的二种可能性的常量。如:a=true,b=false;
· 集合:一组或者一行由唯一键值对保存的数据。由一对中括号括起来,每个数据由“,”分开。
n Json类型:键值由“:”表示的数据。如 b=[f1:aa,f2:bb,f3:1,f4:true];
n map类型:键值由“=”表示的数据。如 a=[f1=aa,f2=bb,f3=1,f4=true];
· 数组:由多行多列以二维表保存的数据。
n 单列数组,类似java的list。如 c=[aa,bb,1,true];
n 多行多列数组
· Json类型:如e=[[f1:a1,f2:b1,f3:1,f4:true],[f1:a2,f2:b2,f3:2,f4:true],[f1:a3,f2:b3,f3:3,f4:false]];
u map类型:如 d=[[f1=aa,f2=bb,f3=1,f4=true],[f1=aa,f2=bb,f3=1,f4=true],[f1=aa,f2=bb,f3=1,f4=true]];
运算符
TJava提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
· 算术运算符
· 关系运算符
· 逻辑运算符
· 赋值运算符
· 其他运算符
1.1. 算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。加(+)、减(-)、乘(*)、除(/)、求余(%)、幂(^)运算。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
1.2. 关系运算符
表格中的实例整数变量A的值为10,变量B的值为20:
1.3. 逻辑运算符
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
1.4. 赋值运算符
下面是Java语言支持的赋值运算符:
1.5. 三目运算及Elivis运算表达式:
三目运算符 “表达式1?表达式2:表达式3”用于构造三目运算表达式,如“2>1?true:false”将返回true;
Elivis运算符“表达式1?:表达式2”,当表达式1为非null时则返回表达式1,当表达式1为null时则返回表达式2,简化了三目运算符方式“表达式1? 表达式1:表达式2”,如“null?:false”将返回false,而“true?:false”将返回true;
x = (expression) ? value if true : value if false
1.6. 字符串连接及截取表达式
使用“+”进行字符串连接,使用“'String'[0] [index]”来截取一个字符,目前只支持截取一个,如“'Hello ' + 'World!'”得到“Hello World!”;而“'Hello World!'[0]”将返回“H”
1.7. 正则表达式:
使用“str matches regex,如“'123' matches '\\d{3}'”将返回true;
1.8. 运算符优先级
当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。
例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。
再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。
下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。