chapter 3 연산자

JMG·2022년 1월 10일
0

자바의 정석

목록 보기
6/13

📖 연산자와 피연산자

연산자 : 연산을 수행하는 기호입니다.
피연산자 : 연간자의 연산수행 대상을 의미합니다.

x + 3

연산자는 +
피연산자는 x와 3

📖 연산자의 종류

종류연산자설명
산술연산자+, -, *, /, %, >>, <<사칙연산과 나머지 연산(%)
비교연산자<, >, <=, >=, ==, !=크고 작음과 같고 다름을 비교
논리연산자&&, !, &, ^, ~'그리고(And)'와 '또는(Or)'으로 조건을 연결
대입연산자=우변의 값을 좌변에 저장
기타(type), ?:, instanceof형변환 연산자, 삼항연산자, instanceof연산자

*논리연산자에 '||(or)'가 표를 만드는 기호랑 동일해서 넣지 못 했습니다..

📖 연산자의 우선순위

📌 연산자의 우선순위란?

하나의 식에 연산자가 둘 이상 있을 때, 어떤 연산을 먼저 수행할 지를 자동 결정하는 것을 의미합니다.

종류연산자우선순위
단항연산자++ -- + - ~ ! (type)1
산술연산자* / %2
산술연산자+ -3
산술연산자<< >>4
비교연산자< > <= >= instanceof5
비교연산자== !=6
논리연산자&7
논리연산자^8
논리연산자9
논리연산자&&10
논리연산자or11
삼항연산자?:12
대입 연산자= += -= *= /= %=13
대입 연산자<<= >>= &= ^= =14

📖 연산자의 결합규칙

우선순위가 같은 연산자가 있을 때, 어떤 것을 먼저 실행될까요?
대입과 단항 연산자를 제외하면, 모주 왼쪽 -> 오른쪽으로 진행됩니다.

📖 연산자의 우선순위와 결합법칙 요약

  • 산술 > 비교 > 논리 > 대입
  • 단항(1) > 이항(2) > 삼항(3)
  • 단항 연산자와 대입 연산자를 제외한 모든 연산자는 왼쪽에서 오른쪽으로 진행

📖 증감연산자

증감연산자는 코드를 좀 더 단순화 하기위해 등장했습니다.
증가연산자(++) 피연산자의 값을 1 증가시킵니다.
감소연산자(--) 피연산자의 값을 1 감소시킵니다.

📌 전위형과 후위형 증감연산자

전위형은 값이 참조되기 전에 증가시킵니다. //j = ++i;
후위형은 값이 참조된 후에 증가시킵니다. //j = i++;

"증감 연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이가 없습니다."
ex)
i++;
++i;

예제)

public class Ex3_2 {
	public static void main(String [] args) {
		
		int i = 5;
		int j = 0;

		j = i++; // 후위형 
		System.out.println("j=i++; 실행 후, i=" + i + ", j=" + j);

		i = 5;
		j = 0;

		j = ++i; // 전위형
		System.out.println("j=++i; 실행 후, i=" + i + ", j=" + j);

	}
}

📖 부호 연산자

음과 양의 부호를 표기하는 연산자입니다.
예제)

public class Ex3_4 {
	public static void main(String [] args) {
		
		int i = -10;
		i = +i;
		System.out.println(i); // -10
		
		int i = -10;
		i = -i;
		System.out.println(i); //10

	}
}

📖 형변환 연산자

형변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 의미합니다.

(타입)피연산자

예제)

double d = 85.4;
int score = (int)d; // 결과: 85

char c = (char)65; // 결과: 'A'
int i1 = (int)'A' // 결과: 65
int i2 = (int)1.6f // 결과: 1
float f = (float)10 // 결과: 10.0f

📌 자동 형변환과 수동 형변환

자동 형변환
형변환이 생략가능합니다.

float f = 1234; // int타입의 값을 float타입의 변수에 저장

수동 형변환
형변환이 생략불가능합니다.
값손실이 일어나는 경우, 타입자체가 큰 변수를 대입하는 경우는 강제형변환 이용합니다.

