멋쟁이v의 개발일지

[JAVA] 조건문과 반복문, 참조 타입 본문

0년차/JAVA

[JAVA] 조건문과 반복문, 참조 타입

멋쟁이v 2023. 5. 5. 19:52
728x90
320x100

[목차]


01. 조건문과 반복문

  • 1) 코드 실행 흐름 제어
    👉🏻
    실행 흐름 : main() 메소드의 시작 중괄호에서 끝 중괄호까지 위부터 아래로 실행되는 흐름

    흐름 제어문 : 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것

    루핑 : 반복문이 실행 완료된 경우 제어문 처음으로 다시 되돌아가 반복 실행되는 것

  • 2) if 문
    💡
    조건식의 결과에 따라 블록 실행 여부가 결정된다.

    ➡️ 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있음

    ➡️ if-else 문 : 조건식이 true이면 if문 블록이 실행되고, false이면 else 블록이 실행

  • 3) switch 문
    💡
    괄호 안의 변수값에 따라 해당 case로 가서 실행문을 실행합니다.

    ➡️ 변수값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행하며 default는 생략이 가능하다.

    ➡️ break는 다음 case를 실행하지 않고 switch 문을 빠져나갈 때 사용

  • 4) for 문
    💡
    실행문을 여러번 반복 실행해주기 때문에 코드를 간결하게 만들어줍니다.

    ➡️ 초기화식이 제일 먼저 실행되고, 조건식을 평가해서 true이면 실행문을 실행시키고, false이면 for 문을 종료하고 블록을 건너뛴다.

    ➡️ true여서 실행문을 모두 실행하면 증감식이 실행된다.

  • 5) while 문
    💡
    조건식이 true일 경우에 계속해서 반복하고, false가 되면 반복을 멈추고 while 문을 종료합니다.

    ➡️ 조건식을 평가하고 결과가 true이면 실행문을 실행한다.

    ➡️ 실행문이 모두 실행되면 조건식으로 돌아가서 조건식을 다시 평가하고 false라면 while문을 종료한다.

  • 6) do-while 문
    💡
    블록 내부를 먼저 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정합니다.

    ➡️ 실행문을 우선 실행하고, 모두 실행되면 조건식을 평가한다.

  • 7) break 문
    💡
    반복문 실행을 중지하거나 조건문을 종료할 때 사용합니다.

  • 8) continue 문
    💡
    반복문인 for, while, do-while 문에서만 사용합니다.

    ➡️ break 문과 달리 반복문을 종료하지 않고 계속 반복을 수행한다.

    ➡️ continue 문 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.

