Ste*_* L. 11 java lambda expression-evaluation java-8 method-reference
什么是第二次s.get()返回"ONE"的解释?
String x = "one";
Supplier<String> s = x::toUpperCase;
System.out.println("s.get() = " + s.get());
x = "two";
System.out.println("s.get() = " + s.get());
Run Code Online (Sandbox Code Playgroud)
更新:
比较它:
String x = "one";
Supplier<String> s = () -> x.toUpperCase();
System.out.println("s.get() = " + s.get());
x = "two";
System.out.println("s.get() = " + s.get());
Run Code Online (Sandbox Code Playgroud)
它会抛出一个编译错误.
在java变量中,引用对象通常称为references.在上面的代码中,您有两个引用,x和s.
字符串是不可变的,任何更改都代表另一个对象.创建后,您无法修改String对象的任何状态.
在代码都x和s被initilized指2个对象,然后x被制成参阅另一个目的,但s仍是指相同的对象.请注意,::会立即评估并生成对象.x可以独立于其他对象更改其引用y
x = "two"仅使用make x来引用不同的对象.
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |