🟨 목 차 🟨
1. 연산자라는게 뭘 까?
2. 간단하게 계산하는 복합 대입 연산자
3. 피연산자가 하나인 것도 있는데, 이것을 단항 연산자라고 한다.
4. 자바에서 계산하는 순서를 알아두면 좋다.
5. 뭔가를 비교할 때는 어떻게 할까?
6. 논리 연산자들을 알아보자
7. 아주 특이한 ? : 연산자
8. 기본 자료형의 형 변환을 이용한 변신(캐스팅)
◼️ 1. 연산자라는게 뭘 까? ◼️
연산자는 영어로 Operator라고 한다. 대부분의 연산자는 기본 자료형을 더하거나 빼는 등의 계산을 하기 위해서 사용한다.
- + : 더하기 연산자.
- - : 빼기 연산자.
- * : 곱하기 연산자.
- / : 나누기 연산자.
- % : 나머지 연산자.
+ 연산자.
public class OperatorMultipleDivision {
public static void main(String[] args) {
int intValue1 = 5;
int intValue2 = 10;
int result = intValue1/intValue2;
System.out.println(result);
}
}
위의 코드의 결과값은 0 이 나온다. 왜냐하면 int는 정수형이기 때문에 소수점을 표시해주지 않는다.
만약 우리가 원하는 소수형을 얻기 위해서는 모든 형을 float, double 으로 바꿔야한다.
public void divideInt2() {
double intValue1 = 5;
double intValue2 = 10;
double result = intValue1/intValue2;
System.out.println(result);
}
위의 코드의 결과값은 0.5가 나온다.
◼️ 2. 간단하게 계산하는 복합 대입 연산자 ◼️
int intValue=10;
intValue = intValue + 5;
위의 코드를 복합 대입 연산자로 변환을 하면 쉽게 표현 할 수 있다.
int intValue=10;
intValue += 5;
==> 위의 두 코드는 같은 코드이며, intvalue에 5를 더한 것을 intValue에 할당해라 라는 의미다.
- += : 기존 값에 우측 항의 값을 더함
- -= : 기존 값에 우측 항의 값을 뺌
- *= : 기존 값에 우측항의 값을 곱함
- /= : 기존 값을 우측 항의 값으로 나눔
- %= : 기존 값을 우측 항의 값으로 나눈 나머지
◼️ 3. 피연산자가 하나인 것도 있는데, 이것을 단항 연산자라고 한다. ◼️
- + : 단항 플러스 연산자.
- - : 단항 마이너스 연산자.
- ++ : 증가연산자.
- -- : 감소 연산자.
- ! : 논리 부정 연산자.
+ : 단항 플러스 연산자와 - : 단항 마이너스 연산자에 대해
package Part5;
public class Operatorunary {
public static void main(String[] args) {
Operatorunary exam = new Operatorunary();
exam.unary();
}
public void unary() {
int intValue = -10;
int result = +intValue;
System.out.println(result);
result = -intValue;
System.out.println(result);
}
}
이 코드의 결과값은 -10, 10이다. 왜냐하면 +는 "변수*(1)"을 의미하고, -는 "변수*(-1)"을 의미한다.
++ : 증가연산자와 -- : 감소 연산자를 알아보자.
package Part5;
public class OperatorIncrement {
public static void main(String[] args) {
OperatorIncrement exam = new OperatorIncrement();
exam.increment();
}
public void increment() {
int intValue =1;
System.out.println(intValue++);
System.out.println(intValue);
System.out.println(++intValue);
}
}
여기서의 결과값은 1 , 2 , 3 이 나온다. 이 결과값이 나오는 이유는 intValue++는 결과를 출력한 후에 1을 더하고 ++intValue는 출력문을 수행하기전에 1을 더하기 때문이다.
마지막으로 !(논리 부정 연산자)는 청개구리 연산자라고 생각하면 쉽다.
boolean 타입에서만 ! 연산자를 사용할 수 있다. 다시 말해 boolean 타입은 true / false 밖에 없어서 boolean 값 앞에 붙여주면, 그 결과가 반대가 된다는 뜻이다.
이건 쉽기 때문에 예제는 생략하겠다.
◼️ 4. 자바에서 계산하는 순서를 알아두면 좋다. ◼️
여기서 배우지 않은 것이 있다. 바로 ~(틸드)이다. 틸드는 2진수로 되어 있는 비트 값을 전부 거꾸로 바꾸는데 사용한다.
[ 자바를 개발하면서 비트 연산을 사용할 일이 많지 않기 때문에 책에서는 따로 설명이 없다. 그냥 이런것이 있구나 라며 생각만 하자. ]
◼️ 5. 뭔가를 비교할 때는 어떻게 할까? ◼️
- == : 같음
- != : 같지 않음
- > : 왼쪽 값이 큼
- >= 왼쪽 값이 같거나 큼
- < : 왼쪽 값이 작음
- <= : 왼쪽 값이 같거나 작음
이 부분은 너무 쉽기 때문에 넘기도록 하겠다.
◼️ 6. 논리 연산자들을 알아보자 ◼️
- && : AND 결합 (그리고)
- || : OR 결합 (이거나)
이 부분은 너무 쉽기 때문에 넘기도록 하겠다.
◼️ 7. 아주 특이한 ? : 연산자 ◼️
: 은 삼항연산자로 if문을 처리할때 쓰는것이다.
예시를 보게되면 쉽게 이해가 되니 예시를 보자
[EX]
package Part5;
public class OperatorConditionalTriple {
public static void main(String[] args) {
OperatorConditionalTriple exam = new OperatorConditionalTriple();
exam.doBlindDate(80);
}
public boolean doBlindDate(int point) {
boolean doBlindDateFlag = false;
doBlindDateFlag = (point>= 80) ? true : false; //이 부분에서 삼항연산자(:)를 사용하였고 맞으면 true 거짓이면 false를 출력한다.
System.out.println(point + " : " + doBlindDateFlag);
return doBlindDateFlag;
}
}
코드 결과값은 80 : true 이다.
위의 코드를 보게 되면 매개변수로 받은 point 변수가 80점 이상일 경우 삼항연산자를 이용하여 맞으면 true, 틀리면 false 값을 갖는다.
◼️ 8. 기본 자료형의 형 변환을 이용한 변신(캐스팅) ◼️
형 변환은 영어로 "캐스팅" 이라고 한다. [ 형변환 : 서로 다른 타입 사이에 변환하는 작업을 하는 것 ]
자바의 형 변환은 기본자료형과 참조 자료형 모두 괄호로 묶어주면 된다.
이번 시간은 먼저 기본 자료형의 형 변환만 알아본다.
기본 자료형 중에서 형 변환이 전혀 안되는 것은 boolean 타입이다.(숫자로 변환 할 수 없기 때문)
기본 자료형 -> 참조 자료형, 참조 자료형 -> 기본 자료형 으로 형 변환은 절대 안된다.
형변환을 어떤 경우에 사용해야 할 지 예시를 들어보자
- byte 타입으로 할당한 변수를 short 타입의 변수로 지정하고 싶을 때
- short 타입으로 할당한 변수를 byte 타입의 변수로 지정하고 싶을 때
위의 2가지 변환을 모두 캐스팅이라고 한다. byte -> short 로의 형변환은 1바이트에서 2바이트 즉, 크기가 커지는 캐스팅을 할 경우에 별도로 해줄 것이 없다.
반대로 short -> byte로의 형변환은 2바이트에서 1바이트, 즉 크기가 작아지는 캐스팅을 할 경우에는 복잡하다.
package Part5;
public class OperatorCasting {
public static void main(String[] args) {
OperatorCasting exam = new OperatorCasting();
exam.casting();
}
public void casting() {
byte byteValue = 127;
short shortValue = byteValue;
shortValue++;
System.out.println(shortValue);
byteValue = (byte)shortValue;
System.out.println(byteValue);
}
}
위의 코드의 결과값을 보게되면 128 , -128이 된다.
왜냐하면 shrotValue를 처음 출력할때는 short는 2바이트이기(255까지표현 가능)때문에 128보다 큰 숫자 범위를 허용한다 그래서 127에서 1 더한 128을 그대로 출력할 수 있다.
하지만 그 밑에 출력문은 byteValue를 출력할때가 문제이다. 여기서 byteValue의 값은 shortValue를 형변환 한 값인데 shrotValue는 128로 1바이트 타입인 byteValue는 127까지만 숫자 범위를 허용한다. 그래서 -128의 값이 나온것이다.
여기서 중요한 차이점은 크기가 커지는 캐스팅을 할 경우에는 ()를 이용하지 않는다. ex) short shortValue = byteValue;
크기가 작아지는 캐스팅을 할 경우에는 ()를 이용한다. ex) byteValue = (byte)shortValue;
package Part5;
public class OperatorCasting {
public static void main(String[] args) {
OperatorCasting exam = new OperatorCasting();
// exam.casting();
exam.casting2();
}
public void casting() {
byte byteValue = 127;
short shortValue = byteValue;
shortValue++;
System.out.println(shortValue);
byteValue = (byte)shortValue;
System.out.println(byteValue);
}
public void casting2() {
short shortValue = 256;
byte byteValue = (byte) shortValue;
System.out.println(byteValue);
shortValue = 255;
byteValue = (byte) shortValue;
System.out.println(byteValue);
}
}
위 코드를 보게되면 castin2의 메소드의 결과값은 0, -1 이다.
크기가 작아지는 캐스팅을 2번하게 되는데 두 번다 ()를 이용하여 형 변환을 해주었으며, 생각지도 못한 값이 출력된다.
==> 왜냐하면 256과 255는 1바이트인 byte가 허용할 수 없는 값이기 때문이다.
타입 별로 사용 가능한 연산자가 정해져 있다. 이것들은 그냥 하다보면 익혀지기 때문에 보고 넘어가자.
<정수형에서 사용할 수 있는 연산자>
<소수형 타입에서 사용할 수 있는 연산자>
<boolean 타입에서 사용할 수 있는 연산자>
<연산자의 내용>
'JAVA > 자바의신 1' 카테고리의 다른 글
7장 여러 데이터를 하나에 넣을 수는 없을까?(배열) (0) | 2022.09.03 |
---|---|
6장 제가 조건을 좀 따져요(if ,for, while, continue, break) (0) | 2022.09.03 |
4장 정보를 어디에 넣고 싶은데? (1) | 2022.09.02 |
3장 자바를 제대로 알려면 객체가 무엇인지 알아야 한다. (0) | 2022.09.02 |
2장 Hello God Of Java (0) | 2022.09.01 |