① 연산자의 종류
종류 | 연산자 | 설명 |
산술 연산자 | + - * / % << >> | 사칙 연산과 나머지 연산(%) |
비교 연산자 | > < >+ <+ == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && || ! & \ ^ ~ | '그리고(AND)'와 '또는(OR)'으로 조건을 연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type) ?: instanceof | 형변환 연산자, 삼항 연산자, instanceof연산자 |
② 연산자의 결합규칙
- 산술 > 비교 > 논리 > 대입, 대입은 제일 마지막에 수행된다.
- 단항(1) > 이항(2) > 삼항(3). 단항 연산자의 우선순위가 이항 연산자보다 높다.
- 단한 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다.
③ 증감연산자 ++와 --
- 증가 연산자(++) : 피연산자의 값을 1 증가시킨다.
감소 연산자(--) : 피연산자의 값을 1 감소시킨다.
타입 | 설명 | 사용예 |
전위형 | 값이 참조되기 전에 증가시킨다. | j=++i; |
후위형 | 값이 참조된 후에 증가시킨다. | j=i++; |
- 증감 연산자가 포함된 식을 이해하기 어려울 때는 다음과 같이 증감 연산자를 따로 떼어내면
이해하기 쉬워진다.
j = ++i; //전위형 | → | ++i; //증가 후에 j = i; //참조하여 대입 |
j = i++; //후위형 | → | j = i; //참조하여 대입 후에 i++; //증가 |
④ 형변환 연산자
- 형변환이란, 변수나 리터럴의 타입을 다른 타입으로 변환하는 것이다.
형변환 방법 : (타입)피연산자
class Ex3_5 {
public static void main(String[] args) {
doubld d= 85.4;
int score = (int) d;
System.out.println("score=" + score);
System.out.println("d=" + d);
}
}
결과
score=85
d=85.4
⑤ 자동 형변환
- 변수가 저장할 수 있는 값의 범위보다 더 큰 값을 저장하려는 경우에 형변환을 생략하면 에러가 발생한다.
float f = 1234; //float f = (float)1234;에서 (float)가 생력됨
byte b= 1000; //에러. byte타입의 범위를 벗어난 값의 대입
byte b=(byte)1000; //가능. 그러나 값 손실이 발생해서 변수 b에는 -24가 저장됨.
- 표현범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우에는 값 손실이 없으므로
두 타입 중에서 표현범위가 더 넓은 쪽으로 형변환된다.
byte (1byte) → short (2byte) / char → int (4byte) → long (8byte) → float (4byte)→ double (8byte)
화살표 방향으로의 변환은 자동 형변환이 되며, 반대 방향으로의 변환은 반드시 형변환 연산자를 써야한다.
⑥ 사칙 연산자
class Ex3_6 {
public static void main(String args[]) {
int a=10;
int b=4;
System.out.printf("%d / %d= %d%n", a, b, a / b);
System.out.printf("%d / %f = %f%n", a, (float)b, a / (float)b);
}
}
결과
10 / 4 = 2
10 / 4.000000 = 2.500000
나누기 연산자의 두 연산자가 모두 int 타입인 경우, 연산결과 역시 int 타입이다.
그래서 올바른 연산결과를 얻기 위해서는 두 피연산자 중 어느 한 쪽을 실수형으로 형변환해야 한다.
⑦ 산술 변환
- 두 피연산자의 타입을 같게 일치시킨다. ( 보다 큰 타입으로 일치)
- 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
class Ex3_8{
public static void main(String[] args) {
byte a=10;
byte b=30;
byte c= (byte)(a*b); //byte c=a+b;와 같이 적으면 에러.
System.out.println(c);
}
}
결과
44
- 크기가 작은 자료형의 변수를 큰 자료형의 변수에 저장할 때는 자동으로 형변환되지만,
반대로 큰 자료형의 값을 작은 자료형의 변수에 저장하려면 명시적으로 형변환 연산자를 사용해서 변환해야 한다.
'프로그래밍 > Java' 카테고리의 다른 글
Java_배열(1) (2) | 2022.10.05 |
---|---|
Java_조건문과 반복문(2) (0) | 2022.09.29 |
Java_조건문과 반복문(1) (0) | 2022.09.22 |
Java_연산자(2) (0) | 2022.09.14 |
Java_변수 (0) | 2022.09.01 |