java 기초 공부 내용 정리(연산자)

홍준성·2022년 5월 31일
0

java 기초 공부

목록 보기
3/39

연산자란

연산을 하는 문자


연산자의 종류

  1. 산술연산자
  2. 단항연산자
  3. 비교연산자
  4. 논리연산자
  5. 쉬프트연산자
  6. 기타연산자

연산자 우선순위

우선순위연산자연산자
1최우선연산자[ ], ( )
2단항연산자!, ~, +, -, ++
3산술연산자+, -, *, -, %
4쉬프트 연산자<<, >>
5관계 연산자<, >, ==, !=
6논리 연산자&&, //
7삼항 연산자(조건)?참:거짓
8대입 연산자=, +=, -=

산술연산자의 종류

연산자기능
+더하기
-빼기
*곱하기
/나누기
%나머지

단항 연산자

1. 부호 연산자

변수 앞에 붙어 변수 값의 부호를 변경

int a = -1;
System.out.println(-a);   // a의 부호가 변경됨

2. 논리 부정 연산자

논리형 변수 앞에 붙어 변수의 값을 변경

boolean a = true;
boolean b = false;

System.out.println(a); //true 출력
System.out.println(!b); // true 출력

3. 증감 연산자

부호에 따라 변수의 값을 1 증가하거나 감소

증감연산자의 사용 방법
1. 전위형: ++변수명, --변수명
2. 후위형: 변수명++, 변수명--

  • 전위형은 변수의 값 증가가 먼저 이뤄지고 변수의 값 사용
    후위형은 변수의 값 사용 후 변수의 값 증가
package day02;

public class Day02Ex {

	public static void main(String[] args) {
		
		int a= 1;
		System.out.println(a);
		
		a++; // a값 1 증가: 후위형
		System.out.println(a); // a = 2
		System.out.println(++a); // a= 3, a의 값 1증가, 전위형: 증가가 먼저 됨
		System.out.println(a++); // a= 3, a의 값 1증가, 하지만 후위형으로 print가 된 후 증가가 됨
		System.out.println(a); // a= 4, 윗 줄에서 a가 일 증가했음
	}

}

비교연산자

비교 연산자의 종류

종류연산자연산자 사용방법설명
같다==a==ba와 b가 같으면 참
작다<a<ba가 b보다 작으면 참
크다>a>ba가 b보다 크면 참
작거나 같다<=a<=ba가 b보다 작거나 같으면 참
크거나 같다>=a>=ba가 b보다 크거나 같으면 참
같지 않다!=a!=ba와 b가 같지 않으면 참

※ 문자열 비교 시에는 등호(==)가 아닌 문자열.equals(비교문자열)을 사용한다.


논리연산자

논리 연산자란

  1. 여러가지 조건을 동시에 검사할 경우 사용하는 연산자
  2. 두 항의 값이 boolean 값일 때 연산이 가능하다.

논리연산자의 종류

종류연산자사용 예시설명
AND&&a&&ba가 참이고, b가 참이면 결과는 참
OR||a||ba가 참이거나 b가 참이면 결과는 참
NOT!!aa가 참이면 거짓, 거짓이면 참

비트 연산자

비트 연산자란

비트 단위로 연산을 하는 연산자
→ 비트: 데이터의 최소 단위(2진수)

비트 연산자의 종류

  1. 비트 논리 연산자
  2. 비트 쉬프트 연산자

비트 논리 연산자의 종류

종류연산자사용 예시설명
비트AND&a&ba가 1이고, b가 1이면 결과 1
비트OR|a|ba가 1이거나 b가 1이면 결과 1
비트XOR^a^ba와 b가 서로 다르면 1, 같으면 0
비트NOT~~aa가 1이면 0, 0이면 1
* NOT 연산 공식: ~a = -a-1
예) ~5 = -6, 반대로 ~-6=5

1) ~5(0101(2)가 10(1010(2))이 아닌 이유
5 : 0101(2)
-> 편의상 5를 4bit로 표현한 것

즉, 우리 컴퓨터는 64비트를 사용하고 있고, 5는
0000 0000 0000 ... 0000 0101 을 편의상 4bit로만 표현했다는 것

이에 대한 NOT 연산을 하게 되면
0을 모두 1로 바꾸고 1을 0으로 바꾸기 때문에
1111 1111 1111 ... 1111 1010으로 숫자가 변환된다.
10은 0000 0000 .... 0000 1010이므로 ~5가 10이 될 수 없다.


2) 부호가 바뀐 이유
또한, 컴퓨터에서 부호를 표현하는 비트는 최상위비트로
맨 앞에 있는 숫자가 0인지, 1인지에 따라 부호가 결정된다.
최상위 비트가 0일 때 양수, 1일 때 음수로 결정되므로 부호가 -로 결정된다.


3) 1111 1111 ... 1111 1010이 -6인 이유
1111 1111 ... 1111 1010을 모두 계산하기 어렵기 때문에
역으로 6이 2진수로 나타냈을 때의 값을 계산해보면,
6 = 0110(2)이 나온다
64비트로 변환하면 0000 0000 .... 0110이며
-6은 1111 1111 .... 1010 이므로 두 수를 더하면 0이 나오게 된다.
(양 자리수의 덧셈에서 수가 2가 되면 0이 되고 다음 자리수로 넘어가게 되므로)
따라서 1111 ... 1010은 -6이다.

비트 쉬프트 연산자

쉬프트 연산 = 비트 이동 연산

비트 쉬프트연산자의 종류

종류연산자연산자 사용방법설명
왼쪽 쉬프트<<a<<na의 비트를 왼쪽으로 n만큼 이동
오른쪽 쉬프트>>a>>na의 비트를 오른쪽으로 n만큼 이동

* 쉽게 푸는 법
1) 오른쪽 쉬프트 연산자는 오른쪽으로 1칸씩 이동할 때마다 2로 나눈 몫(나머지는 버림)
2) 왼쪽 1칸 씩 이동할 때마다 2로 곱한 값

* 예시
1) 15>>2 = 3(0011(2)) → 1111을 2칸 오른쪽 쉬프트
2) 5<<4 = 80(0101 0000) → 0000 0101을 4칸 왼쪽 쉬프트


기타 연산자

삼항 연산자

항이 3개인 연산자
* (조건)?참일때 값: 거질일 때 값

int age = 17;
System.out.println(age>19?"성인입니다":"청소년입니다.");

//출력 값
청소년입니다.

대입 연산자

값을 할당할 때 사용하는 연산자
작성방법: 저장공간 = 값
ex) x = 3;


복합대입 연산자

산술연산자+대입연산자
작성방법: [변수][산술연산자][대입연산자][값]
ex) x+=3;


instanceof 연산자

객체의 타입을 확인하는 연산자
작성방법: instanceof 클래스명

profile
준성이의 개발자 공부 velog

0개의 댓글