[코드스테이츠 백엔드 44기 SEB BE] 6일차

오태호·2023년 2월 20일
0

코드스테이츠

목록 보기
6/22
post-thumbnail

연산자

  • 하나의 값 또는 여러 개의 값을 피연산자로 하여 새로운 값을 만들어내는 기호

산술 연산자

  • 사칙연산에 사용되는 연산자인 +, -, *, /와 나머지 연산자 % 를 포함
연산자기능예시결과값
+ (덧셈 연산자)두 항의 값을 더한 값을 반환7 + 310
- (뺄셈 연산자)좌항의 값에서 우항의 값을 뺀 값을 반환7 - 34
* (곱셈 연산자)두 항의 값을 곱한 값을 반환7 * 321
/ (나눗셈 연산자)좌항을 우항으로 나눈 값을 반환7 / 32
% (나머지 연산자 또는 모듈로 연산자)좌항의 값을 우항의 값으로 나눈 나머지를 반환7 % 31
  • 나눗셈 연산자 및 나머지 연산자를 사용할 때에는 우항에 0이 위치할 수 없음
    • 어떤 수를 0으로 나눌 수 없음
    • 0으로 나누면 DivideByZeroException 발생
  • 나눗셈 연산자를 사용할 때, 좌항, 우항 모두 int형이라면 그 결과도 int형이고 소수점 이하의 값은 버려짐
  • 좌항이나 우항 중 하나라도 실수 타입의 값이 존재한다면 실수 타입으로 자동으로 형변환되어 계산됨 -> 소수점이 버려지지 않고 온전한 값이 결과값으로 반환됨

증감 연산자

  • 변수의 값을 1씩 증가 혹은 감소시키는 연산자
  • 연산 순서가 증감 연산자의 위치에 따라 달라질 수 있음
    • 증감 연산자가 피연산자보다 앞에 있는 경우 -> 전위형 증감 연산자
      • 증감 연산을 먼저 수행한 후, 그 결과값을 적용시킴
    • 증감 연산자가 피연산자보다 뒤에 있는 경우 -> 후위형 증감 연산자
      • 기존의 값을 먼저 적용시키고 그 다음에 증감 연산 수행
int num = 1;
++num; // 전위형 증감 연산자
num++; // 후위형 증감 연산자

복합 대입 연산자

  • 사칙 연산자와 대입 연산자를 함께 조합하여 복합 대입 연산자로 활용
    • 증가 혹은 감소시키고자 하는 값이 1보다 크다면 증감 연산자를 사용할 수 없음 => 복합 대입 연산자 사용
num += 2;

비교 연산자

  • boolean 타입으로 평가될 수 있는 조건식에 사용
  • 대소 비교 연산자(>, <, >=, <=)와 등가 비교 연산자(==, !=)로 분류됨

대소 비교 연산자

  • boolean을 제외한 나머지 기본 타입에 모두 사용 가능
  • 이항 비교만 가능
    • Ex. num이 1보다 크거나 같고 10보다 작다를 표현할 때, 1 <= num < 10이 아닌 1 <= num && num < 10과 같이 논리 연산자를 이용해야 함

등가 비교 연산자

  • 모든 타입에 사용할 수 있는 연산자
  • 두 항의 값이 동등한지의 여부를 판단할 때 사용
    • 기본 타입과 참조 타입 간에는 등가 비교 연산자 사용 불가
  • 값이 동등하면 true, 그렇지 않으면 false를 반환

논리 연산자

  • AND 연산자 &&, OR 연산자 ||, NOT 연산자 !를 포함
  • boolean 타입을 반환
  • 논리 연산자의 연산 결과
    • AND 연산자(&&) : 피연산자 둘이 모두 true일 때만 true를 반환, 나머지는 false를 반환
    • OR 연산자(||) : 피연산자 둘 중 하나라도 true면 true를 반환, 둘 다 false라면 false를 반환
    • Not 연산자(!) : true와 false를 반대로 바꾸는 연산자
b1b2b1 && b2b1 || b2!b1
falsefalsefalsefalsetrue
falsetruefalsetruetrue
truefalsefalsetruefalse
truetruetruetruefalse

연산자 우선순위

우선순위연산자내용
1(), []괄호 / 대괄호
2!, ~, ++, --부정 / 증감 연산자
3*, /, %곱셈 / 나눗셈 연산자
4<, <=, >, >=대소 비교 연산자
5&&AND 연산자
6||OR 연산자
7?:조건 연산자
8=, +=, -=, /=, %=대입 / 할당 연산자

콘솔 입출력(I/O)

  • 콘솔에 값을 출력하기 위해서는 System.out.print(), System.out.println(), System.out.printf() 메서드를 활용

콘솔 출력

System.out.print()

  • 소괄호 안의 내용을 콘솔에 출력만 하고 줄바꿈을 하지 않음

System.out.println()

  • 소괄호 안의 내용을 콘솔에 출력하고 줄바꿈을 함
    • ln : line을 의미

