코드 스테이츠

코드 스테이츠 4/18 - Java 기초 2

한휘용 2023. 4. 18. 18:50
728x90
코드 스테이츠 6

연산자

 

산술 연산자

산술 연산자는 사칙연산에 사용되는 연산자(+, -, *, /)와 나머지 연산자(%)를 포함한다.

+ (덧셈 연산자) 두 항의 값을 더한 값을 반환합니다. 7 + 3 10
- (뺄셈 연산자) 좌항의 값에서 우항의 값을 뺀 값을 반환합니다. 7 - 3 4
* (곱셈 연산자) 두 항의 값을 곱한 값을 반환합니다. 7 * 3 21
/ (나눗셈 연산자) 좌항을 우항으로 나눈 값을 반환합니다. 7 / 3 2
% (나머지 연산자) 좌항의 값을 우항의 값으로 나눈 나머지를 반환합니다. 7 % 3 1

적용 예시는 아래와 같다.

int num1 = 1;
int num2 = num1 + 2; // num2 -> 3
int num3 = num2 - 1; // num3 -> 2
int num4 = num3 * 3; // num4 -> 9
int num5 = num4 / 2; // num5 -> 4
int num6 = num5 % 3; // num6 -> 1

 

증감 연산자

변수의 값을 1씩 증가시키거나 감소시키는 연산자를 증감 연산자라고 한다.

주의해야 할 점은 증감 연산자의 연산 순서가 증감 연산자의 위치에 따라 달라질 수 있다는 점이다.

증감 연산자가 피연산자보다 앞에 있으면 전위형 증감 연산자, 뒤에 있으면 후위형 증감 연산자라고 한다.

 

  • 전위형 증감 연산자 : 증감 연산을 먼 수행한 후, 그 결과값을 적용합니다.
  • 후위형 증감 연산자 : 기존의 값을 먼저 적용하고 그다음에 증감 연산을 수행합니다.

 

int num1 = 1;
int prefix = ++num1; // 전위형 증감 연산자 
//num1의 값은 2, prefix의 값도 2

int num2 = 1;
int postfix = num2++; // 후위형 증감 연산자
//num1의 값은 2, postfix의 값은 1

 

비교 연산자

비교 연산자는 boolean 타입으로 평가될 수 있는 조건식에 사용되며, 크게 대소 비교(>, <, <=, >=) 연산자와 등가 비교(==, !=) 연산자로 분류된다.

 

대소 비교 연산자

대소 비교 연산자는 boolean을 제외한 나머지 기본 타입에 모두 사용할 수 있다.

5 > 3 true
5 <= 5 true
3 > 2 true
2 >= 3 false

 

등가 비교 연산자

모든 타입에 사용할 수 있는 연산자로, 두 항의 값이 동등한 지의 여부를 판단할 때 사용한다

5 == 3 false
5 == 5 true
3 != 2 true
3 != 3 false

 

논리 연산자

논리 연산자는 AND 연산자 &&, OR 연산자 ||, NOT 연산자 !를 포함하며, 공통으로 boolean 타입을 반환한다.

 

 

  • AND (&&): 피연산자 두 개가 모두 true일 때 true를 반환, 피연산자 두 개 중 하나라도 true가 아니면 false를 반환
  • OR (||): 피연산자 두 개 중 단 하나라도 true면 true를 반환, 피연산자가 모두 false인 경우에만 false를 반환
X Y X && Y (AND) X || Y (OR)
false false false false
false true false true
true false false true
true true true true

 

 

NOT 연산자

NOT 연산자(!)는 truefalse를 반대로 바꾸는 연산자입니다.

// 아래의 비교 연산 결과는 모두 true입니다. 
!true == false 
!false == true
!!true == true

 

연산자 우선 순위

우선순위연산자내용

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

 

 

콘솔 입출력(I/O)

 

콘솔 출력

 

출력하기 : System.out.print()

System.out.print() 메서드는 소괄호 안의 내용을 단순히 출력하기만 하고, 줄 바꿈을 하지 않습니다.

 

 

출력하고 줄 바꾸기 : System.out.println()

System.out.println() 메서드는 소괄호 안의 내용을 콘솔에 출력하고 줄 바꿈을 합니다.