int i = (int)3.14f; //값손실이 일어나는 경우

📖 사칙 연산자

+ - * /

같은 타입끼리만 연산이 가능합니다.

📖 산술변환

연산 전에 피연산자의 타입을 일치시키는 것을 의미합니다.

  • 두 피연산자의 타입을 같게 일치시킨다.(보다 큰 타입으로 일치)
  • 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.

예제)

public class Ex3_9 {
	public static void main(String [] args) {

		int a = 1_000_000;
		int b = 2_000_000;
		 //결과가 피연산자 보다 큰타입일 경우 
		//산술변환을 하여 피연산자중 최소 한개를 형변환해야한다.
		long c = (long)a * b; 

		System.out.println(c); // 2000000000000

	}
}

📖 반올림 - Math.round()

실수를 소수점 첫 째자리에서 반올림한 정수를 반환합니다.

long result = Math.round(4.52); // 5

예제)

//만약 소수점 n번째 자리에서 반올림하고 싶은 경우
public class Ex3_11 {
	public static void main(String [] args) {
		double pi = 3.141592;
		double shortPi = Math.round(pi * 1000) / 1000.0;
		System.out.println(shortPi); //3.142
	}
}

📖 나머지 연산자 %

오른쪽 피연산자로 나누고 남은 나머지를 반환하고 싶은 경우 사용됩니다.
나머지 연산자는 정수만 허용되고 부호는 무시됩니다.
10 % -8 -> 2

📖 비교연산자


> < >= <= == !=

두 피연산자를 비교해서 true 또는 false를 반환합니다.

비교 연산자연산결과
>좌변 값이 크면, true 아니면 false
<좌변 값이 작으면, true 아니면 false
>=좌변 값이 크거나 같으면, true 아니면 false
<=좌변 값이 작거나 같으면, true 아니면 false
==두 값이 같으면, true 아니면 false
!=두 값이 다르면, true 아니면 false

📖 문자열의 비교

문자열 비교하는 경우 ==대신 equals()를 사용해야 합니다.

예제)

String str1 = "abc";
String str2 = "abc";
System.out.println(str1.equals(str2); //true

📖 논리연산자 && ||

조건식을 연결할 때 사용하는 연산자입니다.

  • ||(OR결합) - 피연산자 중 어느 한쪽이 true이면 ture를 결과로 얻습니다.

  • &&(AND결합) - 피연산자 중 양쪽이 모두 true여야 true를 결과로 얻습니다.

    예제)

//x는 10보다 크고 20보다 작은경우
10 < x && x < 20

//i의 배수가 2의 배수 또는 3의 배수인 경우
i % 2 == 0 || i % 3 ==0

//i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다.
(i % 2 == 0 || i % 3 ==0) && i % 6 != 0

//문자 ch는 숫자('0' ~ '9')이다.
'0' <= ch || ch <= '9'

//문자 ch는 대문자 또는 소//문자이다.
('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')

📖 논리 부정 연산자 !

true를 false로, false는 true로 바꿉니다.

boolean b = true;
!b //false

//문자 ch가 소문자가 아니다.
!('a' <= ch && ch <= 'z')

📖 조건 연산자(삼항 연산자)

간단한 if문을 대체하기 위해 사용합니다.

조건식 ? 식1 : 식2;
조건식이 참이면 식1
조건식이 거짓이면 식2

조건식의 결과에 따라 연산결과를 달리한다.
result = (x > y) ? x : y;

📖 대입 연산자

오른쪽 피연산자를 왼쪽 피연산자에 저장 후 저장된 값을 반환합니다.

lvalue(left) = rvalue(right);
lvalue는 반드시 저장공간(변수)여야 한다.

📖 복합 대입 연산자

대입 연산자와 다른 연산자를 하나로 축약할 때 사용됩니다.

op==
i += 3;i = i + 3;
i -= 3;i = i - 3;
i *= 3;i = i * 3;
i /= 3;i = i / 3;
i *= 10 + j;i = i * (10 + j);
profile
초보개발 블로그입니다~

0개의 댓글