System.out.printf()

  • 지시자(specifier, 형식 지정자)를 이용해 변수의 값을 여러 형식으로 출력
    • 지시자
      • 값을 어떤 형식으로 출력할 것인지 지정하기 위해 사용
      • 실제로 출력되는 값이 아닌 값을 변환해 자신의 위치에 출력해주는 기능
    • f : formatted의 약자
지시자출력 포멧
%bboolean
%d10진수
%o8진수
%x, %X16진수
%c문자
%s문자열
%n줄바꿈

콘솔 입력

  • 데이터를 입력받는 코드
import java.util.Scanner; // Scanner 클래스를 가져옴

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Scanner 클래스의 인스턴스 생성
        String input = scanner.nextLine(); // 입력한 내용이 String으로 input에 저장됨

        System.out.println(input); // 입력한 내용 출력
    }
}
  1. import java.util.Scanner;

    • Scanner : 데이터를 입력받는 기능을 구현한 프로그램
      • java.util 위치에 저장되어 있음
      • Scanner를 사용할 때에는 java.util에 있는 Scanner를 불러와야 함
  2. Scanner scanner = new Scanner(System.in);

    • Scanner 클래스의 데이터 입력 기능은 Scanner 클래스 자체가 아닌 Scanner 클래스를 통해 만든 객체에 존재
    • 데이터 입력 기능을 사용하려면 Scanner 클래스를 통해 객체를 만들어야 함
    • new
      • 클래스를 통해 객체를 만들어낼 때 사용하는 연산자
      • 인스턴스 : 그 결과물로 만들어진 객체
      • 클래스에 new 연산자를 적용하여 인스턴스를 만든다 -> '클래스를 인스턴스화한다'라고 표현함
  3. String input = scanner.nextLine();

    • Scanner 클래스를 인스턴스화한 인스턴스에는 nextLine() 메서드 존재
      • 콘솔을 통해 문자열 데이터를 입력받는 기능 수행
    • nextInt()
      • 정수형을 입력받는 메서드
    • nextFloat()
      • 실수형을 입력받는 메서드

제어문

  • 제어문
    • 조건문, 반복문을 통틀어 제어문이라고 함
    • 조건문
      • if문, switch문
    • 반복문
      • for문, while문, do while문
  • 일반적인 코드의 흐름은 위에서 아래를 향함
  • 제어문을 사용하면 코드의 흐름을 개발자가 원하는 방향으로 변경할 수 있음

조건문

if문

if(조건식) {
    // 조건식이 참일 때 실행되는 코드
}
  • if문의 소괄호 안에 boolean 값으로 평가될 수 있는 조건식을 넣음
  • 중괄호 안에 실행 블록에는 조건식이 참일 때 실행되는 코드를 적음

if...else문

  • 조건식에 따라 실행 블록을 선택
    • if문의 조건식이 true라면 해당 블록이 실행되고 조건식이 false라면 다음으로 넘어가 else if문의 조건식 검사
    • else if문의 모든 조건식도 false라면 else 블록이 실행됨
if(조건식1) {
	//조건식1이 참이라면, 실행되는 블록		
} 
else if (조건식2) {
	//조건식1이 참이 아니고 조건식2가 참일 때, 실행되는 블록
} 
else {
	//조건식1과 2가 모두 참이 아닐 때, 실행되는 블록
}

switch문

  • 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨
  • 변수의 값에 따라 실행문이 결정되므로 경우의 수가 많아질수록 if문보다 코드가 간결해질 수 있음
switch(변수) {
    case1:
        // 변수의 값이 값1일 때 실행될 코드 
        break; // 다음 case를 실행하지 않고 switch문 탈출
    case2:
        // 변수의 값이 값1이 아니고 값2일 때 실행될 코드
        break;
    case3:
        // 변수의 값이 값1, 값2가 아니고 값3일 때 실행될 코드
        break;
    default:
        // 변수의 값이 위의 case문의 모든 값들과 다르다면 실행될 코드
        break;
}
  • 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문 실행
  • 괄호 안의 값과 동일한 값을 갖는 case가 없다면 default로 가서 실행문을 실행
    • default는 생략할 수 있음
  • fall through
    • break문을 작성하지 않아 switch문을 탈출하지 않고 모든 case문을 실행

향상된 switch문

switch(변수) {
    case1 -> // 변수의 값이 값1일 때 실행될 코드
    case2,3 -> // 변수의 값이 값1이 아니고 값2 또는 값3일 때 실행될 코드
}
  • 기존 switch문과의 차이점
    1. 여러 조건에 따라 ','로 구분하여 한 번에 처리할 수 있게 됨
    2. : 대신 ->를 사용하고 break문이 생략됨
      • -> 람다식과 유사하여 람다 스타일 구문이라고 함
    3. ->를 사용했을 때, 실행문이 2개 이상이거나 반환값이 존재한다면 중괄호 블록( { } )을 사용
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글