5 분 소요

자바 복습 및 정리 2P

문자열

문자열 길이

String s = "hello world my world";
System.out.println(s.length()); //12

대소문자 변환

String s = "hello world my world";
System.out.println(s.toUpperCase()); // 대문자
System.out.println(s.toLowerCase()); // 소문자

포함 관계

String s = "hello world my world";
System.out.println(s.contains("hello")); // true 
System.out.println(s.contains("demuu")); // false

위치 정보

String s = "hello world my world";
System.out.println(s.indexOf("world")); // 6 (시작 위치)
System.out.println(s.indexOf("demuu")); // -1 (없으면 -1)
System.out.println(s.lastIndexOf("world")); // 15 (마지막 world 시작위치)
System.out.println(s.startsWith("hello")); // true (hello로 시작하면 true 아님 false)
System.out.println(s.endsWith("hello")); // false (hello로 끝나면 true 아님 false)

문자열 변환

String s = "hello world my world";
System.out.println(s.replace("hello", "hi")); // hello를 hi로 변환

출력 시작 끝 위치

String s = "hello world my world";
System.out.println(s.substring(7)); // 인덱스 7 부터 출력
System.out.println(s.substring(s.indexOf("my"))); // my world (my 부터 출력)
System.out.println(s.substring(7, 10)); // 인덱스 7 부터 시작해서 인덱스 10 까지

공백 제거

String s2 = "     hello     ";
System.out.println(s2.trim()); // hello (앞뒤 공백 제거)
System.out.println(s2.replace(" ", "")); // 모든 공백 제거 

문자열 비교

String s = "java";
System.out.println(s.equals("java")); // true
System.out.println(s.equals("javaScript")); // false
System.out.println(s.equals("Java")); // false
System.out.println(s.equalsIgnoreCase("Java")); // true (대소문자 구분 X)

// s1, s2는 같은 값을 참조
String s1 = "12";
String s2 = "12";
System.out.println(s1.equals(s2)); // true (내용 비교)
System.out.println(s1 == s2); // true (참조 비교)

// s1, s2는 서로 다른 값
s1 = new String("12");
s2 = new String("12");
System.out.println(s1.equals(s2)); // true (내용 비교)
System.out.println(s1 == s2); // false (참조 비교)

참고

System.out.print : 출력 후 줄바꿈을 하지 않는다.

System.out.println : 출력 후 자동으로 줄바꿈을 추가한다.

System.out.print("Hello, ");
System.out.print("world!");
// Hello, world!

System.out.println("Hello,");
System.out.println("world!");
// Hello,
// world!

조건문 switch

if문과 비슷하지만 좀 더 일정한 형식이 있는 조건/판단문이다.

주로 하나의 변수나 표현식의 값에 따라 여러 가지 경우(case) 중에서 하나를 선택하여 실행하는데 쓰인다.

기본 구조

switch (expression) {
    case value1:
        // 실행할 코드
        break;
    case value2:
        // 실행할 코드
        break;
    // 추가적인 case 문들
    default:
        // 위의 어떤 case에도 해당하지 않을 때 실행할 코드
}

예시

int day = 3;

switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    case 3:
        System.out.println("Wednesday");
        break;
    default:
        System.out.println("Other day");
}

// 출력 : Wednesday

예시2

int ranking = 2;

switch (ranking) {
    case 1:
        System.out.println("전액 장학금");
        break;
    case 2:
    case 3:
        System.out.println("반액 장학금");
        break;
    default:
        System.out.println("장학금 대상 아님");
}

// 출력 : 반액 장학금

예시3

int grade = 1;
int price = 7000;

switch (grade) {
    case 1:
        price += 1000;
    case 2:
				price += 1000;
    case 3:
        price += 1000;
        break;
}
System.out.println(grade + "등급 제품 가격 : " + price + "원");
// 출력 (grade = 1) : 1등급 제품 가격 : 10000원
// 출력 (grade = 2) : 2등급 제품 가격 : 9000원
// 출력 (grade = 3) : 3등급 제품 가격 : 8000원

