본문 바로가기
IT & AI/AI 지식

JAVA 조건문, 반복문, 참조 타입(배열) 정리

by 빛나는해커 2024. 11. 21.

1.  조건문과 반복문

 

조건문: if문, switch문

  • if문은 조건이 참일 경우 특정 코드를 실행하는 조건문이다.
  • 조건식이 참일 때만 해당 블록의 코드가 실행된다.
int num = 10;
if (num > 5) {
    System.out.println("num은 5보다 크다");
}
  • if-else문은 조건이 참일 때와 거짓일 때 각각 다른 코드를 실행하는 구조이다.
int num = 3;
if (num > 5) {
    System.out.println("num은 5보다 크다");
} else {
    System.out.println("num은 5보다 작거나 같다");
}
  • if-else if-else문은 여러 조건을 순차적으로 검사하여 해당 조건이 참일 경우 그 블록의 코드를 실행한다.
int score = 85;
if (score >= 90) {
    System.out.println("A 등급");
} else if (score >= 80) {
    System.out.println("B 등급");
} else {
    System.out.println("C 등급");
}
  • switch문은 하나의 변수 값에 따라 여러 분기 처리를 할 때 유용하다.
  • case를 사용해 각 조건을 구분하고, break로 각 조건이 끝나면 빠져나가도록 한다.
int day = 3;
switch (day) {
    case 1:
        System.out.println("월요일");
        break;
    case 2:
        System.out.println("화요일");
        break;
    case 3:
        System.out.println("수요일");
        break;
    default:
        System.out.println("기타 요일");
}

 

반복문: for문, while문, do-while문

  • for문은 반복 횟수가 정해져 있을 때 사용하는 반복문이다. 초기화, 조건식, 증감식을 이용해 반복을 제어한다.
for (int i = 0; i < 5; i++) {
    System.out.println("i의 값: " + i);
}
  • while문은 조건식이 참일 동안 반복 실행하는 구조이다.
  • 조건을 먼저 검사하기 때문에 조건이 거짓일 경우 한 번도 실행되지 않을 수 있다.
int count = 0;
while (count < 3) {
    System.out.println("count: " + count);
    count++;
}
  • do-while문은 최소 한 번은 블록 내의 코드를 실행한 후, 조건을 검사하여 반복 여부를 결정한다.
int count = 0;
do {
    System.out.println("count: " + count);
    count++;
} while (count < 3);
  • break문은 반복문을 즉시 종료하는 데 사용된다.
  • switch문에서도 사용되어 특정 조건을 만족할 때 분기 처리를 중단할 수 있다.
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;  // i가 5일 때 반복문 종료
    }
    System.out.println("i: " + i);
}
  • continue문은 반복문의 나머지 부분을 건너뛰고 다음 반복으로 넘어가게 한다.
  • 반복을 건너뛰고 조건을 다시 검사하게 된다.
for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue;  // 짝수일 경우 출력하지 않고 다음 반복으로 넘어감
    }
    System.out.println("i: " + i);
}

2.  참조 타입

 

참조 타입과 참조 변수

  • 자바에서 데이터 타입은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나눌 수 있다.
  • 기본 타입에는 int, float, boolean 등이 있으며, 참조 타입에는 배열, 클래스, 인터페이스 등이 포함된다.
  • 기본 타입은 실제 값을 저장하고, 참조 타입은 값이 저장된 메모리 주소를 참조한다.
  • 기본 타입의 데이터는 스택(stack)에 저장되지만, 참조 타입의 데이터는 힙(heap) 영역에 저장된다.
  • 참조 타입의 변수는 힙 영역에 저장된 객체의 주소를 참조한다.
  • 참조 타입의 변수에서 ==와!= 연산자는 두 참조 변수가 같은 객체를 참조하는지 비교할 때 사용된다.
  • 객체의 값을 비교하려면 .equals() 메서드를 사용해야 한다.
String str1 = new String("Hello");
String str2 = new String("Hello");