print 뒤에 붙은 ln은 line을 의미합니다.

 

형식대로 출력하기 System.out.printf()

System.out.printf()는 지시자(specifier, 형식 지정자)를 이용해 변수의 값을 여러 형식으로 출력해 주는 메서드입니다

 

지시자 출력 포맷
%b 불리언
%d 10진수
%o 8진수
%x, %X 16진수
%c 문자
%s 문자열
%n 줄 바꿈

 

콘솔 입력

 

아래의 예시를 들어 알아보자

import java.util.Scanner;                 // Scanner 클래스를 가져옵니다.

Scanner scanner = new Scanner(System.in); // Scanner 클래스의 인스턴스를 생성합니다.
String inputValue = scanner.nextLine();   // 입력한 내용이 inputValue에 저장됩니다.

System.out.println(inputValue);           // 입력한 문자열이 출력됩니다.

1. import java.util.Scanner

 

데이터를 입력받는 기능을 작은 프로그램으로 만들어둔 것이 Scanner입니다. 이 Scanner는 java.util이라는 위치에 저장돼 있는데, Scanner를 사용하려면 먼저 여러분이 작성하고 있는 소스 코드 안으로 Scanner를 불러와야 합니다. 즉, import java.util.Scanner;는 ‘java.util에 있는 Scanner를 이 소스 코드로 불러와라’라는 의미가 됩니다.

 

2. Scanner scanner = new Scanner(System.in);

 

위에서 불러온 Scanner는 클래스입니다. 클래스는 객체를 찍어낼 수 있는 일종의 틀이며, 우리가 사용하고자 하는 Scanner 클래스의 데이터 입력 기능은 Scanner 클래스 자체가 아니라, 그것을 통해 만들어낸 객체에 존재합니다. 따라서 데이터 입력 기능을 사용하려면 Scanner 클래스를 통해 객체를 먼저 만들어야 합니다.

 

3. String inputValue = scanner.nextLine();

위에서 Scanner 클래스를 인스턴스화한 scanner에는 nextLine()이라는 메서드가 존재합니다. 이 메서드는 콘솔을 통해 문자열 데이터를 입력받는 기능을 수행합니다. 즉 scanner.nextLine()은 문자열을 입력받기 위한 코드이며, 입력받은 문자열은 inputValue라는 변수에 할당되어 저장됩니다.

 

추가

scanner에는 문자열을 입력받는 nextLine()뿐만 아니라, 정수형을 입력받을 수 있는 nextInt(), 실수형을 입력받을 수 있는 nextFloat()등의 메서드들도 존재합니다.

 

조건문

if 문

 

if문의 소괄호 안에는 boolean 값으로 평가될 수 있는 조건식을 넣어주고, 중괄호 안의 실행 블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 됩니다.

 

if (조건식) {
	//조건식이 참이라면 실행되는 블록입니다.
}

중괄호({})를 이용해 여러 문장을 하나의 단위로 묶을 수 있습니다. 이것을 ‘블록(block)’이라고 합니다.

 

 

if...else문

 

if...else문은 조건식의 결과에 따라 실행블록을 선택합니다. if문의 조건식이 true이면 해당 블록이 실행되고, 조건식이 false이면 다음으로 넘어가 else if 문의 조건식을 검사합니다. else if문의 모든 조건식이 false라면, 나머지 경우를 의미하는 else 블록이 실행됩니다.

 

if(조건식1) {
	//조건식1이 참이라면, 실행되는 블록입니다.		
} 
else if (조건식2) {
	//조건식1이 참이 아니면서 조건식2가 참일 때, 실행되는 블록입니다.
} 
else {
	//조건식1과 2가 모두 참이 아닐 때, 실행되는 블록입니다.
	//else문은 생략 가능합니다.
}

 

Switch문

 

switch문도 if문과 마찬가지로 조건 제어문입니다. 하지만 switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됩니다. if문은 조건식의 결과가 true와 false 두 가지밖에 없기 때문에 경우의 수가 많아질수록 if-else를 반복적으로 추가해야 하기 때문에 코드가 복잡해집니다. 그러나 switch문은 변수의 값에 따라서 실행문이 결정되기 때문에 같은 기능의 if문보다 코드가 간결할 수 있습니다.

 

 

728x90