Java 基础面试300题 (231-260)
231 String::toUpperCase
是什么类型的方法引用?
String::toUpperCase
是任意方法引用的示例。它指的是String
类的toUpperCase
方法,但不是指任何特定对象。 通常在遍历集合或流时使用。例如,假设想将列表的所有元素转换为大写。可以使用此String::toUppercase
,如下所示:
List<String> colours = Arrays.asList(“Red”,”Blue”,”Green”);
List<String> upperCaseColours =
colours.stream().map(String::toUpperCase).collect(Collectors.toList());
232. 以下代码片段有什么问题?如何修复?
LocalDate date1 = LocalDate.of(2018, 7, 24);
LocalTime time1 = date1.atTime(5, 30);
上面的代码片段首先创建一个名为date1
的LocalDate
,然后在date1
上调用atTime()
方法,并将结果分配给名为time1
的LocalTime
对象,atTime()
方法将当前时间对象中的日期与指定的时间相结合,返回一个LocalDateTime
对象而不是LocalTime
对象,因而上述代码会出现编译错误。按如下方式修改即可修复错误 :
LocalDateTime time1 = date1.atTime(5, 30);
233.有哪些方式创建LocalDate
? 。
LocalDate
类有几个静态方法用于创建LocalDate
:
LocalDate.now() 方法:该方法创建与当前日期对应的LocalDate
,如下代码所示:
LocalDate date1 = LocalDate.now();
LocalDate.of()方法: 该方法创建与指定年份、月份和日期相对应的LocalDate
,如下代码所示:
LocalDate date2 = LocalDate.of(2018, 7, 24);
LocalDate.parse()方法:该方法创建与字符串表示的日期对应的LocalDate
可用于此,如下代码所示:
LocalDate date3 = LocalDate.parse(“2014–08–11”);
234.如何检查一个日期是否在另一个日期之前?
LocalDate
类有一个名为isBefore()
的方法,可以用它来检查一个日期是否在另一个日期之前,如下代码所示:
LocalDate date1 = LocalDate.of(2018, 7, 24);
LocalDate date2 = LocalDate.parse(“2014–08–11”);
boolean isBefore = date1.isBefore(date2);
System.out.println(“isBefore:”+isBefore);
上述代码创建两个日期对象,date1
和date2
,在date1
上以date2
为参数调用isBefore()
方法,由于date1
在date2
之后,所以isBefore()
方法返回false
。因此代码输出如下:
isBefore:false
235. 解释ZonedDateTime
类。
ZonedDateTime
类表示日期和时间,该日期和时间也具有时区信息。因此,除了年、月、日、小时、分钟、秒和纳秒组件外,它还有一个ZoneId
组件。ZoneId
是java.time.ZoneId
的实例,表示时区。大约有40个时区可以通过ZoneID表示。下面代码显示了如何创建ZonedDateTime
:
ZoneId zoneId = ZoneId.of(“Asia/Kolkata”);
ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);
上述代码片段首先创建一个与Asia/Kolkata
对应的时区,也就是IST时区。然后,它创建一个ZonedDateTime
,该时间与系统时钟的当前时间相对应,但具有此时区的ID。
236.以下代码片段的输出是什么?
LocalTime localTime = LocalTime.of(7, 15);
System.out.println(localTime.minusMinutes(30));
上述代码创建一个LocalTime
实例。LocalTime
表示具有小时、分钟、秒和纳秒成分的时间。在这里,创建一个对应于