반복문 while

조건이 참인 동안에 반복적으로 코드 블록을 실행하는 제어 구조이다.

조건식이 처음부터 거짓이라면 코드 블록은 실핻되지 않을 수 있다.

기본 구조

while (조건식) {
    // 반복적으로 실행될 코드
}

예시 1

int i = 1;
while (i <= 5) {
    System.out.println(i);
    i++;
}
// 출력
// 1
// 2
// 3
// 4
// 5

예시2 (2의 거듭제곱)

int powerOfTwo = 1;
int exponent = 0;

while (exponent <= 10) {
	System.out.println("2^" + exponent + " = " + powerOfTwo);
	powerOfTwo *= 2;
	exponent++;
}

예시3 (무한 루프 탈출)

//  특정 조건이 충족될 때 무한 루프에서 탈출
Scanner scanner = new Scanner(System.in);

while (true) {
    System.out.print("종료하려면 q를 입력하세요: ");
    String input = scanner.nextLine();
    if (input.equalsIgnoreCase("q")) {
        System.out.println("프로그램을 종료합니다.");
        break; // 무한 루프 탈출
    }
}
scanner.close();

Do while

조건을 평가하기 전에 먼저 루프의 본문을 실행하는 특징을 가지고 있다.

기본 구조

do {
    // 반복 실행할 코드
} while (조건);

예시 1

int count = 1;
do {
    System.out.println("Count: " + count);
    count++;
} while (count <= 5);

// 출력
// Count: 1
// Count: 2
// Count: 3
// Count: 4
// Count: 5

예시 2 (whlie 과 Do while의 차이)

int num = 10;

while (num <= 10) {
	System.out.println(num);
	num++;
}
System.out.println("숫자 증가 끝");

// 출력
// 숫자 증가 끝
int num = 10;

do {
	System.out.println(num);
	num++;
} while (num <= 10);
System.out.println("숫자 증가 끝");

// 출력
// 10
// 숫자 증가 끝

예시 3 (로또 번호 생성기)

Random random = new Random();
  
System.out.println("Lotto Numbers:");
int count = 1;
do {
    int randomNumber = random.nextInt(45) + 1;
    System.out.println("Number " + count + ": " + randomNumber);
    count++;
} while (count <= 6);

// 1부터 45까지의 난수를 생성하여 로또 번호를 출력
// 6개의 번호를 출력할 때까지 반복.

이중 반복문 or 다중 반복

하나의 반복문 안에 또 다른 반복문을 중첩하여 사용하는 구조.

복잡한 반복 로직을 구현할 때 유용하며, 주로 2차원 배열이나 중첩된 데이터 구조를 처리할 때 자주 사용함.

기본 구조

for (int i = 0; i < outerLimit; i++) {
    for (int j = 0; j < innerLimit; j++) {
        // 내부 반복문에서 수행할 작업
    }
}

예시 1 (2차원 배열 순회)

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();
}

// 출력
// 1 2 3
// 4 5 6
// 7 8 9

예시 2 (구구단)

for (int i = 2; i <= 9; i++) {
    for (int j = 1; j <= 9; j++) {
        System.out.println(i + " * " + j + " = " + (i * j));
    }
    System.out.println();
}

예시 3 (3차원 배열 순회)

int[][][] threeDimensionalArray = {
    {
        {1, 2, 3},
        {4, 5, 6}
    },
    {
        {7, 8, 9},
        {10, 11, 12}
    }
};

for (int i = 0; i < threeDimensionalArray.length; i++) {
    System.out.println("Layer " + i + ":");
    for (int j = 0; j < threeDimensionalArray[i].length; j++) {
        for (int k = 0; k < threeDimensionalArray[i][j].length; k++) {
            System.out.print(threeDimensionalArray[i][j][k] + " ");
        }
        System.out.println();
    }
    System.out.println();
}

// 출력
// Layer 0:
// 1 2 3
// 4 5 6

// Layer 1:
// 7 8 9
// 10 11 12

댓글남기기