연산자
연산자는 변수들을 계산하기 위해서 사용한다.
✅ 연산자 : 계산할 때 계산할 목적이 되는 것 . 덧셈, 뺄셈 기호처럼 계산할 기호 ( +, - )
✅ 피연산자 : 연산자로 계산되는 숫자 및 변수
연산자의 종류
산술연산자 : +, -, *, /, %(나머지), <<, >> (비트 연산)
비교연산자 : >, <, >=, <=, ==, !=
논리연산자 : &&, ||, !
대입연산자 : =, ++, --
기타연산자 : (type), ? :, instance of
간단한 산술 연산 진행해보기
산술연산자 : +, -, *, /, %(나머지), <<, >> (비트 연산)
1. 변수에 값을 할당한다.
2. 변수 x와 y를 더한 값을 z에 할당한다. x, y는 피연산자가 되고 '+' 는 연산자가 된다.
3. z를 System.out.println 으로 출력한다.
package week02_Middle;
// 간단한 산술 연산을 진행해보기
public class BasicAdd {
public static void main(String[] args) {
// x + y = z
// 1. 값을 할당한다
int x = 5;
int y = 10;
// 2. x 와 y룰 더한 값을 z에 할당한다
int z = x + y; // x, y -> 피연산자 / + -> 연산자
// System printout 은 메인 메소드 안에서 선언이 가능
System.out.println(z);
}
}
산술 연산자로 사칙 연산 진행하기
사칙연산 : + (더하기), - (빼기), * (곱), / ( 나누기), % (나눗셈 나머지)
규칙
1. 더하기와 곱하기가 있으면 곱하기를 먼저 계산 -> 중학교 시간
2. 괄호가 있으면 괄호부터 계산
package week02_Middle;
public class Calculator {
public static void main(String[] args) {
// 사직연산 : +, -, *, /, %
System.out.println(4+2); // 6
System.out.println(4-2); // 2
System.out.println(4*2); // 8
System.out.println(4/2); // 2
System.out.println(5/2); // 2
System.out.println(2/4); // 0
System.out.println(4%2); // 0
System.out.println(5%2); // 1
System.out.println("------------------");
// 우선순위 연산
System.out.println(2 + 2 * 2); // 6. 중학교 시간 ㅋㅋ 더하기와 곱하기가 있으면 곱하기를 먼저 계산
System.out.println((2 + 2) * 2); // 8. 괄호가 있으면 괄호부터 계산
System.out.println("------------------");
// 변수를 이용한 연산
// 변수 선언
int a = 20;
int b = 10;
int c;
// 덧셈
c = a + b;
System.out.println(c); // 20 + 10 = 30
// 뺄셈
c= a - b;
System.out.println(c); // 20 - 10 = 10
// 곱셈
c= a * b;
System.out.println(c); // 20 * 10 = 200
// 나눗셈(몫)
c= a / b;
System.out.println(c); // 20 / 10 = 2
// 나머지
c= a % b;
System.out.println(c); // 20 % 10 = 0
}
}
비교 연산자
비교연산자 : > (크다), < (작다), >= (크거나 같다), , <= (작거나 같다), , == (같다), , != (같지 않다)
✅ 좌측과 우측을 비교한다고 해서 비교 연산자
✅ 비교 연산자의 반환값은 true(참) / 거짓(false) 가 나온다.
package week02_Middle;
public class ComparisonOperator {
// 비교연산자 : 좌측과 우측을 비교한다고 해서 비교연산자
// 비교연산자의 반환값이 true/false 가 나온다가 중요
public static void main(String[] args) {
System.out.println(10>9); // 10이 9보다 크다 -> 참 true
System.out.println(10>=9); // 10이 9보다 크거나 같다 -> 참 true
System.out.println(10<9); // 10이 9보다 작다 -> 거짓 false
System.out.println(10<=9); // 10이 9보다 작거나 같다 -> 거짓 false
System.out.println(10==10); // 10이 10과 같다 -> 참 true
System.out.println(10==9); // 10이 9와 같다 -> 거짓 false
System.out.println(10!=10); // 10이 10과 같지 않다 -> 거짓 false
System.out.println(10!=9); // 10이 9와 같지 않다 -> 참 true
}
}
논리 연산자
논리 연산자 : && (AND), || (OR), ! (NOT → 값을 반대로 바꿔줌. true → false, false → true)
✅ 비교 연산의 결과값으로 받을 수 있는 boolean(true, false) 값을 연결하는 연산자
✅ 조건을 연결하였을 때 boolean 값을 조합해서 참, 거짓 boolean 값을 출력
package week02_Middle;
public class LogicOperator {
// 논리연산자
// 비교 연산의 결과값으로 받을 수 있는 boolean 값을 연결하는 연산자
// 조건을 연결하였을 때 boolean 값을 조합ㅎ서 참, 거짓 boolean 값을 출렭
// &&(AND), ||(OR). !(NOT -> 값을 반대로 바꿔줌)
public static void main(String[] args) {
boolean flag1 = true;
boolean flag2 = true;
boolean flag3 = false;
System.out.println(flag1);
System.out.println(flag2);
System.out.println(flag3);
// 1. 피 연산자 중 하나라도 true이면 true이다 => 또는 => || OR
System.out.println("------------------");
System.out.println(flag1 || flag2); // true || true = true
System.out.println(flag1 || flag2 || flag3); // true || true || false = true
// 2. 피 연산자가 모두 true이면 true이다 => 그리고 => && AND
System.out.println("------------------");
System.out.println(flag1 && flag2); ; // true && true = true
System.out.println(flag1 && flag2 && flag3); // true && true && false = false
// 3. && AND
System.out.println("AND-----------------");
System.out.println((5 > 3) && (3 > 1)); // true && true = true
System.out.println((5 > 3) && (3 < 1)); // true && false = false
// 4. || OR
System.out.println("OR-----------------");
System.out.println((5 > 3) || (3 > 1)); // true || true = true
System.out.println((5 > 3) || (3 < 1)); // true || false = true
// 5. 논리 부정 연산자 ! NOT
System.out.println("! NOT-----------------");
System.out.println(!flag1); // !true = false
System.out.println(!flag3); // !false = true
}
}
대입 연산자
대입 연산자 : =(기본연산자), +=, -=, *= ....(복합 대입 연산자)
✅ 변수를 바로 연산해서 바로 값을 할당해 저장하는 연산자
✅ 복합 대입 연산자는 기본 대입 연산자를 줄여서 작성한 것이여서 기능은 똑같다
대입 연산자 주의점
++, -- a : a + 1, a - 1. 연산 전에 피연산자에 1을 더해주고 연산
a ++, -- : 연산 후에 피연산자에 1을 더해준다.
int a = 10;
int b = 10;
int val = ++a + b--;
System.out.println(val);
++a => a + 1 = 11
b-- => (++a + b) + 1 => (11 + 10) + 1 = 21
대입 연산자 사용법
package week02_Middle;
public class AssignmentOperator {
public static void main(String[] args) {
// 대입연산자
// 변수를 바로 연산해서 그 자리에서 대입하는 연산자
// =(기본연산자), +=, -=, *= ....(복합대입연산자)
// ++ : += 1
// -- : -= 1
// 기본 대입 연산자
int number = 10;
number = number + 10; // 10 + 10 = 20
System.out.println(number);
// 복합 대입 연산자
System.out.println("-----------------");
number = 10;
number += 2;
System.out.println(number); // number + 2 = 12
number -= 2;
System.out.println(number); // number - 2 = 10
number *= 2;
System.out.println(number); // number * 2 = 20
number /= 2;
System.out.println(number); // number / 2 = 10
number %= 2;
System.out.println(number); // number % 2 = 0 나눗셈의 나머지
// ++, --
// number = number + 1;
// number += 1;
// number++;
System.out.println("-----------------");
number++;
System.out.println(number); // 0 + 1 = 1
number--;
System.out.println(number); // 1 - 1 = 0
// 대입연산자에서 주의해야 할점
System.out.println("-----------------");
int a = 10;
int b = 10;
int val = ++a + b--;
System.out.println(val);
// ++a => a + 1 = 11
// b-- => (++a + b) + 1 => (11 + 10) + 1 = 21
}
}
기타 연산자
1. 형변환 연산자
int intNumber = 93 + (int)98.8; // 93 + 98 = 191
System.out.println(intNumber);
double doubleNumber = (double) 93 + 98.8;; // 93.0 + 98.8 = 191.8
System.out.println(doubleNumber);
2. 삼항연산자 : 비교 연산자와 함께 쓰이며 비교 연산자의 결과 true / false 로 결정
// 2. 삼항연산자
// 비교연산자와 항상 함께 쓰이며 비교연산자의 결과 true/false로 결정되는 것
int x = 1;
int y = 9;
boolean b = (x == y) ? true : false; // x와 y가 같다면 true, 아니면 false => false
System.out.println(b);
3. instance of
아직까지 자세히 다루지 않음. 클래스, 객체의 개념을 알아야 알 수 있음.
피 연산자가 조건에 명시된 클래스의 객체인지 비교하여 맞으면 true, 아니면 false
연산자 우선순위
연산자 우선순위 : 산술 > 비교 > 논리 > 대입
연산자 여러 개가 함께 있는 연산을 계산할 때는 우선순위가 있어서 우선순위에 따라서 응답값이 결정된다
단, 괄호로 감씨주면 괄호 안 연산이 최우선순위로 계산된다.
package week02_Middle;
public class Priority {
public static void main(String[] args) {
// 연산자 우선순위 : 산술 > 비교 > 논리 > 대입
// - 연산자 여러 개가 함께 있는 연산을 계산할 때는 우선순위가 있다
// 위 우선순위에 따라서 최종적인 응답값이 결정된다
// 단, 괄호로 감싸주면 괄호 안 연산이 최우선순위로 계산된다
int x = 2;
int y = 9;
int z = 10;
boolean result = x < y && y < z; // 비교 연산자 먼저 계산되고 && 논리 계산됨
System.out.println(result); // 2 < 9 -> true, 9 < 10 -> true. true && true = true
System.out.println("-----------------");
// 1. 산술 계산 x + 10 = 12
// 2. 비교 연산 : 12 < 9 && 9 < 10
// 3. 논리 연산 : false && true = false
result = x + 10 < y && y < z;
System.out.println(result);
System.out.println("-----------------");
result = (x + 2) * 3 > y; // 괄호먼저 계산 -> * 계산 -> 비교연산 계산
System.out.println(result); // x + 2 = 4 -> 4 * 3 = 12 -> 12 > 9 -> true\
}
}
산술 변환
산술 변환 : 연산 전에 피연산자의 타입을 일치시키는 것
두 피연산자의 타입을 같게 일치시킨다. (둘중에 저장공간 크기가 더 큰 타입으로 일치)
피연산자의 타입이 `int` 보다 작은 `short` 타입이면 `int`로 변환
피연산자의 타입이 `long` 보다 작은 `int`, `short` 타입이면 `Long`으로 변환
피연산자의 타입이 `float`보다 작은 `long`, `int`, `short` 타입이면 `float`으로 변환
피연산자의 타입이 `double` 보다 작은 `float`, `long`, `int`, `short` 타입이면 `double`으로 변환
이처럼, 변수 여러 개를 연산했을 때 결괏값은 피연산자 중 범위가 가장 큰 변수 타입을 가지게 된다.
비트 연산
1byte = 8bit
Bit는 0,1 둘 중의 하나의 값만을 저장하는 컴퓨터가 저장(표현) 가능한 가장 작은 단위여서 가장 연산이 빠르다.
물론 이전에 배운 대로 0,1 값으로 산술연산을 하거나, 비교 연산을 할 수 있지만 비트 연산을 통해 자릿수를 옮길 수도 있다.
이처럼 Bit의 자릿수를 옮기는 것을 비트 연산!!
`<<`(왼쪽으로 자릿수옮기기), `>>`(오른쪽으로 자릿수옮기기)
0,1 은 2진수 값이기 때문에,
자릿수를 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈이 연산되는 것과 동일.
자릿수를 오른쪽으로 옮기는 횟수만큼 2의 배수로 나눗셈이 연산되는 것과 동일.
⭐ 느낀점과 다음 할 일
아직까지는 100% 이해할 수 있는 내용이라 다시 차근히 이해하고 머리에 새길 수 있어서 좋았다.
앞으로 조건문, 반복문, 배열 등이 나오면 더 자바의 핵심으로 들어가는 것이기 때문에
100% 이해하고 개념을 새길 수 있도록 해야겠다.
'내배캠_Java 6기 > Java 문법 종합반' 카테고리의 다른 글
20240726_TIL_캠프 2주차 5일_자료구조 배열 (0) | 2024.07.26 |
---|---|
20240726_TIL_캠프 2주차 5일_조건문과 반복문 (0) | 2024.07.26 |
20240723_TIL_캠프 2주차 2일_변수의 종류, 형변환, 강의 과제 (8) | 2024.07.23 |
20240722_TIL_ 캠프 2주차 1일_자바 첫 프로젝트 생성과 변수에 대해 알아보기 (0) | 2024.07.22 |
20240722_TIL_ 내일배움캠프 2주차 1일 _ 자바 개요와 기초 용어 (2) | 2024.07.22 |