System.out.println(str1 == str2);  // false, 서로 다른 객체를 참조
System.out.println(str1.equals(str2));  // true, 문자열의 내용이 같음
  • 참조 타입 변수는 null 값을 가질 수 있다.
  • 이는 어떠한 객체도 참조하지 않는 상태를 의미한다.
  • null 상태에서 객체의 메서드나 멤버에 접근하려고 하면 NullPointerException이 발생한다.
String str = null;
// str.length();  // NullPointerException 발생
  • String은 참조 타입으로, 문자열을 표현하는 데 사용된다.
  • 문자열 리터럴은 힙 영역의 문자열 상수 풀에 저장되며, 동일한 문자열 리터럴은 동일한 메모리 주소를 참조한다.
String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1 == s2);  // true, 같은 리터럴은 동일한 메모리 주소를 참조

 

배열

  • 배열은 같은 타입의 여러 데이터를 하나의 변수로 묶어서 저장하는 자료구조이다.
  • 배열은 고정된 크기를 가지며, 인덱스를 사용해 요소에 접근할 수 있다.
  • 배열을 사용하려면 먼저 선언해야 한다.
  • 배열의 타입과 이름을 지정하고, 대괄호([])를 사용한다.
int[] numbers;
  • 배열은 new 키워드를 사용하여 생성한다. 배열의 크기를 지정해야 한다.
numbers = new int[5];
  • 배열의 길이는. length 속성을 통해 알 수 있다.
System.out.println("배열의 길이: " + numbers.length);
  • 자바 프로그램은 명령 라인에서 인수를 받아 배열로 저장할 수 있다.
  • main 메서드의 매개변수인 String[] args를 통해 입력값을 받는다.
public static void main(String[] args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}
  • 다차원 배열은 배열의 배열이다.
  • 주로 2차원 배열이 많이 사용되며, 행과 열로 데이터를 관리한다.
int[][] matrix = new int[3][3];
matrix[0][0] = 1;
  • 배열은 객체를 참조할 수도 있다.
  • 객체를 담는 배열을 선언하고 각 요소에 객체를 할당할 수 있다.
String[] names = new String[3];
names[0] = "Alice";
names[1] = "Bob";
names[2] = "Charlie";
  • 배열을 복사할 때는 System.arraycopy() 메서드를 사용하거나 Arrays.copyOf() 메서드를 사용할 수 있다.
int[] original = {1, 2, 3};
int[] copy = new int[original.length];
System.arraycopy(original, 0, copy, 0, original.length);
  • 향상된 for문은 배열이나 컬렉션의 모든 요소를 순차적으로 반복할 때 사용된다.
for (int number : numbers) {
    System.out.println(number);
}

 

열거 타입

  • 열거 타입(enum)은 여러 개의 상수값을 정의하는 데 사용된다.
  • 열거형은 코드의 가독성을 높이고 특정 값만 허용하도록 강제할 때 유용하다.
enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
  • 열거형 타입으로 변수를 선언하고 사용할 수 있다.
  • 열거형을 통해 코드를 보다 직관적이고 안전하게 만들 수 있다.
Day today = Day.WEDNESDAY;
System.out.println("오늘은: " + today);
  • 열거형에는 몇 가지 기본 메서드가 포함되어 있다.
  • 예를 들어, values() 메서드를 사용하면 열거형에 정의된 모든 값을 배열로 반환할 수 있다.
for (Day day : Day.values()) {
    System.out.println(day);
}
  • switch문에서 열거형을 사용하면 코드의 가독성을 높이고, 특정 열거형 값에 따라 분기 처리를 할 수 있다.
Day today = Day.MONDAY;
switch (today) {
    case MONDAY:
        System.out.println("월요일입니다.");
        break;
    case FRIDAY:
        System.out.println("금요일입니다.");
        break;
    default:
        System.out.println("기타 요일입니다.");
}

JAVA 기초 조건문, 반복문, 참조 타입(배열) 소개 이미지