1.定义变量 在JavaFx中需要通过var关键字来定义变量(如同JavaScript一样),变量的类型是可以省略的,省略的话变量的类型通过实际赋值的类型来推断。变量定义格式为: var 变量名[:变量类型] = 变量值; 例如:
var i:Integer = 12; var i1 = 11;
var name:String = \"hello\"; var name1 = \"hello\";
2.标识符 标识符的规范和Java一样,下划线或者字母开头,由下划线、字母、数字组成。JavaFx还接受另外一种规范,包含在<<...>>之间的,任意字符串,包括空格,可以作为JavaFx中的标识符。这样可以把JavaFx的关键字或者其他保留字,当作普通标识符来使用。例如: var < var textArea = new JTextArea(); textArea.< JavaFX的变量类型有三种,分别是脚本变量,实例变量和局部变量。 3.脚本变量(类似于Java中的全局变量,也就是public static 修饰的变量) 脚本变量是在类定义或块定义之外定义的变量,脚本变量可作用于整个应用。 var thing = \"Thing\"; class A { function getThing() : String { thing } } 如果定义脚本变量时没有使用访问修饰符,那么它仅能作用于一个脚本文件。如果使用了访问修饰符那么它可以如脚本成员那样被其他部分访问。 访问修饰符包括: public, protected, package, public-read和public-init. 例如下面是一个文件名为Foo.fx的脚本文件: public def bohr = 0.529177e-10 Noof.fx脚本文件也可以访问bohr变量: println(Foo.bohr)。 脚本变量的生存期为整个应用运行时间. 4.实例变量(类似于Java中的属性) 实例变量是在类定义中声明的成员变量. 在类中可直接通过变量名来访问. 在类外则通过对象成员的方式来访问。例如: def anA = A{ rat: true }; println(anA.rat); class A { var rat : Boolean; function isIt() { rat } } class B { function wellisIt() { anA.rat } } 访问修饰符用来控制实例变量的可见性. 如果没有使用访问修饰符,实例变量只能作用于一个脚本文件。实例变量的生存期为它所在的对象实例的生存期. 5. 局部变量(同Java完全相同) 局部变量定义在块语句中, 或者在方法中. 局部变量作用于一个块范围. 局部变量不可以应用访问修饰符. 局部变量的生存期为一个块执行时间。不同于脚本和实例变量, 局部变量定义是一个表达式,具有类型和返回值. 有该局部变量的类型和返回值决定. 形式参数, 迭代变量和其他表达式参数。方法形式参数作用于该方法. For循环迭代变量作用于该for循环体. 表达式参数作用于该表达式.这些变量都不可以被赋值。 二、JavaFX的数据类型 每一个JavaFX的变量, 方法和表达式都具有一个类型, 通常情况下由程序上下文来决定. 变量可以被显式地制定一个特定类型; 方法也可以显式地指定参数和返回值的类型.类型标识由类型标识符和基数构成. 1. 类型标识符 类型标识符通常都是类名或者方法名. 下面是一些类型标识符举例: MyClass java.util.Map Duration javafx.animation.Timeline Integer 方法名通常包括参数名和返回值类型 -- 如果没有方法名将不特定于任何方法实现. 下面是一个方法类型的例子: function(:Number):Boolean function(:Integer,:Integer):SplotchedBall function():Integer 所有的类型标识符都是java.lang.Object的子类. 2. JavaFx基本数据类型对应于Java中的数据类型 JavaFx Java String java.lang.String Boolean java.lang.Boolean Number java.lang.Number Integer byte,short,int,long,BigInteger Duration 无 前面四种类型已经为Java程序员所熟识,并经常使用的了,比较简单,这里着重解释一下JavaFx所独有的Duration类型。Duration,即javafx.lang.Duration,用来表示一个时间段(单位可以为毫秒,秒,分,小时),主要用于JavaFx里面动画的实现。我们来看一下Duration的例子: 5ms; //5 毫秒 10s; //10 秒 30m; //30 分 1h; //1 小时 运行一下下面的代码,把以上几个Duration值输出看一下结果: System.out.println(5ms); System.out.println(10s); System.out.println(30m); System.out.println(1h); 3. 基数 基数表示该变量声明可以包含多少个元素. 有如下三种。 可选(0个或1个) 可选表示可以有也可以没有实际元素. 总的来说包括所有自定义对象和大部分其他对象. 例如: var x : Foo; 表示x变量可以持有一个Foo变量或是一个空引用null. 必须(1个) 必须表示变量必须持有一个元素, 包括如下内建对象String, Integer, Number, Boolean和Duration. 例如: var k : Integer; 表示变量k持有一个Integer. 这种情况下空引用是不被允许的. 否则的话会被自动替换为默认值. 序列(0个到多个) 序列表示变量可以持有0个到多个元素. 这需要显示说明基数为序列. 例如: var seq : Integer[]; 表示seq变量可以持有多个Integer元素. 4.默认值 每个JavaFX数据类型都具有一个默认值. 对于基数是可选的类型默认值是null. 例如: var x : Foo; println(x); 这会在控制台输出一个null. 对于序列来讲默认值就是空序列. 例如: var seq : Integer[]; println(sizeof seq); 这会在控制台输出一个0值. 对于基数是必须的类型来讲都会有一个确定的默认值. var k : Integer; println(k); 这会在控制台输出一个0值, 因为Integer的默认值是0值. 三、运算符 运算符是一些特殊的符号,用来对一个或两个操作数执行特定的运算,然后返回一个结果。JavaFX编程语言提供赋值运算符、算术运算符、一元运算符、相等和关系运算符、条件运算符和类型比较运算符。 1. 赋值运算符 赋值运算符 \"=\" 是您将遇到的最常用的运算符。使用该运算符可以将其右侧的值赋给其左侧的操作数: result = num1 + num2; days = [\"Mon\ 2. 算术运算符 使用算术运算符可以执行加、减、乘和除运算。mod 运算符用一个操作数除以另一个操作数并将余数作为结果返回。 + (加运算符) - (减运算符) * (乘运算符) / (除运算符) mod (求余运算符) 以下脚本提供了一些示例: var result = 1 + 2; // result is now 3 println(result); result = result - 1; // result is now 2 println(result); result = result * 2; // result is now 4 println(result); result = result / 2; // result is now 2 println(result); result = result + 8; // result is now 10 println(result); result = result mod 7; // result is now 3 println(result); 还可以结合使用算术运算符与赋值运算符来创建复合赋值。例如,result += 1; 和 result = result+1; 都会将 result 的值加 1。 var result = 0; result += 1; println(result); // result is now 1 result -= 1; println(result); // result is now 0 result = 2; result *= 5; // result is now 10 println(result); result /= 2; // result is now 5 println(result); 唯一不能按照此方式使用的算术运算符是 mod。例如,如果您希望将 result 除以 2,然后将余数重新赋给其自身,则需要编写:result = result mod 2; 3. 一元运算符 大多数运算符都需要两个操作数,而一元运算符仅使用一个操作数来执行诸如按一递增/递减某个值、对某个数字求反或对布尔值求反之类的操作。 - 一元减运算符;对某个数字求反 ++ 递增运算符;按 1 递增某个值 -- 递减运算符;按 1 递减某个值 not 逻辑求补运算符;对布尔值求反 以下脚本用于测试一元运算符: var result = 1; // result is now 1 result--; // result is now 0 println(result); result++; // result is now 1 println(result); result = -result; // result is now -1 println(result); var success = false; println(success); // false println(not success); // true 递增/递减运算符可以在操作数之前(前缀)或之后(后缀)应用。代码 result++; 和 ++result; 都将导致 result 的值加 1。二者之间的唯一区别就是前缀版本 (++result) 得到的是递增后的值,而后缀版本 (result++) 得到的是原始值。(您可以通过以下方法来记忆:++result 先执行递增再获得值,而 result++ 先获得值再执行递增。)如果您只是执行简单的递增/递减,则选择哪个版本都一样。但是,如果您将该运算符作为较大表达式的一部分进行使用,则选择不同的版本会对结果产生很大的影响。 4. 关系运算符 相等和关系运算符确定一个操作数是大于、小于、等于还是不等于另一个操作数。 == 等于 != 不等于 > 大于 >= 大于或等于 < 小于 <= 小于或等于 以下脚本用于测试这些操作数: def num1 = 1; def num2 = 2; println(num1 == num2); // prints false println(num1 != num2); // prints true println(num1 > num2); // prints false println(num1 >= num2); // prints false println(num1 < num2); // prints true println(num1 <= num2); // prints true 5. 条件运算符 条件与 (and) 和条件或 (or) 运算符用于对两个布尔表达式执行条件运算。这些运算符会表现出“短路”行为,也就是说,仅在必要时才计算第二个操作数:例如,对于 and 运算,如果第一个表达式的结果为 false,将不计算第二个表达式。对于 or 运算,如果第一个表达式的结果为 true,将不计算第二个表达式。 and or 以下脚本定义了 username 和 password 变量,然后输出各个条件的匹配项,从而说明了这些运算符的用法: def username = \"foo\"; def password = \"bar\"; if ((username == \"foo\") and (password == \"bar\")) { println(\"Test 1: username AND password are correct\"); } if ((username == \"\") and (password == \"bar\")) { println(\"Test 2: username AND password is correct\"); } if ((username == \"foo\") or (password == \"bar\")) { println(\"Test 3: username OR password is correct\"); } if ((username == \"\") or (password == \"bar\")) { println(\"Test 4: username OR password is correct\"); } 6. 类型比较运算符 instanceof 运算符将对象与指定的类型相比较。您可以使用该运算符来确定某个对象是否为特定类的实例: def str1=\"Hello\"; println(str1 instanceof String); // prints true def num = 1031; println(num instanceof java.lang.Integer); // prints true 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务