02. 참조 타입

  • 1) 데이터 타입 분류
    👉🏻
    참조 타입

    ➡️ 객체의 번지를 참조하는 타입.

    ➡️ 배열, 열거, 클래스, 인터페이스 타입.

    ➡️ 기본 타입으로 선언된 변수는 값 자체를 저장하지만, 참조 타입으로 선언된 변수는 객체가 생성된 메모리 번지를 저장.

  • 2) 메모리 사용 영역
    👉🏻
    메소드, 힙, 스택 영역

    ➡️ JVM은 운영체제에서 할당받은 메모리 영역을 메소드 영역, 힙 영역, 스택 영역으로 구분해서 사용

    ➡️ 메소드 영역 : 바이트코드 파일을 읽은 내용이 저장되는 영역

    ➡️ 힙 영역 : 객체가 생성되는 영역. 객체의 번지는 메소드 영역과 스택 영역의 상수와 변수에서 참조

    ➡️ 스택 영역 : 메소드를 호출할 때마다 생성되는 프레임이 저장되는 영역

  • 3) 참조 타입 변수의 ==, != 연산
    👉🏻
    ==, != 연산자

    ➡️ ==, != 연산자는 객체의 번지를 비교해 변수의 값이 같은지, 아닌지를 조사

    ➡️ 번지가 같다면 동일한 객체를 참조하는 것이고, 다르다면 다른 객체를 참조하는 것

  • 4) null과 NullPointerException
    👉🏻
    null 값

    ➡️ null(널) 값 : 참조 타입 변수는 아직 번지를 저장하고 있지 않다는 뜻

    ➡️ null도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성

    NullPointerException

    ➡️ 변수가 null인 상태에서 객체의 데이터나 메소드를 사용하려 할 때 발생하는 예외

    ➡️ 참조 변수가 객체를 정확히 참조하도록 번지를 대입해야 해결된다.

  • 5) 문자열(String) 타입
    👉🏻
    String 타입

    ➡️ 문자열은 String 객체로 생성한다.

    문자열 비교

    ➡️ 문자열 리터럴이 동일하다면 String 객체를 공유

    ➡️ new 연산자(객체 생성 연산자)로 직접 String 객체를 생성/대입 가능

    문자열 추출

    ➡️ charAt() 메소드로 문자열에서 매개값으로 주어진 인덱스의 문자를 리턴해 특정 위치의 문자를 얻을 수 있다.

    문자열 길이

    ➡️ 문자열에서 문자의 개수를 얻고 싶다면 length() 메소드를 사용한다.

    문자열 대체

    ➡️ replace() 메소드는 기존 문자열은 그대로 두고, 대체한 새로운 문자열을 리턴

    문자열 잘라내기

    ➡️ 문자열에서 특정 위치의 문자열을 잘라내어 가져오고 싶다면 substring() 메소드를 사용

    문자열 찾기

    ➡️ 문자열에서 특정 문자열의 위치를 찾고자 할 때에는 indexOf() 메소드를 사용

    문자열 분리

    ➡️ 구분자가 있는 여러 개의 문자열을 분리할 때 split() 메소드를 사용

  • 6) 배열(Array) 타입
    👉🏻
    배열

    ➡️ 연속된 공간에 값을 나열시키고, 각 값에 인덱스를 부여해 놓은 자료구조

    ➡️ 인덱스는 대괄호[]와 함께 사용하여 각 항목의 값을 읽거나 저장하는데 사용

    배열 변수 선언

    ➡️ 두 가지 형태로 작성. 첫 번째가 관례적인 표기

    1. 타입[] 변수 / 2. 타입 변수[]

    ➡️ 배열은 힙 영역에 생성되고, 배열 변수는 힙 영역의 배열 주소를 저장

    ➡️ 참조할 배열이 없다면 배열 변수도 null로 초기화할 수 있다.

    값 목록으로 배열 생성

    ➡️ 배열에 저장될 값의 목록이 있다면, 다음과 같이 간단하게 배열을 생성할 수 있다.

    타입[] 변수 = { 값1, 값2, 값3 … };

    ➡️ 배열 변수를 선언한 시점과 값 목록이 대입되는 시점이 다르다면 new 타입[]을 중괄호 앞에 붙여줌. 타입은 배열 변수를 선언할 때 사용한 타입과 동일하게 지정

    new 연산자로 배열 생성

    ➡️ new 연산자로 값의 목록은 없지만 향후 값들을 저장할 목적으로 배열을 미리 생성

    ➡️ new 연산자로 배열을 처음 생성하면 배열 항목은 기본값으로 초기화된다.

    배열 길이

    ➡️ 배열의 길이란 배열에 저장할 수 있는 항목 수

    ➡️ 도트연산자를 사용해서 참조하는 배열의 length 필드를 읽음

    ➡️ 배열 길이는 for 문을 사용해서 전체 배열 항목을 반복할 때 많이 사

  • 7) 다차원 배열
    👉🏻
    다차원 배열

    ➡️ 배열 항목에는 또 다른 배열이 대입된 배열

    값 목록으로 다차원 배열 생성

    ➡️ 값 목록으로 다차원 배열을 생성 시 배열 변수 선언 시 타입 뒤에 대괄호 []를 차원의 수만큼 붙이고, 값 목록도 마찬가지로 차원의 수만큼 중괄호를 중첩

    타입[][] 변수 = { {값1, 값2}, {값3, 값4}, … }

    new 연산자로 다차원 배열 생성

    ➡️ new 연산자로 다차원 배열을 생성하려면 배열 변수 선언 시 타입 뒤에 대괄호 []를 차원의 수만큼 붙이고, new 타입 뒤에도 차원의 수만큼 대괄호 []를 작성

    타입[][] 변수 = new 타입[1차원수][2차원수];

  • 8) 객체를 참조하는 배열
    👉🏻
    배열에서 객체 참조하기

    ➡️ 기본 타입 배열은 각 항목에 값을 직접 저장

    ➡️ 참조 타입(클래스, 인터페이스) 배열은 각 항목에 객체의 번지를 저장

  • 9) 배열 복사
    👉🏻
    배열 복사하기

    ➡️ 배열은 한 번 생성하면 길이를 변경할 수 없음. 더 많은 저장 공간이 필요하다면 더 큰 길이의 배열을 새로 만들고 이전 배열로부터 항목들을 복사해야 한다.

    ➡️ System의 arraycopy() 메소드를 이용해 배열 복사 가능

  • 10) 배열 항목 반복을 위한 향상된 for문
    👉🏻
    배열 및 컬렉션 처리에 용이한 for문

    ➡️ 카운터 변수와 증감식을 사용하지 않고, 항목의 개수만큼 반복한 후 자동으로 for 문을 빠져나감

    ➡️ for 문이 실행되면 ①배열에서 가져올 항목이 있을 경우 ②변수에 항목을 저장, ③실행문을 실행

    ➡️ 다시 반복해서 ①배열에서 가져올 다음 항목이 존재하면 ② → ③ → ①로 진행하고, 가져올 다음 항목이 없으면 for 문을 종료

  • 11) main() 메소드의 String[] 매개변수 용도
    👉🏻
    String[] args 매개변수의 필요성

    ➡️ 자바 프로그램을 실행하기 위해 main() 메소드를 작성하면서 문자열 배열 형태인 String[] args 매개변수가 필요

    ➡️ 프로그램 실행 시 입력값이 부족하면 길이가 0인 String 배열 참조

  • 12) 열거(Enum) 타입
    👉🏻
    한정된 값으로 이루어진 Enum 타입

    ➡️ 요일, 계절처럼 한정된 값을 갖는 타입

    ➡️ 먼저 열거 타입 이름으로 소스 파일(.java)을 생성하고 한정된 값을 코드로 정의

    ➡️ 열거 타입 이름은 첫 문자를 대문자로 하고 캐멀 스카일로 지어주는 것이 관례


tag : #java #자바 #조건문 #반복문 #참조 #타입 #배열 #문자열


Uploaded by N2T

728x90
320x100
Comments