coding_yoon
냥집사의 개발노트
coding_yoon
전체 방문자
오늘
어제
  • 분류 전체보기 (24)
    • 📚Programming (16)
      • Java (10)
      • Spring (0)
      • Spring Boot (0)
      • JPA (0)
      • Python (4)
      • 개발 환경설정 (2)
    • 📌ETC (8)
      • Tech Interview (8)

블로그 메뉴

  • 💻깃허브
  • 방명록
  • 태그 클라우드

공지사항

인기 글

태그

  • 신입개발면접
  • 자바신입
  • 자바자료형
  • 이클립스기초
  • html컴파일없이
  • 신입개발자면접
  • 출력메소드
  • 프로젝트 임포트
  • scanner메소드
  • STS 프로젝트받기
  • springbootdevtools
  • 자바의특징
  • 자바기초
  • 기술면접
  • 현업프로젝트 내려받기
  • 인테리제이
  • sql이론
  • 이클립스 프로젝트 import
  • 개발자면접정리
  • 이클립스 프로젝트생성
  • 자바상수
  • 코드작성순서
  • 파이썬이론
  • 자바기술면접
  • 자바random
  • 사용자입력 exception
  • 자바연산자
  • 자바이론
  • import문 사용방법
  • 면접정리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
coding_yoon

냥집사의 개발노트

📚Programming/Java

[자바] 연산자

2022. 9. 16. 12:29
\

📌 컴퓨터 연산원리

  • 값(literal)은 같은 타입의 변수에만 대입할 수 있다.
  • 같은 타입끼리만 연산할 수 있다. (ex. int 와 int의 연산)
  • 같은 타입간 연산결과값의 타입 또한 동일하다.

📌 항과 연산자

  • 항 (operand) : 연산에 사용되는 값
  • 연산자 (operator) : 항을 이용하여 연산하는 기호

📌 항의 개수에 따른 연산자 구분


#1️⃣ 연산자 우선순위


#2️⃣ 대입연산자 = , 좌항 공간에 우항의 값을 대입한다.

  • 변수에 값을 대입 하는 연산자
  • 연산의 결과를 변수에 대입
  • 우선 순위가 가장 낮은 연산자
  • 왼쪽 변수(lvalue)에 오른쪽 변수(값)(rvalue)를 대입

2 - 1. 변수 = 값

int a = 1; // 변수 a에 1이 대입된다.

 

2 - 2. 변수 = 표현식

int a = 1 + 2; // 변수 a에 1+2를 하여 3이 대입된다.

 

2 - 3. 변수 = 변수 = 변수 ...= 값(혹은 표현식)

int a, b, c;
a = b = c = 100 // a, b, c 변수에 동일하게 100이 대입된다

#3️⃣ 증감연산자

  • 단항 연산자
  • 1만큼 더하거나 1만큼 뺄 때 사용하는 연산자
  • 항의 앞/뒤 위치에 따라 연산의 결과가 달라짐에 유의

3 - 1. 전위증감연산자 ++a , --a : 먼저 1 증감후에 인접연산처리

int c = 10;
++c; // c = c + 1;
System.out.println(c);
--c; // c = c - 1;
System.out.println(c);

// 결과 11 , 9
int k = 1;
System.out.println(++k + 1); // 인접연산 , 2 + 1
System.out.println(k); // 2

 

3 - 2. 후위증감연산자 a++ , a-- : 먼저 인접연산에 사용된 후 1증감처리

int k = 1;
System.out.println(k++ + 1); // 인접연산 , 1 + 1
System.out.println(k); // 2
int m = 3;
int n = m++; // 대입하는걸 먼저 사용하고 후에 1증가
System.out.println(m); // 4 
System.out.println(n); // 3

 

💡 단독으로 쓰일 때는 전위,후위 상관 X

++a;
a++;
--a;
a--;

#4️⃣ 산술 연산자

  • 사칙연산에 사용되는 연산자
  • %는 나머지를 구하는 연산자 → 숫자 n의 나머지는 0 ~ n-1 범위의 수 → 특정 범위 안의 수를 구할 때 종종 사용
  • 나누기, 나머지, 곱하기는 더하기,빼기보다 우선순위가 높다.
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int n = sc.nextInt();
System.out.println("짝수인가? " + (n % 2 == 0)); // 입력받은 정수 나누기 2의 나머지가 0이면 true

