회고록 블로그

[공부 필기] Java 기본 공부하기 (5) 본문

2. 프로그래밍 언어 공부/Java

[공부 필기] Java 기본 공부하기 (5)

김간장 2021. 9. 5. 21:46

공부 중인 강의 : 윤성우 선생님, 윤성우의 열혈 Java 프로그래밍 강의, https://cafe.naver.com/cstudyjava

 

윤성우의 프로그래밍 스터디그룹 [C/... : 네이버 카페

윤성우의 스터디 공간입니다. C와 JAVA를 공부하시는 분들은 모두 들어오세요. ^^

cafe.naver.com

 


1. 조건문

   ㄱ. if문에 속한 문장이 하나일 경우 중괄호 생략 가능

         (일반적으로 불필요한 코드를 사용하지 않기 위해 문장이 하나일 땐 중괄호를 굳이 붙여서 사용하지 않는다고 하는데

          개발자마다 의견이 다른 것 같음)

   ㄴ. if문 뿐만 아니라 if ~ else문이 있고, if ~ else if ~ else 문 등이 있음

   ㄷ. 아래와 같은 조건 연산자(=삼항 연산자)도 있음

         → 물음표(?)와 콜론(:)이 함께 쓰이면 이를 삼항 연산자로 인식함

조건 ? 수1 : 수2

         → '조건'에는 true/false가 반환되는 표현식이 와야 하며,

               '수1'에는 true일 때 반환값, '수2'에는 false일 때 반환값이 와야함

// 예시: num1과 num2 중 큰 값을 result 변수에 저장하기
int num1 = 10;
int num2 = 9;
int result;

result = (num1 > num2) ? num1 : num2;
// num1의 값이 num2의 값보다 크므로 result 변수에는 num1의 값이 저장됨

   ㄹ. swithc문  

         → switch문에서 'case'는 들여쓰기가 되지 않는데 레이블(label)이라는 상징적인 의미를 위해서 들여쓰기를 하지 않음

              (책 1권이 있고 포스트잇 플래그 같은 스티커로 책의 색인을 만든다고 가정하자

               포스트잇 플래그를 책 안쪽에 붙이지 않는 것과 같은 개념으로 생각하면 된다)

         → switch문은 break 키워드가 없으면 찾고자 하는 값을 찾은 후에도 계속 아래 문장을 실행시켜버림

case 'b'를 처리한 후에 의도하지 않았던 case 'c'와 default까지 실행되어버림

         → 필요한 부분만 실행시키고 switch문을 빠져나오려면 break문을 사용해야함

              (default는 switch문에서 마지막 줄에 있기 때문에 break문을 넣지 않았음)

         → 또한 2개 이상의 특정한 case가 동일한 결과를 반환 해야할 때, 아래와 같이 사용하기도 함

2. 반복문

   ㄱ. while, do~while, for문

         → while과 do~while의 큰 차이는 반드시 1회 실행하는가/아닌가

              (while은 처음에 조건부터 체크하기 때문에 조건이 맞지 않으면 실행되지 않을 수 있음

               do~while은 처음 한번은 꼭 실행하고, 그 다음에 조건문을 체크함)

// 3단 구구단 출력
// while문
int dan = 3;
int i = 1;
while(i != 10) {
	System.out.println("3 x "+i+" = "+(dan*i));
}
// 3단 구구단 출력
// do~while문
int i = 1;
do {
System.out.println("3 x "+i+" = "+(dan*i));
i++;
} while(i != 10);

   ㄴ. for문 사용 예시

         → 역시나 문장이 하나라면 중괄호 생략가능

         → for문은 초기식 먼저 실행하고 ▶ 조건식을 체크 ▶ 조건이 맞으면 실행, 맞지 않으면 for문 점프

         → 조건이 맞으면 for문 안의 코드를 실행하고 ▶ 증감식을 실행함 ▶ 다시 조건식 체크 ▶ ...(반복)... ▶ 조건이 맞지 않을때까지

// 3단 중 짝수만 출력하기
for(int i=2; i<10; i=i+2) {
	System.out.println("3 x "+i+" = "+(dan*i));
}

 

3. break와 continue

   ㄱ. break문 : switch문(if문 아님)이나 반복문(while, for 등)에서 사용함

          → if문에서는 break를 사용할 수 없음 (if문에서 사용하면 아래와 같이 에러가 발생함)

          → 따라서, 아래와 같이 반복문과 if문으로 구성되어 있을 때, break를 만나면 반복문을 빠져나옴

while (조건식) {
	if(조건) {
    	...
        break; // while문에서 탈출함 (if문에서 탈출하는게 아님)
        ...
    }
}

   ㄴ. continue문 : 반복문에서 사용함

          → continue를 만나면 다시 앞으로 이동해버림. 이때 continue 뒤에 있는 코드는 실행되지 않음.

          → contine문 사용 예시

               (if문으로 이동하는게 아니라 for문의 증감식으로 이동함)

               (while문이라면 while문의 조건식으로 이동했을것임)

 

4. 메소드

   ㄱ. 중괄호 안의 문장은 '순차적'으로 실행됨

   ㄴ. 자바는 main 메소드부터 프로그램이 시작됨(즉, main 메소드가 반드시 있어야 함)

   ㄷ. 메소드 정의 및 호출 예시

public static void main(String[] args) {
	int num = 3;
	int count = 3;
	
	int result;
	result = addNum(num, count); // addNum 메소드 호출 방법, 인자는 num과 count
	
	printResult(); // printResult 메소드 호출 방법, 인자는 없음
}
/* addNum 메소드 정의 방법
반환값 : int
메소드명 : addNum
매개변수 : int n, int c
*/
public static int addNum(int n, int c) {
	return (c*n);
}
/* printResult 메소드 정의 방법
반환값 : void
메소드명 : printResult
매개변수 : int r
*/
public static void printResult() {
	System.out.println("계산이 완료되었습니다.");
}

   ㄹ. 참고로 아래와 같은 경우 형변환 관련 에러가 발생하기 때문에 강제 형변환 등을 해줘야함

 

   ㅁ. return은 '메소드의 중간'에 올 수도 있음

         → 메소드 중간에서 원하는 값을 찾았고 메소드를 종료하고 싶다면 'return'을 사용하면 됨

         → 즉, 'return'은 값을 반환해주기도 하고 메소드를 종료하는 역할을 하기도 함

         → return (n1*n2); 와 같이 반환값을 줄수도 있고 return;만 쓸 수도 있음

 

5. 변수의 scope

   ㄱ. 지역변수의 scope

          → if문이나 for문의 중괄호 안에서 선언된 변수는 지역변수임

               (해당 중괄호 안에서만 사용 가능하며 중괄호 밖으로 나가면 소멸됨)

          → 메소드 중괄호 안에서 선언한 변수는 지역변수임 (매개변수 또한 지역변수로 볼 수 있음)

          → main 메소드 안에서 임의의 지역을 만들고 그 곳을 중괄호로 묶으면 해당 중괄호 안에서 선언한 변수는 지역변수가 됨

               (#예시1 참고 / 잘 사용하지는 않지만 알아두면 도움이 됨)

#예시1

   ㄴ. 하나의 메소드 안에서 중괄호에 의지하여 동일한 변수명을 선언하는 습관은 아주 좋지 못함 (*부가설명1 참고)

   ㄷ. 

 

 

 

*부가설명1

※ 상황1. main 메소드의 지역변수로 num1 선언 + if문 안에서 지역변수 num1 선언

      → Java에서는 에러가 발생함

      → 이를 허용해주는 프로그래밍 언어가 있긴 하지만,

           아래와 같이 하나의 메소드 안에 동일한 변수명을 선언하는 것은 별로 좋지 못한 습관

※ 상황2. if문 안에 num1 변수 선언 + for문 안에서 num1 변수 선언

      → Java에서는 에러 발생하지 않음

      → 이러한 문법을 허용하느냐, 허용하지않느냐와 별개로 이렇게 중복되는 변수명을 사용하는 것은 좋지 못한  습관임

※ 상황3. main 메소드의 지역변수 num1 선언 + 다른 메소드(print 메소드)에서 num1 변수 선언

      → Java에서는 에러 발생하지 않음

      → 이러한 문법을 허용하느냐, 허용하지않느냐와 별개로 이렇게 중복되는 변수명을 사용하는 것은 좋지 못한  습관임

Comments