D+23 반복문.continue, 참조형, 기본형

Bku·2024년 1월 26일

학원 일기

목록 보기
22/67
post-thumbnail

반복문

while

do while이 일반 반복문과 다른 점은 조건식이 참이든 거짓이든 최초 한번은 실행된다.

int i = 1;
        int sum12345 = 0;
        do{
            sum += i;
            i++;
        }
        while (i <= 100){
            System.out.println(sum12345);
        }

break

반복문 강제종료 명령문

while의 조건에 true, for의 조건에 ;true;을 넣어주면 된다.

for(;true;){}

while(true){}

이때 특정 조건에 탈출을 시켜주지 않으면 무한 루프에 걸리게 된다. 이때 이 무한 루프를 조건하에 탈출 시키게 하는 것이 break이다.

while (true){
            int num123 = (int)(Math.random()*6) + 1;
            System.out.println(num123);
            if (num123 == 6) {
                break;
            }
        }

결과

6이 나와서 종료 되었다.

continue

반복문과 더불어 사용, continue를 만나면 아래 라인이 실행되지 않고 재반복한다.
1~10까지 3은 출력하지 않고 모두 출력하기를 해보자

for (int i = 1; i <=10 ; i++) {
            if (i == 3) {
                continue;
            }
            System.out.print(i + " ");

        }

결과

3이생략되고 출력된다. 여기서 중요한 점이 continue가 3을 출력하는 코드보다 위에 있어야 한다. 왜냐하면 continue밑의 코드를 생략하기 때문이다.

배열

참조 자료형과 기본 자료형

1) 기본타입 :

  • byte, short, char, int, long, float, double, boolean 타입
  • 스택방에 값이 저장됨

2) 참조타입 :

  • 기본 타입을 제외한 자료형(타입) 배열, 열거형, 객체, String
  • 스택방에 힙방번호(주소)가 저장됨 -> 힙방에 값이 저장됨

배열은 참조값으로 이루어져 있기에, 참조 자료형과 기본 자료형의 개념을 잘 알아야한다.

 String str1 = "신민철";
        String str2 = "신민철";

        if (str2.equals(str1) == true) {
            System.out.println("같음");
        }else {
            System.out.println("다름");
        }

여기서 String은 비교 연산자를 그냥 사용하지 않고 항상 equals함수를 사용해왔다. 왜그럴까?

String은 참조형으로 값이 참조값에 들어가게 된다. String은 값이 무한히 증가할 수 있어 몇 byte가 될 지 모른다. 그래서 스택 영역에 저장을 할 수 없고 힙 영역에 집어 넣는다. 그리고 스택 영역에 값을 저장하는 영역에 힙영역의 주소를 넣어서 힙영역을 가리키게 된다. 이것을 참조값이라 한다.

"==" 스택 영역의 값을 비교할때 사용하고 그래서 참조 자료형에 이것을 사용하면 참조값을 비교하게 된다. 그래서 오류가 발생하게 됨.

참고로 String을 출력했을때 참조값이 아니고 우리가 입력한 값이 나오는 이유는 String은 워낙 우리가 많이 사용하기 때문에 자바에서 참조값이 아닌 우리가 입력한 값이 나오도록 조취를 취해놓아서 그렇다.

배열

변수랑 다르게 여러가지 값을 저장이 가능하다.

기본적으로 형태

int[] arr = {1,2,3,4,5,6,7}

위와 같다.

배열의 사용법은 arr[인덱스 번호]과 같은 방법으로 사용하면된다.

느낀점

배열도 배우게 되어 코드가 길어지게 되는데 이때 어디서 부터 잘못된 것이 있는지를 찾아보는 방법이 디버깅이다. 이 방법을 자세하게 알아봐야할거같다.

또한 참조값에 대한것도 좀더 자세하게 알게 된듯

profile
기억보단 기록

0개의 댓글