728x90
반응형
1. 수치 연산자
- 수치 연산자는 이항 연산자와 단항 연산자로 나뉜다.
* 이항 연산자: 연산을 가운데 두고 양 옆에 숫자를 넣어야 하는 연산자
* 단항 연산자: 연산자와 변수 하나만으로 구성된 형태의 연산자
1) 이항 연산자
public class Code_22 {
public static void main(String[] args)
{
int a = 30, b = 7;
int c, d, e, f, g;
c = a + b;
d = a - b;
e = a * b;
f = a % b;
g = a / b;
System.out.println("c : " + c);
System.out.println("d : " + d);
System.out.println("e : " + e);
System.out.println("f : " + f);
System.out.println("g : " + g);
}
}
//결과값
c : 37
d : 23
e : 210
f : 2
g : 4
- 기본 이항 연산자는 (+ 덧셈, - 뺄셈, * 곱셈, % 나머지, / 몫)으로 모두 5가지가 있다.
public class Code_23 {
public static void main(String[] args)
{
int n = 2753;
int a, b, c, d;
a = n / 1000;
n = n % 1000;
b = n / 100;
n = n % 100;
c = n / 10;
d = n % 10;
System.out.println("1000의 자리 : " + a);
System.out.println("100의 자리 : " + b);
System.out.println("10의 자리 : " + c);
System.out.println("1의 자리 : " + d);
}
}
//결과값
1000의 자리 : 2
100의 자리 : 7
10의 자리 : 5
1의 자리 : 3
- 연산를 이용해서 정수의 자릿수대로 떼어서 출력하는 코드를 만들 수 있다.
public class Code_24 {
public static void main(String[] args)
{
int n = 20000;
int day = n / (24 * 60 * 60);
int hour = (n/(60 * 60)) % 24;
int min = (n/60) % 60;
int sec = n % 60;
System.out.println(day +"일 "+ hour+"시간 "+ min+ "분" + sec + "초");
}
}
//결과값
0일 5시간 33분20초
- n에는 초가 저장되어 있어, n을 시, 분, 초로 바꾸어 출력하는 코드
public class Code_25 {
public static void main(String[] args)
{
double f = 72.5;
double c = (f-32.0)/1.8;
System.out.println("화씨 " + f + "도는 섭씨 " + c + "도와 같습니다.");
}
}
//결과값
화씨 72.5도는 섭씨 22.5도와 같습니다.
- F값에는 화씨 온도가 저장되어 있다.
public class Code_26 {
public static void main(String[] args)
{
int a = 7;
byte b;
short c;
b = a; //에러
c = a; //에러
}
}
- 자바의 정수 자료형 간에는 대소가 관계가 있다.
byte < short < int < long
기본적으로 큰 데이터를 자기보다 작은 데이터 공간에 저장할 수 없다.
2) 단항 연산자
public class Code_27 {
public static void main(String[] args)
{
int a = 10, b;
b = a++;
System.out.println("a : " + a);
System.out.println("b : " + b);
}
}
//결과값
a : 11
b : 10
public class Code_28 {
public static void main(String[] args)
{
int a = 10, b;
b = ++a;
System.out.println("a : " + a);
System.out.println("b : " + b);
}
}
//결과값
a : 11
b : 11
- ++ 기호가 후치형인 경우 먼저 해당 줄을 수행하고 다음 줄로 넘어가기 전에 변수의 값을 1 증가시킨다.
++ 기호가 전치인 경우 먼저 변수의 값을 1 증가시킨 후에 그 줄을 수행한다. - 코드 27번이 후치 표현이고, 코드 28번이 전치 표현이다. 결괏값을 통해 다른 값이 나온다는 걸 알 수 있다.
public class Code_29 {
public static void main(String[] args)
{
int a = 10, b = 20, c = 5, d;
d = a++ + --b + ++c;
System.out.println("a : " + a);
System.out.println("b : " + b);
System.out.println("c : " + c);
System.out.println("d : " + d);
}
}
//결과값
a : 11
b : 19
c : 6
d : 35
- d = a++ + --b + ++c;는 현재 a값 그대로 , b는 1 감소, c는 1 증가시켜서 계산을 진행하면 된다.
2. 비트 연산자
1) AND - &
public class Code_30 {
public static void main(String[] args)
{
int x = 11;
int y = 13;
int z = x & y;
System.out.println(z);
}
}
//결과값
9
- 두 정수에 & 연산을 취하면, 둘 다 1인 경우에만 1이 되고, 나머지 경우는 0이 되는 결과가 나온다.
2) OR - |
public class Code_31 {
public static void main(String[] args) {
int x = 11;
int y = 13;
int z = x | y;
System.out.println(z);
}
}
//결과값
15
- 두 정수에 | 연산을 취하면 둘 다 0인 경우에만 0이 되고 나머지는 모두 1이 된다.
3) XOR - ^
public class Code_32 {
public static void main(String[] args)
{
int x = 11;
int y = 13;
int z = x ^ y;
System.out.println(z);
}
}
//결과값
6
- 피연산자 중에서 한 개는 0이고, 다른 한 개는 1인 경우에 XOR결과는 1이 된다.
3. 시프트 연산자
- >> , >>> , << 이렇게 3가지가 있다.
public class Code_33 {
public static void main(String[] args)
{
int x = 20;
int a = 2;
int r1 = x >> a;
int r2 = x >>> a;
int r3 = x << a;
System.out.println("r1 : " + r1);
System.out.println("r2 : " + r2);
System.out.println("r3 : " + r3);
}
}
//결과값
r1 : 5
r2 : 5
r3 : 80
- 시프트 연산자보다 +또는 *연산의 사용이 쉬우나 연산 속도가 빠르다는 장점 때문에 많이 사용된다.
4. 관계 연산자
public class Code_34 {
public static void main(String[] args)
{
int a = 50, b = 30, c = 60;
boolean b1 = a > b;
boolean b2 = b > c;
boolean b3 = a >= c;
boolean b4 = b <= c;
boolean b5 = a == b;
boolean b6 = a != b;
System.out.println(b1 + " " + b2 + " " + b3);
System.out.println(b4 + " " + b5 + " " + b6);
}
}
//결과값
true false false
true false true
5. 논리 연산자
- A && B : A와 B가 모두 참인 경우에만 참이 된다.
- A || B : A와 B 중에 한 개 이상이 참이면 A || B는 참이 된다.
- !A :! 는 A가 참이면 거짓으로, A가 거짓이면 참으로 바꾸어 준다.
public class Code_35 {
public static void main(String[] args)
{
int a = 10, b = 20, c = 30, d = 15;
boolean b1 = a > b && c >d;
boolean b2 = a != b || b > c;
boolean b3 = a <= b || c <= d;
System.out.println(b1 + " " + b2 + " " + b3);
}
}
//결과값
false true true
6. 할당 연산자
- '='와 +=, -= 등이 있다.
public class Code_37 {
public static void main(String[] args)
{
int a = 20, b = 7, c = 30, d = 2, e = 8;
int x = a / b + c * d % e;
System.out.println("x = " + x);
boolean y = a > b + c && d < 8;
System.out.println("y = " + y);
int z = 100;
z += a + b - c * d / e;
System.out.println("z = " + z);
}
}
//결과값
38
2
7. 연산자 우선순위
- 산술 > 관계 > 논리 > 할당 연산자 순으로 우선순위가 있다.
public class Code_37 {
public static void main(String[] args)
{
int a = 20, b = 7, c = 30, d = 2, e = 8;
int x = a / b + c * d % e;
System.out.println("x = " + x);
boolean y = a > b + c && d < 8;
System.out.println("y = " + y);
int z = 100;
z += a + b - c * d / e;
System.out.println("z = " + z);
}
}
//결과값
x = 6
y = false
z = 120
8. 형 변환과 캐스터 연산자
1) 자동 형 변환
public class Code_38 {
public static void main(String[] args)
{
long x = 10000L;
float y;
y = x;
System.out.println("y : " + y);
double z;
z = x;
System.out.println("z : " + z);
}
}
//결과값
y : 10000.0
z : 10000.0
public class Code_39 {
public static void main(String[] args)
{
char x = 'a';
int y;
y = x;
System.out.println("y : " + y);
System.out.println("y : " + (char)y);
}
}
//결과값
y : 97
y : a
- 작은 데이터를 큰 데이터 공간에 넣을 때는 자동 형 변환이 일어난다.
2) 캐스트 변환
- (변환하고자 하는 자료형) 변수
public class Code_40 {
public static void main(String[] args)
{
byte bi, bj;
int i = 100, j = 300;
bi = (byte) i;
System.out.println("bi : " + bi);
bj = (byte) j;
System.out.println("bj : " + bj);
}
}
//결과값
bi : 100
bj : 44
public class Code_41 {
public static void main(String[] args)
{
int i;
double x = 10.5, y = 2.8;
i = (int)(x/y);
System.out.println("(int) x/y : " + i);
}
}
//결과값
(int) x/y : 3
- 정수형(bytem short, int, long) 사이에 캐스트 연산자를 사용하는 경우 숫자의 범위에 주의해야 한다.
public class Code_42 {
public static void main(String[] args)
{
byte b1 = 10, b2;
int i = 5;
b2 = (byte)(b1 + i);
System.out.println("b2 : " + b2);
}
}
//결과값
b2 : 15
728x90
반응형
'Framwork > Java기초' 카테고리의 다른 글
Chapter 6. 메소드 (0) | 2022.10.26 |
---|---|
Chapter 5. 배열과 문자열 (2) | 2022.10.23 |
Chapter 4. 조건문과 반복문 (0) | 2022.10.09 |
Chapter 2. 변수, 자료형, 주석 (1) | 2022.09.24 |
Chapter 1. 자바 시작하기 (6) | 2022.09.21 |