It's going to be one day 🍀

안녕하세요! 매일 매일 공부하려고 노력하는 백엔드 개발자 지망생의 공부 흔적입니다.

Back-End/Java # 교육

[Java 교육] 연산/조건문/배열

2jin2 2024. 1. 29. 16:10

연산자

기본 자료형을 더하거나 빼는 등의 계산을 하기 위해서 사용함.

 

단항 연산자 : 피연산자가 하나뿐인 연산자

  • 부호 연산자 (+,  -)
  • 증감 연산자 (++, --)

피연산자는 값을 한번 더 읽어왔을 때 적용됨.

  • 논리 부정 연산자(!)
    • true → false, false → true
  • 비트 반전 연산자(~)

이항 연산자 : 피연산자가 두 개인 연산자

  • 산술 연산자 : 일반 사칙연산
    • 오버플로우 : 연산의 결과가 int 타입에 저장할 수 있는 범위를 초과했을 때
    • Infinity : 0으로 나눌 때 infinity 반환 or 양/음의 무한대로 발산
    • NaN : 숫자가 아닌 것을 연산하면 NaN
  • 비교 연산자 : 피연산자들을 비교하여 boolean 타입인 true, false를 산출.
  • 논리 연산자 : 조건식을 연결할 때 사용하는 연산자
    • AND (&&)
    • OR (||)
    • XOR (하나는 true 다른 하나는 false → true)
    • NOT (논리 부정)
  • 비트 이동 연산자 (Shift 연산자)

정수 데이터의 비트를 좌측 또는 우측으로 밀어서 이동시키는 연산 수행

  • ex) 정수 8을 왼쪽으로 2비트 이동시키면
int num1 = 00001000
num1 << 2;

 

→ 결과는 00100000

삼항 연산자 : 세 개의 피연산자가 있는 연산자

public class Example {
	public static void main(String[] args) {
		int score = 95;
		char grade = (score > 90) ? 'A' : 'B';
		System.out.println("당신의 학점은 : " + grade);
	}
}

(score > 90) 을 연산하면 true 이고, true일 경우에는 첫번째 값인 ‘A’ 값을 반환함.


조건문

if / else if / else : 조건

switch / case : if문과 비슷하지만 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨.

public class MonthSwitchCaseExample {
    public static void main(String[] args) {
        int month = 3;
        String monthString;
        switch (month) {
            case 1:
                monthString = "January";
                break;
            case 2:
                monthString = "February";
                break;
            case 3:
                monthString = "March";
                break;
            default:
                monthString = "Invalid month";   // 유효하지 않은 범위의 값을 입력받았을 때 예외처리
                break;
        }
        System.out.println(monthString);
    }
}

→ 비교연산자, boolean 값 비교는 불가능. if/else로 써야함.


배열

자료형의 집합. []

배열의 크기 설정하기

// 배열 만들기
String[] weeks = {"월요일","화요일","수요일","목요일","금요일"};
// 초기값 없이 배열 변수 만들기
String[] weeks = new String[7];

→ 이땐 반드시 배열 크기를 할당해줘야함.

 

배열의 길이 구하기

arr.length를 사용하면 됨!

public class Hello {
    public static void main(String[] args) {
        String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
        for (int i = 0; i < weeks.length; i++) {
            System.out.print(weeks[i]);
        }
    }
}

→ 월화수목금토일

weeks 배열에는 7개의 요소가 있기 때문에 weeks.length = 7

 

배열 관련 에러

  • 현재 배열 크기보다 그 이상의 공간에 접근을 한다면 해당 에러 발생
  • ArrayIndexOutOfBoundsException

문자 → 숫자

String → int/Integer

  • Integer.parseInt() : 문자열을 int 타입으로 변경
  • Integer.valueOf() : 문자열로 Integer 객체 생성

숫자 → 문자

  • Integer.toString()
  • String.valueOf()
  • 변수 + “” : Casting 방식

Daily Quiz

1. 아래 2개의 변수 number1, number2의 사칙 연산 결과(result1 ~ result4)를 정수로 출력하세요. (사칙연산: +, -, *, /) 주석처리 된 곳에 코드를 채우면 됩니다.

public class Question {
    public static void main(String args[]) {
        int number1 = 10;
        double number2 = 2.0;
        
        // 사칙연산 코드 추가
				int result1 = number1 + (int) number2;
        int result2 = number1 - (int) number2;
        int result3 = number1 * (int) number2;
        int result4 = number1 / (int) number2;
        
        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
        System.out.println(result4);
    }
}

2. 아래 코드의 출력값은 무엇일까요? 코드를 돌려보기 전에 예측해보세요.

2-1.

public class Question {
    public static void main(String args[]) {
        // 아래 코드의 출력값은 무엇일까요?
        System.out.println(10 / 2 + 3 * 4);
    }
}

→ 17

2-2.

public class Question {
    public static void main(String args[]) {
        // 아래 코드의 출력값은 무엇일까요?
        int number = 10;
        
        int result1 = number + 1;
        int result2 = number++;
        int result3 = number;
        int result4 = --number;
        
        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
        System.out.println(result4);
    }
}

→ 위에서부터 순서대로 11, 10, 11, 10

2-3.

public class Question {
    public static void main(String args[]) {
        // 아래 코드의 출력값은 무엇일까요?
        int num1 = 5;
        int num2 = 7;

        System.out.println((num1 > 5) && (num2 > 5));
        System.out.println((num1 > 5) || (num2 > 5));
        System.out.println(!((num1 > 5) && (num2 > 5)));
    }
}

→ false, true, true

3. 다음의 내용을 연산식(조건식)으로 표현해보세요.

  • i는 2의 배수 또는 3의 배수이다.
if ((i % 2 == 0) && (i % 3 == 0)) {
				System.out.println("i 는 2의 배수 또는 3의 배수이다.");
}

4. 아래 코드의 실행 결과가 true가 되도록 수정해보세요.

public class Question {
    public static void main(String args[]) {
        // 아래 코드의 실행 결과가 true가 되도록 수정해보세요.
        String str1 = new String("Hello world!");
        String str2 = new String("Hello world!");
        
        System.out.println(str1.equals(str2));
    }
}

5. 프로그래머스 문제

기초 트레이닝 > ‘연산’, ‘조건문’ 관련 문제

https://github.com/drinkgalaxy/coding-practice/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/0