Java 입문 - 변수/연산/제어문

3 분 소요

연산자

  1. 산술연산자

    • +, -, *, /, %
      • 중복연산자
        • 숫자+숫자 → 덧셈연산자
        • 문자열+문자열, 숫자 + 문자열 → 연결(concat) 연산자
          • 숫자 + 숫자 + 문자 형태로 할 경우 덧셈 연산 후에 문자연결이 이루어지는 점 주의!
    • / 나누기 연산자
      • 파이썬과 작동 방식이 다르니 주의!
  2. 비교연산자

    • 값의 크기를 비교, 제어문 조건식
    • ==, !=, <, >, <=, >=
  3. 논리연산자

    • 조건식을 비교, 조건식의 결과는 논리형 (boolean)
    • & (and) : 제시된 조건이 모두 True ⇒ True
    • (or) : 제시된 조건중에서 하나라도 True ⇒ True
  4. 단축논리연산자

    • &&
    •  
    • 제시된 조건식1을 수행한 결과에 따라서 조건식 2의 수행여부를 결정하는 논리연산
    • 예) (5 == 4) && (4 != 3) [False & True]
      • 앞의 (5 == 4) 가 False 이기 때문에 뒤의 (4 != 3)은 연산하지 않고 바로 False 반환
      • 수행속도가 그냥 &을 쓰는 것보다 빨라진다
  5. 증감연산자

    • ++, –
    • +1, -1
    • 전치증감연산자: ++변수명
    • 후치증감연산자: 변수명++
    • 예) int no = 5
      • System.out.println(++no); // 6
      • System.out.println(no–); // 6
      • System.out.println(no); // 5
  6. 할당(대입) 연산자

    • 변수명 = 값;
  7. 단축 대입연산자

    • +=, -=, *=, /=, %=
    • 예) no = no + 3; ⇒ no+=3;
  8. 삼황연산자

    • 조건에 따라 값을 할당

    • 변수명 = (조건식) ? 참인경우 할당값 : 거짓인경우 할당값;

    • 아래 코드와 동일

      if (조건식) {
      		변수명 = 참인경우할당값;
      } else {
      		변수명 = 거짓인경우할당값;
      }
      

할당 연산자 (=)

변수명 = 값;

  • 우측에 올 수 있는 종류: 값, 변수명, 수식, 결과값을 반환하는 메서드호출문(), new 클래스이름();

  • 할당 처리 순서

    • ①[타입] 변수명 = ②값;
    • ①타입을 먼저 지정하여 메모리 할당 후, ②수행 결과의 타입이 같을 경우 ③변수에 값을 저장
  • 기억공간의 타입과 할당하는 값의 타입이 같으면 자동할당

  • 기억공간의 타입이 할당하는 값의 타입보다 크면 자동할당

  • 기억공간의 타입이 할당하는 값의 타입이 다르거나, 할당하는 값의 타입이 더 크면 오류발생

    • 명시적 형변환을 통해서 값을 할당 가능

      ⇒ 하지만 기억공간의 크기가 늘어나는 것이 아니기 때문에 경우에 따라서 값의 손실이 발생할 수 있다.

형변환 (type casting)

  • 기본형, 객체형

  • 형식: [타입] 변수명 = (타입) 값;

    • ① 값에 타입을 먼저 지정하여 바꿔준 후 ② 할당 처리 진행
  • 자바 기본형 자동 타입캐스팅

    byte(8bit) => short(16bit)/char(16bit) => int(32bit) => long(64bit) => float(32bit) => double(64bit)

    • float이 비트수는 적지만 long타입보다 표현할 수있는 범위가 더 큼
  • 형변환 불가 기본형 : boolean (값의 크기를 갖는 것이 아니라 참/거짓)

제어문

조건문

  1. if( ) : 조건식 범위 사용 가능, 순차적으로 조건식 비교

    if(조건식) {
    		// true 수행
    }
       
    if(조건식) {
    		// true 수행
    } else {
    		// false 수행
    }
       
    if(조건식1) {
    		// 조건식1 true 수행
    } else if(조건식2) {
    		// 조건식2 true 수행
    } else if(조건식N) {
    		// 조건식N true 수행
    }
       
    if(조건식1) {
    		// 조건식1 true 수행
    } else if(조건식2) {
    		// 조건식2 true 수행
    } else if(조건식N) {
    		// 조건식N true 수행
    } else {
    		// 조건식에 부합되지 않는 경우 기본적으로 수행
    }
    
  2. switch( )

    • 다중 조건식 비교시에 효율적
    • 해당 case(조건)으로 바로 이동해서, break 구문을 만날 때까지 위에서 아래로 순차적으로 수행
    • 비교 조건식의 결과인 값을 가지고 비교 (범위로 비교 X)
    • 비교 시간이 if 구문에 비해서 빠르다
    • expression 타입 : int(byte, short, char: 자동형변환 통해 가능), String (JDK 1.7 부터)
    • break; 분기문: break 해당 switch 구문을 빠져나옴, or(또는 연산자) 개념으로 활용
    switch(expression) {
    case "값1":
    		// 수행문;
    		[break;]
    case "값2":
    		// 수행문;
    		[break;]
    case X:
    		// 수행문;
    		[break;]
    [default:]
    		// 수행문;
    		[break;]  // default는 반드시 가장 아래에 있어야 하는 것은 아니기 때문에 필요에 따라 break; 를 사용할 수 있다.
    }	
    

반복문

  1. for( ) { }

    • JDK 1.5 : 배열, Collection, items (저장된 갯수만큼 반복) 사용가능 (추후 학습 예정)

    • JDK 1.4

      for (초기값; 조건식; 증감값) {
      		// 반복수행문....
      }
      
      • 초기값: 0 ~ N, [타입] 변수명 = 초기값, 같은 타입인 경우에만 가능

      • 조건식: 0, 1. 조건식이 없는 경우 ⇒ 무한반복

      • 증감값: 0 ~ N

      • 변수선언: 한 줄에 하나의 변수를 선언하는 것을 권장 (표준)

        int no1 = 5;
        int no2 = 10;
        
  2. do ~ while( ) { }

    • 수행문을 우선 1번 수행하고 난 뒤에 조건식을 비교해서 반복 여부 결정
    • 조건식 맨 뒤에 종료를 위한 ;(세미콜론)을 반드시 표기해야 함
    • 반복문 수행전에 초기값 선언
    • 반복문에서 증감값 처리해주는 로직 수행
    do {
    		// 반복 수행문
    } while(조건식);
    
  3. while( ) { }

    • 조건식을 먼저 비교한 후에 반복 여부를 결정
    • 조건식에 부합하지 않으면 한번도 수행되지 않음
    • 반복문 수행전에 초기값 선언
    • 반복문에서 증감값 처리해주는 로직 수행
    while(조건식) {
    		// 반복 수행문
    }
    

변수의 종류

  • 변수의 범위 (scope) : Brace 구문 안 { . . . }
  • 멤버변수
    • 선언위치: class 내부 (멤버)
  • 지역변수 / 매개변수
    • 선언위치: 메서드 내부, 생성자 내부, 제어문 내부
    • 변수의 범위: 메서드 내부, 생성자 내부, 제어문 내부에서만 사용 가능

댓글남기기