[Java] 제어문(조건문/반복문)

박채은·2022년 11월 1일
0

Java

목록 보기
8/30

이번 Unit에서는 이론보다는 실습 위주였기 때문에 문제를 풀면서 알게 된 부분을 정리해 보았습니다.

이 외에도 다양한 메서드가 있을텐데, Oracle에서 확인해보자!

char charAt(int index)

Java의 String은 C언어와는 다르게, 인덱스로 접근할 수 없다.

String str = "helloworld";

// 잘못된 접근
System.out.println(str[5]);

// 올바른 접근
System.out.println(str.charAt(5));

그래서 charAt(index)를 사용한다.
(str.charAt(index)와 str[i]의 의미는 동일하다.)

string은 왜 index로 접근할 수 없는 걸까?
(아직 이유는 찾지 못했음)


int getNumericValue(char ch)

  • 숫자 형태의 char형을 int 형으로 변환해주는 메서드
// 유니코드를 활용
int num = character - '0';

// getNumericValue 메서드를 사용
int num = Character.getNumericValue(character);

String의 "+" 연산자

  • String 변수에 int형, char형 변수를 더해주면 그대로 String으로 적용된다.
System.out.println("A" + 3); // string + int
System.out.println('1' + "ABC"); // char + string
System.out.println("A" + "A"); // string + string

이는 덧셈 연산자를 진행할 때, 피연산자 중 한 쪽이 String 형이면 나머지 쪽을 String 형태로 변환한 다음에 문자열을 결합하는 방식으로 작동하기 때문이다. (참고)

  • String에 "+" 연산자는 있는데 "-" 연산자는 없다!
    String에서 문자를 삭제하려면 다른 메서드를 사용해야 한다.

String 문자 제거

1. replace, replaceAll

  • 특정 문자를 대체/제거
str = str.replace(oldChar, newChar)

2. deleteCharAt

  • StringBuilder, StringBuffer 클래스의 멤버 메서드
  • 인자로 삭제할 index 값을 전달
str = str.deleteCharAt(index)

3. substring

  • 인자로 시작 index와 끝 index를 전달
  • beginIndex < = x < endIndex 만큼을 자른다.
str = str.substring(0, result.length()-1);

참고


isPrime

  • 소수를 반환하는 메서드

가장 효율적인 코드

  • 1인 경우와 짝수인 경우는 미리 제외
  • 짝수 중 2만 소수이므로 2를 예외 처리
  • 짝수인 경우를 제외시켰으므로, for문에서 iterator는 3부터 Math.sqrt(num)까지 2씩 증가
    • num은 Math.sqrt(num)을 기준으로 대칭을 이루고 있기 때문에 Math.sqrt(num)까지만 확인하는 것이 가장 효율적
public boolean isPrime(int num) {
    if (num == 1 || num % 2 == 0) {
      return false;
    }
    if (num == 2) {
      return true;
    }

    for (int i = 3; i <= Math.sqrt(num); i += 2) {
      if (num % i == 0) {
        return false;
      }
    }
    return true;
  }

0개의 댓글