#5️⃣ 비교 연산자

  • 이항 연산자
  • 연산의 결과가 true (참), false (거짓)으로 반환됨

5 - 1. 동등성, 동일성 비교

s1 == s2 동일성비교 : 값비교
s1.equals("비교문자열") 동등성비교 : 주소값에 있는 값비교

#6️⃣ 논리 연산자

  • 관계 연산자와 혼합하여 많이 사용 됨
  • 연산의 결과가 true(참), false(거짓)으로 반환됨
  • [a && b, a || b ]→boolean으로 평가되는 조건식

6 - 1. a && b - a, b 모두 true일때, true를 반환 

.

6 - 2. a || b - a, b 중에 하나라도 true라면, true를 반환

6 - 3. 단락 회로 평가 (short circuit evaluation)

  • 논리 곱 &&은 두 항이 모두 true일 때만 결과가 true → 앞의 항이 false 이면 뒤 항의 결과를 평가하지 않아도 false임
  • 논리 합 ||은 두 항이 모두 false 일 때만 결과가 false → 앞의 항의 true이면 뒤 항의 결과를 평가하지 않아도 true임

📌 우항을 검사하지 않았을 때

int x = 1;
int y = 1;

System.out.println(x == 1 && ++y == 2); // 좌항이 참이기 때문에 y까지 실행함.
System.out.printf("x = %d, y = %d", x, y);

// 결과 x = 1 , y = 2
int x = 1;
int y = 1;

System.out.println(x != 1 && ++y == 2); // 좌항이 거짓이기 때문에 y까지 실행하지않음.
System.out.printf("x = %d, y = %d", x, y);

// 결과 x = 1 , y = 1

#7️⃣ 삼항연산자 (조건식) ? (참일 때 값) : (거짓일 때 값)

https://dojang.io/mod/page/view.php?id=145

int a = 100;

String s = (a > 50) ? "a는 50보다 크다" : "a는 50보다 작다";

System.out.println(s);
// a는 50보다 크다
<사용자에게 입력받은 정수가 홀수 / 짝수 인지 출력>
// 100은 짝수입니다.

Scanner sc = new Scanner (System.in);
n = sc.nextInt();
Strint nType = (n % 2 == 0) ? "짝" : "홀"
System.out.printf("%d 은/는 %s수입니다.", ntype);

 

📌 이중 삼항 연산자도 가능

a < b ? a-- : (b==0 ? a++ : b--);

#8️⃣ 복합대입연산자

  • 대입 연산자와 다른 연산자를 함께 사용함
  • 프로그램에서 자주 사용하는 연산자

int a = 5;
a += 5; // a = a + 5
System.out.println(a) // 10

a -= 3;
System.out.println(a) // 7

#9️⃣ 부호 연산자

: 변수에 '-' 연산자만 사용한다고 해서 값 자체가 음수로 바뀌는 것은 아니다.

int num = 10;

System.out.println(+num); // 값이 10 그대로 출력됨
System.out.println(-num); // 값 10에 -가 붙서어 -10이 출력되지만 num 값이 실제로 바뀌지는 않음
System.out.println(num);  // 값이 10 그대로 출력됨

num = -num;              // num 값을 음수로 바꿔서 다시 num 에 대입함 
System.out.println(num); //값 -10이 출력됨

 

저작자표시 비영리 변경금지 (새창열림)

'📚Programming > Java' 카테고리의 다른 글

[자바] Random클래스  (0) 2022.09.16
[자바] String클래스  (0) 2022.09.16
[자바] Scanner  (1) 2022.09.16
[자바] 출력메소드  (1) 2022.09.16
[자바] 형변환  (0) 2022.09.16
    '📚Programming/Java' 카테고리의 다른 글
    • [자바] Random클래스
    • [자바] String클래스
    • [자바] Scanner
    • [자바] 출력메소드
    coding_yoon
    coding_yoon
    코딩공부를 하며 작성하는 노트

    티스토리툴바