# map
맵은 대응관계를 쉽게 해주는 자료형으로 딕셔너리와 비슷합니다.
예를 들어
key | value |
people | 사람 |
baseball | 야구 |
이와 같이 리스트나 배열과 다르게 순서와 관계없이 특정 키에 값을 대응시켜 값을 얻을 수 있습니다.
맵의 자료형 중 가장 흔히 쓰이는 Hashmap 과 메서드에 대해 알아보겠습니다.
- put(K key, V value): 키에 해당하는 값을 저장합니다. 키가 이미 존재하면 값을 덮어씁니다.
map.put("Apple", 10); //Apple이라는 key에 10이라는 value 대응시키기
- get(Object key): 주어진 키에 매핑된 값을 반환합니다. 값이 없으면 null을 반환합니다.
Integer value = map.get("Apple"); //value = 10
- remove(Object key): 주어진 키에 매핑된 값을 삭제합니다.
map.remove("Banana"); //Banana가 삭제되면서 Banana에 value값을 리턴
- containsKey(Object key): 특정 키가 Map에 존재하는지 여부를 반환합니다.
boolean hasApple = map.containsKey("Apple"); // true or false 값이 저장됨
- containsValue(Object value): 특정 값이 Map에 존재하는지 여부를 반환합니다.
boolean hasValue10 = map.containsValue(10);
- size(): Map에 저장된 키-값 쌍의 개수를 반환합니다.
int size = map.size();
- clear(): Map의 모든 항목을 삭제합니다.
map.clear();
- keySet(): Map에 있는 모든 키를 Set으로 반환합니다.
Set<String> keys = map.keySet();
# set
세트, 즉 집합이라는 자료형은 집합과 관련된 것을 쉽게 처리하기 위해 만든 것으로 중복을 허용하지 않으며 순서가 없다는 특징이 있습니다.
예를 들어
세트 입력값 | 세트 출력값 |
h,e,l,l,o | e,h,l,o |
이와 같이 중복 요소를 제거하고 랜덤적인 순서로 출력값이 도출됩니다.
집합 자료형 중 가장 널리 쓰이는 HashSet에 대해 알아보고 그의 활용과 메서드에 대해 알아보겠습니다.
-집합구하기
- retainAll(): intersection(교집합)을 구할 때 사용됩니다.
- addAll(): union(합집합)을 구할 때 사용됩니다.
- removeAll(): substract(차집합)을 구할 때 사용됩니다.
-주요 메서드
- add(E e): 주어진 요소를 Set에 추가합니다. 이미 존재하는 요소라면 추가되지 않고 false를 반환합니다.
set.add("Apple"); //addAll 메서드에 경우 여러가지 요소를 한 번에 추가할 수 있습니다.
- remove(Object o): 주어진 요소를 Set에서 제거합니다.
set.remove("Banana");
- contains(Object o): 주어진 요소가 Set에 존재하는지 확인합니다.
boolean exists = set.contains("Orange");
- size(): Set에 저장된 요소의 개수를 반환합니다.
int size = set.size();
- isEmpty(): Set이 비어 있는지 여부를 확인합니다.
boolean empty = set.isEmpty();
- clear(): Set의 모든 요소를 제거합니다.
set.clear();
# enum
enum은 상수들의 집합을 정의할 때 사용되며 각 상수가 특정한 이름을 가진 고정값이여야 합니다.
enum의 특징
- enum은 여러 상수값을 그룹화하여 처리할 때 유용합니다.
- 각 상수는 기본적으로 0부터 시작하는 정수 값으로 매핑되지만, 더 복잡한 값을 설정하거나 메소드를 포함할 수도 있습니다.
- enum은 클래스와 유사하며, 생성자, 메소드, 필드를 가질 수 있습니다.
사용예시
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
// Enum 값 출력
System.out.println("오늘은: " + today);
// Enum을 사용한 조건문
if (today == Day.MONDAY) {
System.out.println("월요일입니다.");
}
}
}
# final
final은 변경할 수 없는 값이나 메서드, 클래스를 정의할 때 사용됩니다.
사용예시
public class FinalExample {
public static void main(String[] args) {
final int MAX_VALUE = 100;
// MAX_VALUE = 200; // 오류 발생, 값 변경 불가
System.out.println("최대 값은: " + MAX_VALUE);
}
}
final 변수
class Parent {
public final void display() {
System.out.println("부모 클래스의 메소드");
}
}
class Child extends Parent {
// public void display() { } // 오류 발생, 오버라이딩 불가
}
final 메서드
final class FinalClass {
// 클래스 내용
}
// class ChildClass extends FinalClass { } // 오류 발생, 상속 불가
final 클래스
# if
if문은 자바에서 조건을 검사하고, 그 조건이 참일 때 특정 코드를 실행하는 제어문입니다. 조건이 거짓일 경우 해당 코드를 건너뜁니다.
사용예시
int score = 85;
if (score >= 90) {
System.out.println("A 학점");
} else if (score >= 80) {
System.out.println("B 학점");
} else {
System.out.println("C 학점");
}
이와 같이 score에 경우의 수를 if , else if , else 로 나눠 각각의 명령을 내리면서 프로그램의 흐름을 만들 수 있습니다.
#switch / case
switch 문은 여러 가지 경우의 수를 처리할 때 사용되는 조건문입니다. 주로 값에 따라 실행할 코드가 다를 때 사용하며, if-else 문보다 코드가 간결해지는 장점이 있습니다. 주어진 값이 특정 case와 일치하면 해당 블록의 코드가 실행됩니다. if-else 문처럼 조건을 검사하지만, 값의 일치 여부를 기준으로 동작합니다.
사용예시
String fruit = "Apple";
switch (fruit) {
case "Apple":
System.out.println("사과입니다.");
break;
case "Banana":
System.out.println("바나나입니다.");
break;
default:
System.out.println("알 수 없는 과일입니다.");
}
이와 같이 switch ( ) 안에 들어가는 변수의 값이 무엇이냐에 따라 case를 분류하고 해당 case ( ) 안에 들어가는 값과 변수의 값이 동일할 때 해당 case에 포함되는 명령을 실행합니다. 위에 코드의 출력값은 "사과입니다." 에 해당합니다.
# while
while 문은 조건이 참일 때 반복해서 코드를 실행하는 반복문입니다. 조건이 참인 동안 계속 반복되며, 조건이 거짓이 되면 반복이 종료됩니다. 따라서, 조건이 언제 거짓이 되는지를 잘 설정해서 무한 루프에 빠지지 않도록 주의해야 합니다.
사용예시
public class WhileExample {
public static void main(String[] args) {
int i = 0;
// while 문을 사용한 반복
while (i < 5) {
System.out.println("i의 값: " + i);
i++; // i 값을 1씩 증가시켜 반복이 끝나도록 설정
}
}
}
처음 정수형 변수 i의 값이 0으로 설정되어있으니 while (i<5) 를 만족시키는 동안 while 문 안에 명령을 실행하고 안에 명령이 반복되어 i<5를 만족시키지 않는 순간부터 while문을 나오게 됩니다. 만약 명령어의 i++ >> i--였다면 while문은 조건에 대해 항상 참이므로 무한루프를 돌게 될 것입니다.
# for
for 문은 반복 횟수가 정해졌을 때 사용하는 반복문입니다. 초기화, 조건식, 증감식을 한 줄에 작성하여 반복의 시작, 종료, 그리고 진행 방식을 명확히 정의할 수 있어 반복을 제어하기에 효율적입니다.
사용예시
public class ForExample {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("i의 값: " + i);
}
}
}
해당 코드에서 for ( ) 안에 정수형 i 변수가 0으로 설정되어있고 i < 5인 동안 i++ 하겠다는 조건을 써둔 뒤 for문 안에 명령이 해당 조건을 성립하는 동안 반복되고 조건을 벗어나게 될 시 for문은 멈추게 됩니다. 위 코드의 출력값은 다음과 같습니다.
i의 값: 0
i의 값: 1
i의 값: 2
i의 값: 3
i의 값: 4
#for - each
for-each 문은 컬렉션이나 배열과 같은 반복 가능한 요소들을 순차적으로 처리할 때 사용됩니다. 인덱스를 사용하지 않고 배열이나 컬렉션의 각 요소를 자동으로 반복하므로 코드가 간결하고 실수할 확률이 적습니다. 그러나 반복 중 요소를 변경하거나 인덱스가 필요한 경우에는 적합하지 않습니다.
사용예시
public class ForEachExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println("숫자: " + num);
}
}
}
해당 코드에서 for ( ) 안에 정수형 변수 num 이라는 곳에 numbers 라는 배열이 한 바퀴 돌아가면서 저장됩니다.
저장하는 동시에 for문 안에 있는 명령이 실행되며 출력값은 다음과 같습니다.
숫자: 1
숫자: 2
숫자: 3
숫자: 4
숫자: 5
---퀴즈 3.5---
다음 중 HashMap의 특징은? c
Map에서 키-값 쌍을 추가할 때 사용하는 메서드는? a
다음 코드의 출력 결과는 무엇인가? b
Map에 키가 존재하는지 여부를 알 수 있는 메서드는? d
Set의 주요 특징 중 하나는 무엇인가? c
다음 코드의 출력 결과는 무엇인가? a
Set에 요소를 추가할 때 사용하는 메서드는? a
Java에서 자동 형 변환(implicit casting)이 이루어지는 경우는? c
다음 코드의 출력 결과는 무엇인가? a(캐스팅)
다음 중 final 키워드의 올바른 사용법이 아닌 것은? d
Java에서 기본형 타입을 참조형 타입으로 변환할 때 사용하는 클래스는? b
다음 코드의 출력 결과는 무엇인가? c
1. Java의 `Set` 인터페이스를 사용하는 목적에 대해 서술하시오.
> set인터페이스는 중복된 값을 허용하지 않는 컬렉션을 만들때 사용된다.
2. 형 변환(타입 캐스팅)의 개념을 설명하고, 자바에서의 자동 형 변환과 수동 형 변환의 차이점을 서술하시오.
> 타입 캐스팅은 한 자료형의 값을 다른 자료형을 변환하는 것으로 작은 크기의 자료형에서 큰 크기의 자료형으로 이동할 때
자동 형 변환이 이루어지고 큰 크기의 자료형을 작은 크기의 자료형을 변환할 때 수동 형 변환이 필요하다.
3. Java의 `final` 키워드에 대해 설명하고, `final` 변수를 사용할 때의 장점을 서술하시오.
> final을 사용하면 해당 값이 절대로 변하지 않음을 의미하며 값이 변경될 수 없어서 코드의 예측 가능성이 높아지고
멀티 스레드 환경에서 데이터의 일관성을 유지하는 데 유리하다.
4. 형 변환 시 발생할 수 있는 예외 상황에 대해 설명하고, `ClassCastException`이 발생하는 경우를 예로 들어 설명하시오.
> 형 변환 시 발생할 수 있는 대표적인 예외 상황으로 ClassCastException이 존재하는데 이는 부모 클래스 타입으로 저장된
객체를 자식 클래스 타입으로 잘못 변환할 때 발생하며 예를 들어
Object obj = new String("Hello");
Integer num = (Integer) obj; // ClassCastException 발생
---퀴즈 4---
다음 코드의 출력 결과는 무엇인가? a
다음 중 if 문의 올바른 사용법은? b
다음 중 중첩 if 문의 예는? b
다음 if-else if-else 구조에서 result의 값은 무엇인가? b
다음 if 문에서 논리 오류가 있는 것은? a
다음 코드의 출력 결과는 무엇인가? c
switch 문에서 break 문을 생략하면 어떤 결과가 발생하는가? c
다음 중 switch 문의 올바른 사용 예는? c
다음 코드의 출력 결과는 무엇인가? b
다음 중 switch 문에서 사용할 수 없는 자료형은? c
다음 코드의 출력 결과는 무엇인가? a
다음 중 무한 루프를 생성하는 for 문의 예는? d
다음 코드의 출력 결과는 무엇인가? a
다음 중 for 문을 사용하여 1부터 10까지의 합을 구하는 올바른 코드는? a
다음 코드의 출력 결과는 무엇인가? b
다음 코드의 출력 결과는 무엇인가? a
다음 중 무한 루프를 생성하는 while 문의 예는? a
다음 코드의 출력 결과는 무엇인가? b
다음 중 while 문을 사용하여 1부터 10까지의 홀수를 출력하는 올바른 코드는? d
다음 코드의 출력 결과는 무엇인가? b
다음 코드의 출력 결과는 무엇인가? a
다음 중 for-each 문을 사용하는 이유로 옳지 않은 것은? c
다음 코드의 출력 결과는 무엇인가? a
다음 중 for-each 문을 사용하여 리스트의 모든 요소를 출력하는 올바른 코드는? d
다음 코드의 출력 결과는 무엇인가? b
---코테 3.5 - 1---
---코테 3.5 - 2 ---
---코테 4 - 1 ---
---코테 4 - 2 ---
'WINK-(Web & App) > JAVA 스터디' 카테고리의 다른 글
[2024-2 Java 스터디] 정채은 #2주차 (0) | 2024.10.18 |
---|---|
[2024-2 Java 스터디] 김지수 #2주차 (2) | 2024.10.18 |
[2024-2 Java 스터디] 강보경 #2주차 (5) | 2024.10.16 |
[2024-2 Java 스터디] 이서영 #2주차 (1) | 2024.10.16 |
[2024-2 Java 스터디] 이민형 #2주차 (3~4장) (1) | 2024.10.16 |