본문 바로가기

TIL(Today I Learned)

TIL-230620

📝오늘 공부한 것

  • Java의 정석 3. 연산자
  • Java의 정석 4. 조건문과 반복문
  • 프로그래머스 문제 풀기

 

알게 된 점

[문자열의 비교]

  •  == vs. equals

두 문자열을 비교할 때는, 비교 연산자 '=='대신 equals( )라는 메서드를 사용해야 한다. 비교연산자는 두 문자열이 완전히 같은 것인지를 비교할 뿐이므로, 문자열의 내용이 같으면 true를, 다르면 false를 반환한다.

내용이 같은데도 '=='로 비교하면 false의 결과가 나올 수 있다. 내용은 같지만 서로 다른 객체라서 그렇다. 그러나 equals( )는 객체가 달라도 내용이 같으면 true를 반환한다. 그래서 문자열을 비교할 때는 항상 equals( )를 사용해야 한다.

    equalsIgnoreCase( )  =>  대소문자 구분 X

 

코드를 작성할 때 비교가 나오면 아무 생각 없이 ==부터 쓰게 된다. 그럴 때마다 인텔리제이에서 빨간 밑줄이 그어지게 되는데 그때 아! 문자열 비교였지.. 하고 그제야 equals로 수정을 한다. 실수하지 말고 문자열은 equals( )로 비교하자!!!

[for문]

  •  초기화

반복문에 사용될 변수를 초기화하는 부분이며 처음에 한 번만 수행된다. 보통 변수 하나로 for문을 제어하지만, 둘 이상의 변수가 필요할 때는 아래와 같이 콤마‘,’를 구분자로 변수를 초기화하면 된다, , 두 변수의 타입은 같아야 한다.

for(int i=1;i<=10;i++){...}  //변수 I의 값을 1로 초기화 한다.
for(int i=1,j=0;i<=10;i++){...}  //int타입의 변수 I와 j를 선언하고 초기화
  • 증감식

증감식도 쉼표‘,’를 이용해 두 문장 이상을 하나로 연결해서 쓸 수 있다.

 

 초기화, 조건식, 증감식 이 세 가지 요소는 필요하지 않으면 생략할 수 있으며, 심지어 모두 생략하는 것도 가능하다.

for( ; ; ){...}  //초기화, 조건식, 증감식 모두 생략, 조건식은 참이 된다.

조건식이 생략된 경우, 참(true)으로 간주되어 무한 반복문이 된다. 대신 블록 {   } 안에 if문을 넣어서 특정 조건을 만족하면 for문을 빠져나오게 해야 한다.

배웠던 개념들도 사용하지 않다 보니 까먹게 되는 것 같다. 무한 반복문을 써야 할 땐 while문을 사용했었는데 다음엔 for문으로 풀어봐야겠다...또, for문안에 변수를 2개 쓸 수 있다는 것도 까먹고 이중 for문으로만 작성하였다. 이 방법으로도 구현해봐야겠다!!!

 

[이름 붙은 반복문]

break문은 근접한 단 하나의 반복문만 벗어날 수 있기 때문에, 여러 개의 반복문이 중첩된 경우에는 break문으로 중첩 반복문을 완전히 벗어날 수 없다. 이때는 중첩 반복문 앞에 이름을 붙이고 break문과 continue문에 이름을 지정해 줌으로써 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.

class Solution {
    public static void main(String[] args) {
        Loop1 : for(int i=2;i<=9;i++){
            for(int j=1;j<=9;j++)
            {if(j==5)
                break Loop1;
                .
                .
                .
                .
                .
                .
                
            }
       }
	}
}
 

시도해 본 것들💦

[문제]

[풀이]

import java.util.*;

class Solution {
    public int[] solution(long n) {
        String str = String.valueOf(n);
        int leng = str.length();
        int[] answer = new int[leng];

        for(int i=leng-1,j=0;i>=0;i--,j++){
            answer[j] = str.charAt(i)-'0';
            System.out.println("answer = " + Arrays.toString(answer));
        }
        return answer;
    }
}

for문 안에서 변수 2개를 이용해서 문제를 풀어보았다. 이중 for문을 쓸때보다 더 효율적이고 가독성이 높은 코드인지를 모르지만 처음 이중 for문을 이용하여 풀었을 때보다 코드가 짧아졌다!

 

느낀 점🤔

java의 정석을 처음 봤을때와는 다르게 안보이던 것들이 보이고 이해를 못하고 넘어갔던 부분들이  점점 이해가 되는것 같다.  역시 모든 것은 기초부터 튼튼히 해야한다는 것을 매~~~~~우 느꼈다. 놓쳤던 개념들이 이렇게나 많았다니....!!

 

 

참고자료: Java의 정석 기초편(남궁성)

'TIL(Today I Learned)' 카테고리의 다른 글

TIL-230623  (0) 2023.06.23
TIL-230621  (0) 2023.06.22
TIL-230617  (0) 2023.06.17
TIL-230617([프로그래머스/자바] 없는 숫자 더하기)  (0) 2023.06.17
TIL-230615  (0) 2023.06.16