데이터 종류 링크참조 : https://develop-pie.tistory.com/39
각각의 변수 에다가 기본타입이던 참조 타입이던 데이터를 저장 하였다! 왜? 나중에 사용하려고
이데이터를 사용하는 여러가지 방법이 있는데 그 첫번째로 산술 연산자 이용해서 사칙연산하는 작업을 하고 싶을때 사용하는 기호를 확인 해보자
1)산술 연산자
사칙연산을 하는 연산자
연산자 | 예제 | 설명 |
+ | 10 + 2 | 더하기 |
- | 10 - 2 | 빼기 |
* | 10 * 2 | 곱하기 |
/ | 10 / 2 | 나누기 |
% | 10 % 2 | 나머지 값 구하기 |
2) 증감 연산자
변수의 값을 1씩 증가 또는 감소하는 연산자
연산자시 ++a / a++ 이렇게 앞에 ++가 나오던 뒤에 ++가 나오던 상관이 없
연산자 | 예제 | 설명 |
++ | ++a / a++ | 1 증가하기 |
-- | --a / a-- | 1 감소하기 |
증감 연산자의 위치에 따라 결과값이 다르게 동작되는 경우
"증감 연산자 쓸때 조심할 내용 CASE1/ CASE2 비교"
CASE1
int a = 10; // int a란 변수를 선언했다 값은 10이 들어있다
int b = 0; // b라는 변수를 선언했다 값은 0이 들어있다
b = ++a; // b라는 변수에다 ++a값을 저장을 하는데 어떻게 저장을 하냐면
// a변수값을 ++ 해서 저장을 하라고 하였다 그런데 얘는 ++가 앞에 붙어있다
// ++가 앞에 붙어있을때와 뒤에 붙어 있을때 차이점이 있는데 a는 10인데
// a를 먼저 1 증가를 시켰다 (a = a + 1)
//그리고 나서 b에다가 a를 집어 넣었다 ( b = a )
// 그러면 a도 11이 되고 b도 11이 된다
// 그런데 아래 case2에 있는 a++ 뒤에 붙어 있는걸 봐보면!
CASE2
int a = 10;
int b = 0;
b = a++; // ++가 뒤에 붙어있다
// a다음에 a++ 이렇게 되어 있는경우에는 b에다가 a를 먼저 넣는다 ( b = a )
// 그리고 나서 a에다가 a를 1증가 시킨다 ( a = a + 1 )
// 그럼 b에는 여전히 10이 들어가 있고 a에는 11이 들어가 있다
위에서 봤듯이 증감연산자를 쓸때 조심해야 할 것은 혼자만 쓰면 괜찮은데
b = ++a; 처럼 그 증감연산(++a)을 한후에 누군가에게(b) 값이 들어간다 그러면 앞에주느냐(++a) 뒤에주느냐(a++) 에 따라서 차이가 있으니 고려해서 사용을 해야한다
3) 비교 연산자
~ 인지 아닌지 판단하는 연산자 (boolean 타입)
// 비교 연산자는 비교를 한 다음에 결과 값이 boolean 타입인 true아니면 false가 나와야 한
연산자 | 예제 | 설명 |
> | a > b | a가 b보다 큰 값인지 판단 |
< | a < b | a가 b보다 작은 값인지 판단 |
>= | a >= b | a가 b보다 같거나 큰 값인지 판단 |
<= | a <= b | a가 b보다 같거나 작은 값인지 판단 |
== | a == b | a가 b보다 같은 값인지 판단 |
!= | a != b | a가 b보다 다른 값인지 판 |
4) 부호 연산자
숫자의 부호를 음수 또는 양수로 지정하는 연산자
// 우리가 양수 음수를 나타나낼때 표현
연산자 | 예제 | 설명 |
- | +a | 양수로 지정 |
+ | -a | 음수로 지정 |
5)대입 연산자
계산식이 처리된 후 처리된 값을 어떤 변수에 저장할 때 식을 간단하게 표현할 수 있도록 하는 연산자
// 대입연산자는 계산을한 다음에 값을 집어넣는걸 축약해서 쓰게 대입연산자다
연산자 | 예제 | 설명 |
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a= a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
a = a + b 해석 : 이건 뭐를 줄여쓴거냐면 a 에다가 저장해라 뭐를? a + b를 해서 저장해라 라는것을 축약(설명)해서 썻다 그 아래로 나머지도(a - b,a * b 등...) 축약해서 쓰는게 가능하다
6)조건 연산자
데이터 중에서 특정 조건에 맞는 데이터만선택하기 위한 연산자
// 일반적으로 AND 연산자와 OR 연산자 를 조건연산 이라고 한다 즉, 여러개의 조건을 줬을때 결과값을
// true false를 나오게 해야하는 조건을 따로 지정할수 있다
연산자 | 예제 | 설명 |
& | gender == 'F' & balance >= 1000000000 | 성별이 여자이고 잔액이 10억 이상 |
&& | gender == 'F' && balance >= 1000000000 | 성별이 여자이고 잔액이 10억 이상 |
| | gender == 'F' | balance >= 1000000000 | 성별이 여자이거나 잔액이 10억 이상 |
|| | gender == 'F' || balance >= 1000000000 | 성별이 여자이거나 잔액이 10억 이상 |
&, && AND연산자 : gender 가 F야? 라고 물어보고 있고 balance값이 1000000000이 값보다 크거나 같냐라고 물어보고 있다 근데 엔드연산자를 썼다면 gender == 'F' 와 balance >= 1000000000 가 true여만 true값을 받겠다 라고 할때 쓰는 연산자 모든 식이 true여만 true가 나온다
|, || OR 연산자 : gender == 'F' 와 balance >= 1000000000 인 조건식 중에서 하나라도 true가 있으면 결과값을 true로 받겠다 라고 하였을때 쓴느게 OR연산자
Q 나이가 20~60세 사이 데이터만 선택하고 싶을 때?
조건1 : 나이가 20세 이상이다. age >= 20
조건2 : 나이가 60세 이하이다. age <= 60
7) 부정 연산자
boolean 타입의 값을 서로 변환해주는 기능으로, ! 기호를 사용함
// java에서 부정 연산자는 ! (not)이란 연산자인데 이거는 느낌표 하나 주면된다
// 그러면 true는 false로.... false는 true로... 이렇게 변환 시켜주는게 not 연산자이다.
!연산자
true인 경우 | false인 경우 | |
false 변환 | true 변환 |
연산자 | 예제 | 설명 |
! | !isOn | true -> false false => true |
풀이 : !isOn 이라는 변수가 있는데 isOn변수가 boolean타입이라고 가정하자 그리고 나서 앞에다가 !(not)을 붙였다. 그러면 만약에 isOn 이라는 변수가 true가 들어 있었다면 그러면 결과값은 false로 바뀌고
isOn 이라는 변수가 false로 들어있다 그러면 결과값은 true로 바뀐다
8) 비트 연산자
정수 타입의 데이터를 2진수로 계산하는 연산자(정수형 데이터에서만 사용)
// 여지껏 10진수로 작업을 했는데 2진수로 즉, 1과0으로 되어있는 2진수로 숫자를 바꿔서 연산하는 것을
//비트연산자 라고 한다.
비트 연산자 사용처?
1. 볶잡한 계산 2. 그래픽에 관련된 부분 등
비트연산자를 사용하면 속도가 빠르다 그럴 비트연산이 필요하다
2진수는 0와 1로 표현됨 (비트연산은 10진수가 아니라 2진수로 계산한다)
10진수 12를 2진수로 변환하는 방법
설명: 10진수 12이다 라고한다면 2로 나누어진 나머지 값들을 1,-1,-0,-0 이렇게 구한 다음에
그거를 우리가 1바이트(byte)를 표현할때는 8비트(bit)가 표현이 되기 때문에
8비트(bit) 부분에다가 00001100이라고 넣어놨다 아까 1100이라고 넣었고 그에대한 나머지는 0으로 채워주고
자바는 첫번째 비트(bit) 는 " 부호연산" 이라고 해서 이숫자가 양수다 그러면 0으로 음수다 하면 1로 표현을 한다
그래서 10진수에서 2진수로 표현하는 방법은 그렇게 어렵지 않은데
위에서 2진수로 표현한 데이터를 가지고 연산을 하게 되는데
첫번째 연산을 할때 양수값을 음수 값으로 표현할 때는 양의 비트 값을 다음과 같이 변환하는데 컴퓨터 에서는 규칙이 있다
설명 : 일단 양수값(00001100) 에서 0과 1을 서로 변환(바꾼) 하고 마지막에 1을 더하면 그게
-12 즉, 양수를 음수로 바꿔주는 방법이
AND 비트 연산 (0과 1로만 표현을 한다)
- 비트 AND 연산자: &
- 연산에 참여하는 비트 값이 모두 1이어야만 결과 값이 1이 리턴
비트1 | 비트2 | 결과 값 |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
OR 비트 연산 (0과 1로만 표현을 한다)
- 비트 OR 연산자: |
- 연산에 참여하는 비트 값이 하나라도 1이면 결과 값이 1이 리
비트1 | 비트2 | 결과 값 |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
XOR 비트 연산 (익스클루시브오아 는 0과 1로만 표현을 한다)
- 비트 XOR 연산자: ^
- 연산에 참여하는 비트 값이 서로 다른 경우에만 결과 값이 1
비트1 | 비트2 | 결과 값 |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
비트 부정 연산
- 비트 부정 연산자: ~
- 비트의 값을 1은 0으로, 0은 1로 변환, 부호도 변경
비트 이동 연산(곱하기,나누기 할때 이용하면 쉽게 할 수 있다 속도도 빠르고)
- 비트의 위치를 왼쪽 또는 오른쪽으로 이동시킴
- 시프트 연산자
연산자 | 설명 |
<< | 왼쪽으로 비트 이동, 이동된 곳은 0으로 채워짐 |
>> | 오른쪽으로 비트 이동, 이동된 곳은 부호 비트로 채워짐 |
>>> | 오른쪽으로 비트 이동, 이동된 곳은 무조건 0으로 채워짐 |
숫자 n만큼 왼쪽으로 이동: 원래 값에 * 2n
숫자 n만큼 오른쪽으로 이동: 원래 값에 / 2n
9)삼항 연산자
조건식이 true인 경우와 false인 경우 서로 다른 값을 변수에 저장할 때 사용
변수 = 조건? 값1 : 값2
조건 : true또는 false의 결과값이 나오는 식
값1 : 조건이 true 였을 때 변수에 저장되는 값
값2 : 조건이 false 였을 때 변수에 저장되는 값
char c = 'F';
String gender = (c == 'F')? "여자" : "남자"; //(c == 'F') c가 f냐 라고 물어보고 있다.
// 여자(true) 두번째 데이터가 남자(false) 인데
// 그렇다면 F다 라고 하면 여자(true)이라는 것을 gender에다 집어넣고
// F가 아니다 라고 하면 남자(false)를 집어 넣어라
조건에 따라서 변수에 대입하는 값을 true / false로 나누어서 집어넣고 싶을때 사용하는 것이 삼항연산자
'JAVA' 카테고리의 다른 글
클래스 객체 (0) | 2023.02.10 |
---|---|
java 데이터 타입 변환 (0) | 2023.02.10 |
java 데이터 종류 Data type (0) | 2023.02.09 |
변수 기본 (variable) (0) | 2023.02.09 |
명령행 매개 변수 (0) | 2023.02.05 |