Java教程 第42页

Java Lambda主体语句-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java Lambda主体语句

Java Lambda主体语句 我们可以使用 break , continue , return 和 throw 在lambda表达式主体中的语句。 我们不能使用跳转语句做非局部跳转。 例子 以下代码显示如何使用break语句退出lambda表达式中的for循环。 import java.util.function.Function; public class Main { public static void main(String[] argv) { Function<String,String> func1 = y -> { for(int i=0;i<10;i++){ System.out.println(i); if(i == 4){ break; } } return y + " from www.w3cschool.cn" ; }; System.out.println(func1.apply("hi")); } } 上面的代码生成以下结果。 例2 我们不能在lambda表达式中使用break语句,以跳出到lambda表达式之外的for循环。 import java.util.function.Function; public class Main { public static void main(String[] argv) { for(int i=0;i<10;i++){ System.out.println(i); if(i == 4){ Function<String,String> func1 = y -> { //break; return y + " from www.w3cschool.cn" ; }; System.out.println(func1.apply("hi")); } } } } 上面的代码生成以下结果。

Java Lambda变量捕获-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java Lambda变量捕获

Java Lambda变量捕获 lambda表达式可以访问最终局部变量或局部非最终初始化只有一次的变量。 例子 下面的代码显示我们可以访问和使用最终的局部变量。 import java.util.function.Function; public class Main { public static void main(String[] argv) { final String x = "Hello"; Function<String,String> func1 = y -> {return y + " "+ x ;}; System.out.println(func1.apply("w3cschool.cn")); } } 上面的代码生成以下结果。 例2 下面的代码有一个变量x,它不是final,只能初始化一次。我们仍然可以在lambda表达式中使用它。 import java.util.function.Function; public class Main { public static void main(String[] argv) { String x = "Hello"; Function<String,String> func1 = y -> {return y + " "+ x ;}; System.out.println(func1.apply("w3cschool.cn")); } } 上面的代码生成以下结果。 例3 下面的代码显示我们不能改变在lambda表达式之外定义的值。 import java.util.function.Function; public class Main { public static void main(String[] argv) { String x = "Hello"; Function<String,String> func1 = y -> {/*x="a";*/ return y + " "+ x ;}; System.out.println(func1.apply("w3cschool.cn")); } } 上面的代码生成以下结果。 例4 我们可以更改lambda表达式中的非局部变量。 import java.util.function.Function; public class Main { static String x = "Hello";...

Java Lambda表达式作用域-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java Lambda表达式作用域

Java Lambda表达式作用域 lambda表达式不定义自己的范围。 如果我们在lambda中使用关键字 this 和 super 表达式在方法中,它们的行为与我们在该方法中使用它们一样。 例子 以下代码从lambda表达式输出this。这在lambda表达式中是指外部类不是lambda表达式本身。 import java.util.function.Function; public class Main { public Main(){ Function<String,String> func1 = x -> {System.out.println(this);return x ;}; System.out.println(func1.apply("")); } public String toString(){ return "Main"; } public static void main(String[] argv) { new Main(); } } 上面的代码生成以下结果。 例2 Main方法中的第一行具有 x 的变量定义。 如果我们删除注释,我们会得到编译时错误,因为它与lambda表达式的变量定义冲突。 这是另一个演示,显示lambda表达式与其外部方法具有相同的范围。 lambda表达式不会创建自己的作用域。 import java.util.function.Function; public class Main { public Main(){ //int x= 0; Function<String,String> func1 = x -> {System.out.println(this);return x ;}; System.out.println(func1.apply("")); } public String toString(){ return "Main"; } public static void main(String[] argv) { new Main(); } } 上面的代码生成以下结果。

Java 脚本引擎-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 脚本引擎

Java脚本教程 – Java脚本引擎 Java Scripting API有许多类和接口。它们在javax.script包中。 ScriptEngine 接口是其实例执行以脚本语言编写的脚本的接口 ScriptEngineFactory执行两个任务: 创建脚本引擎的实例。 提供有关脚本引擎的信息,如引擎名称,版本,语言等。 AbstractScriptEngine类是一个抽象类,并为ScriptEngine接口提供了部分实现。 ScriptEngineManager类发现和实例化脚本引擎。 可用的引擎 以下代码显示如何列出所有可用的脚本引擎。 import java.util.List; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; public class Main { public static void main(String[] args) { ScriptEngineManager manager = new ScriptEngineManager(); // Get the list of all available engines List<ScriptEngineFactory> list = manager.getEngineFactories(); // Print the details of each engine for (ScriptEngineFactory f : list) { System.out.println("Engine Name:" + f.getEngineName()); System.out.println("Engine Version:" + f.getEngineVersion()); System.out.println("Language Name:" + f.getLanguageName()); System.out.println("Language Version:" + f.getLanguageVersion()); System.out.println("Engine Short Names:" + f.getNames()); System.out.println("Mime Types:" + f.getMimeTypes()); System.out.println("==="); } } } 上面的代码生成以下结果。 例子 以下代码显示了如何使用JavaScript,Groovy,Jython和JRuby在标准输出上打印消息。 如果脚本引擎不可用,程序会向用户提示错误消息。 import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Main { public static void main(String[] args) { // Get the script engine manager ScriptEngineManager manager = new...

Java 脚本参数-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 脚本参数

Java脚本教程 – Java脚本参数 Java Scripting API允许我们将参数从Java应用程序传递到脚本引擎,反之亦然。 将参数从Java代码传递到脚本 msg 是print()函数中使用的变量。 脚本不声明 msg 变量。 我们可以通过几种方式将参数传递给脚本引擎。 一种方法是使用脚本引擎的 put(String paramName,Object paramValue)方法,它接受两个参数: 参数的名称,它需要与脚本中变量的名称匹配。 参数的值。 要将名为 msg 的参数传递给脚本引擎,请按如下所示调用put()方法: engine.put("msg", "Hello from Java program"); 以下代码显示了如何将参数从Java程序传递到脚本。 import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Main { public static void main(String[] args) { // Get the Nashorn engine ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); String script = "print(msg)"; try { engine.put("msg", "Hello from Java program"); engine.eval(script); } catch (ScriptException e) { e.printStackTrace(); } } } 上面的代码生成以下结果。 将名为msg的参数传递给JRuby中的脚本。 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("jruby"); String script = "puts($msg)"; engine.put("msg", "Hello from Java"); // Execute the script engine.eval(script); 例子 传递给脚本的Java对象的属性和方法可以在脚本中访问。 import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class Main { public static void main(String[] args) throws Exception{...

Java 脚本标识符

Java脚本教程 – Java脚本标识符 标识符是脚本中变量,函数和标签的名称。 Nashorn中的标识符是一个Unicode字符序列,具有以下规则: 可以包含字母,数字,下划线和美元符号 不能以数字开头 不能是保留字之一 例子 以下是有效标识符的示例: Id _id e$Id num1 以下是无效标识符: 4num //Cannot start with a digit emp id //Cannot contain spaces emp+id //Cannot contains the + sign break //break is a reserved word and cannot be used as an identifier 关键词 Nashorn中保留字的列表用作关键字 break do instanceof typeof case else new var catch finally return void continue for switch while debugger function this with default if throw delete in try Nashorn未来保留词的列表 class enum extends super const export import Nashorn未来保留字的列表在严格模式 implements let private public yield interface package protected static 注释 Nashorn支持两种类型的注释: 单行注释 多行注释 在Nashorn中编写注释的语法与Java的语法相同。 以下是注释的示例: // A single-line comment var Id; /* A multi-line comment */ var et; var d;

Java 脚本变量

Java脚本教程 – Java脚本变量 脚本语言是松散类型的。 变量的类型在编译时是未知的。类型可以在程序执行期间更改。并且基于存储在变量中的值在运行时确定。 在Nashorn中,关键字 var 用于声明一个变量。 // Declare a variable named a var a; 与Java不同,我们不在Nashorn中指定数据类型。 我们可以在一个变量语句中声明多个变量。 变量名称用逗号分隔: // Declare three variables var a, b, c; 变量在声明时初始化为 undefined 。 我们可以在声明时用一个值初始化一个变量: var a = 400, b = ["x", "y", "z"]; 在非限制模式中,可以在变量声明中省略关键字var: // Declare a variable named a without using the keyword var a = "xyz";

Java 脚本数据类型

Java脚本 教程- Java脚本数据类型 Nashorn中的数据类型有两种类型:基本类型和对象类型。 基本类型包括以下五种数据类型: Undefined Null Number Boolean String 未定义类型 未定义类型只有一个值: undefined 。 在Nashorn中声明但未赋值的变量的值为 undefined 。 我们还可以将未定义的值明确分配给变量。我们可以比较另一个值和未定义。 以下代码显示了如何使用 undefined 的值: 在下面的行中,a被隐式初始化为undefined。 var a; b为initilaized明确定义。 var b = undefined; 打印出a和b的值。 print("a is", a) print("b is", b); 比较a和b的值。 if (a == undefined) { print("a is undefined") } if (b == undefined) { print("b is undefined") } 空类型 Null类型只有一个值为null。 null值用于空对象。 以下代码显示如何使用值 null : var person = null; print("person is", person); 数字类型 Nashorn不区分整数和浮点数。 它使用 Number 表示两种类型的数值。 我们可以用十进制,十六进制,八进制和科学记数法表示数字字面量。 Nashorn定义了数字类型的三个特殊值: 非数字 正无穷大 负无穷大 在脚本中,这些特殊值由 NaN 表示, + Infinity 和 -Infinity 。 正无穷大值也可以表示为简单的无穷。 以下代码显示如何使用数字文字和特殊数字类型值: var intNumber = 100; // An integer of type Number var salary = 1234.678; // A floating-point number of type Number var hexNumber = 0x0061; // Same as 97 is decimal var...

Java 脚本字符串

Java脚本教程 – Java脚本字符串 字符串类型表示Unicode字符序列。 用双引号或单引号括起来的字符序列是字符串文字。 字符数是字符串的长度。 字符串文字 以下是使用字符串文字的示例: var greetings = "Hi there"; var title = "Java Tutorial"; var emptyMsg = ""; 如果字符串文字包含在双引号中,则字符串文字可以包含单引号,反之亦然。 我们可以使用反斜杠转义双引号。 var msg1 = "It"s Monday."; var msg2 = "He said, "Today is Monday.""; var msg3 = "It\"s Monday."; var msg4 = "He said, \"Today is Monday.\""; 在Nashorn中的字符串文字可以写成多行。在行的末尾使用反斜杠作为连续字符。 反斜杠和行终止符不是字符串文字的一部分。 以下代码具有三行中的字符串: var msg = "Hello \ world\ !"; print(msg); 要插入换行符,请使用转义序列\n。 var msg= "\ Line one\n\ Line two\n\ Line Three\n\ Line Four\ "; print(msg); 转义序列 下表列出了Nashorn中定义的转义序列。 字符转义序列 Unicode转义序列 角色名字 \b \u0008 退格 \t \u0009 水平制表符 \n \u000A 换行 \v \u000B 垂直制表符 \f \u000C 换页符 \r \u000D 回车 \” \u0022 双引号 \” \u0027 单引号 \\ \u005C 反斜杠

Java 脚本运算符

Java脚本教程 – Java脚本运算符 Nashorn的运算符列表: Operator Syntax ++ ++i i++ -- --i i-- delete delete prop void void expr typeof typeof expr + +op - -op ~ ~op ! !expr + op1 + op2 - op1 - op2 / op1 / op2 * op1 * op2 % op1 % op2 in prop in obj instanceof obj instanceof class < op1 < op2 <= op1 <= op2 > op1 > op2 >= op1 >= op2 == op1 == op2 != op1 != op2 === op1 === op2 !== op1 !== op2 << op1 << op2 >> op1 >> op2 >>> op1 >>> op2 & op1 & op2 bitwise AND | op1 | op2 bitwise OR ^ op1 ^ op2 bitwise XOR &&...