`
suifongqi
  • 浏览: 55560 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JFX学习笔记 五 重修语法——表达式

    博客分类:
  • JAVA
阅读更多
学习笔记四里面各位也都看到了,在语法上JFX与JAVA有许多地方相似。这里我主要提一下与JAVA不同之处。
关系操作符
JFX  JAVA
== equality ==
<> inequality !=
< less than <
> greater than >
<= less than or equal <=
>= greater than or equal >=
布尔操作符
and logical and &&
or logical or ||
not logical negation !
算术操作符
+ addition +
- subtraction; unarynegation -
* multiplication *
/ division /
% remainder %
+= add and assign +=
-= subtract and assign -=
*= multiply and assign *=
/= divide and assign /=
%= remainder and assign %=
其它操作符

not logical negation !
算术操作符
+ addition +
-
subtraction; unary
negation
-
* multiplication *
/ division /
% remainder %
+= add and assign +=
-= subtract and assign -=
*= multiply and assign *=
/= divide and assign /=
%=
remainder and
assign
%=
其它操作符
sizeof array length n/a
indexof ordinal position n/a
if e1 then e2 else e3 conditional expression e1 ? e2 :e3
select list comprehension n/a
foreach list comprehension n/a
new allocation new
op() function/operation call n/a
x.op() member function/operation call x.o p()
instanceof type check instanceof
this self access this.

bind [lazy] incremental [lazy] evaluation n/a
: eager initialization n/a
[] array selection []
format as String formatting n/a
<<>> Identifier quotes n/a
{} String expression n/a
(expr) grouping
reverse reverses a list n/a
[number1,next..number2] numeric range n/a

例子:
import java.lang.System;
import java.lang.Math;
var x = 2;
var y = 4;
var a = true;
var b = false;
System.out.println(x == y); // prints false
System.out.println(x <> y); // prints true
System.out.println(x < y); // prints true
System.out.println(x > y); // prints true
System.out.println(x >= y); // prints false
System.out.println(x <= y); // prints true
System.out.println(x + y); // prints 6
System.out.println(x - y); // prints -2
System.out.println(x * y); // prints 8
System.out.println(x / y); // prints 0.5
System.out.println(x % y); // prints 2
System.out.println(a and b); // prints false
System.out.println(a or b); // prints true
System.out.println(not a); // prints false
System.out.println(sizeof [x,y]); // prints 2
System.out.println([x,y][indexof . == 0]); // prints 2
System.out.println(if a then x else y); // prints 2
System.out.println(select q from q in [x, y] where q > 3); prints 4
System.out.println(foreach(q in [x, y] where q < 3) q); prints 2
System.out.println(Math.max(x, y)); // prints 4
System.out.println("abc".toUpperCase()); // prints ABC
System.out.println(x instanceof Number); // prints true
x = 10;
System.out.println(x); // prints 10

需要注意的是,1 JFX中字符串可以用单引号和双引号两种方式表示,双号表示可以在内嵌入{}表达式.并且支持换行操作,JAVA是不允许的
var answer = true;
var s = "The answer is {if answer then "Yes" else "No"}"; // s = 'The answer is Yes';
var s = "This
contains
new lines";
2 <<>> 如果你的变量名使用了关键字,通常是不允许的。如果使用<<变量名>>则没有约束
var this = 100;//不允许的
var <<this>> = 100;//允许
当然<<>>不是拿给大家用着玩的,主要出于多种环境可能出现命名调用重突的考虑,例如方法名为insert,但在JFX中insert是关键字,那么如何区分,就得靠<<>>了
var textArea = new JTextArea();
textArea.<<insert>>("He llo", 0);
3 字符串(String)、数值(Number)和日期的格式化。JavaFX 有内建的字符串格式化操作符(format as),语法:表达式format as 指令
format as 操作符支持java.text.DecimalFormat、java.text.SimpleDateFormat 和java.util.Formatter
的格式化指令:如果格式化指令以%开头,那么将会使用java.util.Formatter;如果表达式是
Number 类型,则使用java.text.DecimalFormat;如果表达式是java.util.Date 类型,则使用java.text.SimpleDateFormat。指令操作数是一个在语法上的标识符,而不是一个表达式。这就允许了在编译时静态检查指令内容的正确性。

例如:
import java.util.Date;
100.896 format as <<%f>>; // yields '100.896000'
31.intValue() format as <<%02X>>; // yields '1F'
var d = new Date();
d format as <<yyyy-MM-dd'T'HH:mm:ss.SSSZ>>; // yields '2005-10-31T08:04:31.323-0800'
0.00123 format as <<00.###E0>>; // yields '12.3E-4'

4操作,在JavaFX 中使用operation 关键字声明过程(procedure)。例如:
import java.lang.StringIndexOutOfBoundsException;
operation substring(s:String, n:Number): String {
try {
return s.substring(n);
} catch (e:StringIndexOutOfBoundsException) {
throw "sorry, index out of bounds";
}
}
在上例中定义了一个称为“substring”的新过程,它接受两个参数:第一为字符串类型的参数“s”,第二为Number 类型的参数“n”,而返回值为字符串类型。操作的出现用途,在以后的笔记中详细解释,目前可以理解成方法或函数

5 Try 语句
JavaFX 的try 语句用法类似Java,但它具有JavaFX 变量声明语法。注意:在JavaFX 中,任意对象都能够被抛出和捕捉,而并非仅仅是java.lang.Throwable 的继承类。
例如:
try {
throw "He llo";
} catch (s:String) {
System.out.println("caught a String: {s}");
} catch (any) {
System.out.println("caught something not a String: {any}");
} finally {
System.out.println("finally...");
}
增加了异常处理的灵活性不是吗,而且处理程序的手段又多了一种看似更合法的处理,扔对象。而不是扔异常。

6 for语句,JFX把for是改的让我觉得很不顺眼。
JavaFX 的for 语句头与foreach 列表推导操作符(list comprehension operator)使用相同的语法。但是,在下面示例中for 语句体处理的是由列表推导生成的成员。
例如:
for (i in [0..10]) {
System.out.println("i = {i}");
}
// print only the even numbers using a filter
for (i in [0..10] where i % 2 == 0) {
System.out.println("i = {i}");
}
// print only the odd numbers using a range expression
for (i in [1,3..10]) {
System.out.println("i = {i}");
}
// print the cartesian product
for (i in [0..10], j in [0..10]) {
System.out.println(i);
System.out.println(j);
}
最后一个等价于
for(i in [0..10])
{
System.out.println(i);
for(j in [0..10])
{
   System.out.println(j);
}
}





分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java1.8版本,jre,jfx

    值得注意的是,从Java 9开始,JavaFX被移出JDK的核心部分,成为一个独立的模块,但在Java 8中,它还是内置的,这正是"jfx"标签所指的内容。 在压缩包中,"java"文件可能包含了Java 1.8的完整安装程序或者特定组件,...

    emed6004jfx工具`

    标题中的"emed6004jfx工具"很可能是指一个特定的软件或应用程序,而`.rar`文件格式表明这是一个压缩包,通常用于存储和传输多个文件。从描述中我们可以看到,这个压缩包的名字是`emed6004jfx.rar`,并且要求字符数...

    JFX例子

    JFX的例子是学习JavaFX的基础,通过这些示例,初学者可以快速了解并掌握JavaFX的基本概念和技术。 在提供的文件列表中,我们可以看到两个部分的教程:“JavaFX发现之旅:JavaFX Script With Eclipse 入门”。这部分...

    俄罗斯方块jfx源代码

    总的来说,“俄罗斯方块jfx”源代码为我们提供了一个学习和研究JavaFX游戏开发的实例,从中我们可以学到JavaFX的图形渲染、事件处理和游戏逻辑设计等多个方面的知识。无论你是Java初学者还是希望提升图形界面编程...

    欧码简音5JFX输入法

    简音输入法是专为希望学好中文发音,又希望超快 地输入汉字的人设计的,单字平均出字仅1.26码,远比 同类音码快;输入编码后视屏可同显简体和繁体,极有 利于学记各简体繁体字的对应模样,同屏对比了解简体 ...

    JFX3DModelImporters_EA_2014-02-09_jfx3d_JFX3DModelImporters_ea_源

    这个压缩包"JFX3DModelImporters_EA_2014-02-09_jfx3d_JFX3DModelImporters_ea_源"包含了一系列的jar包,它们专门设计用于帮助开发者将不同格式的3D模型导入到JavaFX应用中。这些导入器的早期访问版本(EA)发布于...

    nj4x-mt4开发中间件jfx 2.7.7版本

    MT4客户端不支持二次开发,但是服务器接口对外开发,jfx封装了Java接口,使得Java开发程序员可以轻易上手

    jfx1.2.6示例 实现了java连接MT4

    一个简单的实现了java连接MT4服务的例子

    javafx经典教材,机不可失。。。

    一些关于javafx的教程,能很好的了解javafx!

    Mimaki JFX plus Series UJF-3042 透明液体打印指南

    ### Mimaki JFX plus Series UJF-3042 透明液体打印指南 #### 一、概述 Mimaki JFX plus Series UJF-3042是一款专为工业级UV喷墨打印设计的产品,它支持特殊效果打印,如透明液体打印等功能。该设备结合了先进的...

    JavaMathTrainer:基于JFX和FXML的简单数学方程式训练器

    JavaMathTrainer 基于JFX和FXML的简单数学方程式训练器。目的简单的UI程序,训练用户解决数学表达式。 也是使用eclipse和Oracle的Scene Builder制作的简单JFX应用程序的演示。去做困难“难” 更多表达式:逻辑表达式...

    NativeJFX:一个使用maven jfx插件和其他工具生成本机可执行文件和安装程序的演示应用程序

    本机JFX 一个使用maven jfx插件和其他工具生成本机可执行文件和安装程序的演示应用程序 构建本机捆绑包(Windows) 安装 5.5.6+ 安装 3.1.0+ 将两个程序都添加到PATH 运行mvn package 注意:制作启动器并与JRE...

    GameOfLife-JFX:初始项目

    总结,"GameOfLife-JFX:初始项目"是一个很好的学习和实践JavaFX以及理解生命游戏原理的平台。通过这个项目,开发者不仅可以提升JavaFX编程技巧,还能深入理解细胞自动机和复杂系统行为的模拟。

    java8看不到源码-JME3-JFX:用于JME的JFXGui桥接器,具有用于常见用例的有用实用程序

    笔记 对于 jme 3.1: 版本:2.+ 分支:主 对于 jme 3.0(与 jme-3.0.10 兼容): 版本:1.+ 分支:jme_3.0 JME3-JFX 需要 java 8,但是可以使用 java 7 在纹理上绘制视频。对于 jME SDK,您应该创建一个 java 8 平台...

    jfx-launcher:openjfx启动器工具

    JFX-Launcher 一个openJfx的自动更新器,采用模块化API加载模块。 原理 在Launcher启动的时候,会对比本地配置与服务端配置是否一致,如果服务端配置与本地不一致,则进行拉取同步。 对比条件: 版本号是否一致 各个...

    JFX的简单回顾以及了解

    这个例子中,我们创建了一个`FlowPane`布局,然后添加了五个按钮。接着,我们将布局添加到一个`Scene`中,最后将`Scene`设置为`Stage`的内容。运行这个程序,你会看到一个窗口,窗口内有五个按顺序排列的按钮。 总...

    jfx_game_project:game_prject_table_Type

    【标题】"jfx_game_project:game_prject_table_Type"是一个基于JavaFX开发的游戏项目,其核心特性在于利用表格(Table)元素来呈现游戏数据或交互。JavaFX是Oracle公司提供的一个用于创建桌面应用程序的开源Java库,...

    j8draw:JDK8中的JFX 2D和3D绘图

    JDK8中的JFX 2D和3D工程图。 由于它使用的是JFX,因此需要确保您使用的是Oracle的JDK 1.8或更高版本。 如果在Eclipse中运行,由于即使在使用Oracle JDK时默认情况下也无法访问JFX,因此您将需要执行以下步骤,...

    MessagingApp-JFX:具有多选项卡用户界面的聊天应用程序

    MessagingApp-JFX 具有多选项卡UI(使用JavaFX构建)的聊天应用程序。 通过TCP / IP进行通信的服务器-客户端模型。 为JVM和Arduino微控制器编写的服务器/后端代码库(测试平台为ESP32s开发板)。 文件传输功能。

    FreshInvoice_jfx82w_FreshInvoice_

    标题中的"FreshInvoice_jfx82w_FreshInvoice_"似乎是指一个特定的版本或构建号,这通常是软件更新或发布时使用的标识符。FreshInvoice是一个知名的开源PHP发票管理软件,它允许用户创建、管理和发送专业发票。这个...

Global site tag (gtag.js) - Google Analytics