다음 각 비교의 결과(true/false)를 예측하라.
String s1 = "java";
String s2 = "ja" + "va";
String s3 = new String("java");
String half = "ja";
String s4 = half + "va";
Integer i1 = 100, i2 = 100, i3 = 1000, i4 = 1000;
s1 == s2, s1 == s3, s1 == s4, s1 == s4.intern(), i1 == i2, i3 == i4// s1 == s2 → true (컴파일 타임 상수 접기 → 풀의 같은 객체)
// s1 == s3 → false (new는 힙에 별도 객체)
// s1 == s4 → false (런타임 연결 → 새 객체)
// s1 == s4.intern() → true (intern이 풀의 "java" 반환)
// i1 == i2 → true (100은 -128~127 캐시 범위)
// i3 == i4 → false (1000은 캐시 밖 → 서로 다른 객체)List<String> names = List.of(" kim ", "LEE", " park")를 받아 각 이름을 strip + 소문자로 정규화한 뒤 ,로 이어 "kim,lee,park"를 만드는 메서드를 두 가지 방식(StringBuilder, String.join 또는 스트림)으로 작성하라.
import java.util.List;
import java.util.stream.Collectors;
public class Main {
static String withBuilder(List<String> names) {
StringBuilder sb = new StringBuilder();
for (String n : names) {
if (sb.length() > 0) sb.append(',');
sb.append(n.strip().toLowerCase());
}
return sb.toString();
}
static String withStream(List<String> names) {
return names.stream()
.map(n -> n.strip().toLowerCase())
.collect(Collectors.joining(","));
}
public static void main(String[] args) {
List<String> names = List.of(" kim ", "LEE", " park");
System.out.println(withBuilder(names)); // 출력: kim,lee,park
System.out.println(withStream(names)); // 출력: kim,lee,park
}
}Map<String, String> params에서 키를 찾아 int로 변환하되, 키가 없거나 숫자가 아니면 기본값을 반환하는 getInt(Map<String,String> params, String key, int defaultValue)를 작성하라. NPE와 NumberFormatException이 모두 나지 않아야 한다.
import java.util.Map;
public class Main {
static int getInt(Map<String, String> params, String key, int defaultValue) {
String raw = params.get(key);
if (raw == null || raw.isBlank()) return defaultValue;
try {
return Integer.parseInt(raw.strip());
} catch (NumberFormatException e) {
return defaultValue;
}
}
public static void main(String[] args) {
Map<String, String> params = Map.of("page", " 3 ", "size", "abc");
System.out.println(getInt(params, "page", 1)); // 출력: 3
System.out.println(getInt(params, "size", 20)); // 출력: 20
System.out.println(getInt(params, "sort", 0)); // 출력: 0
}
}