alw*_*ous 4 java java-8 java-stream
我正在研究Streams API.
第一行中2发生了什么?它被视为什么数据类型?为什么这不是真的?
System.out.println(Stream.of("hi", "there",2).anyMatch(i->i=="2"));
Run Code Online (Sandbox Code Playgroud)
这个问题的第二部分是为什么下面的代码不能编译(2不在引号中)?
System.out.println(Stream.of("hi", "there",2).anyMatch(i->i==2));
Run Code Online (Sandbox Code Playgroud)
在第一个片段,你正在创建一个Stream的Object秒.所述2元件是一个Integer,因此它比较到String"2",返回false.
在第二个片段中,您无法将任意对象与int2 进行比较,因为没有转换Object为2.
要使第一个片段返回true,您必须将Stream的最后一个元素更改为a String(并且还使用equals而不是==为了不依赖于String池):
System.out.println(Stream.of("hi", "there", "2").anyMatch(i->i.equals("2")));
Run Code Online (Sandbox Code Playgroud)
第二个片段可以通过使用equals而不是==因为equals任何存在而修复Object:
System.out.println(Stream.of("hi", "there",2).anyMatch(i->i.equals(2)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |