김영한 자바 입문 - 3
연산자 사용 예시
public class Operator1 {
public static void main(String[] args) {
int a = 5;
int b = 2;
int sum = a + b;
System.out.println("a + b = " + sum); // a + b = 7 출력
}
}
- 자바에서는 int 형태인 sum을 string 형태로 자동 변환해주므로 오류가 발생하지 않음
(파이썬이나 C++같은 언어는 자동 변환을 해주지 않아서 string과 int 데이터 사이 +를 넣으면 오류가 발생함)
나눗셈 연산자
// 나눗셈
int div = a / b;
System.out.println("a / b = " + div); // a / b = 2 출력
- int 형끼리 계산을 하면 결과값도 int형으로 나옴 (따라서 출력값은 2.5가 아닌 2)
int a = 10;
int b = 0;
int div = a / b;
System.out.println("a / b = " + div); // ArithmetException 오류 발생 후 실행이 멈춤
- 0으로 수를 나누는 것은 수학적으로도 불가능하므로 프로그래밍에서도 불가능함
- ArithmetException이 발생하면 실행이 멈추므로 뒤에 있는 코드가 실행되지 않음
연산자 우선순위
int sum3 = 2 * 2 + 3 * 3 //13
int sum4 = (2 * 2) + (3 * 3) //13
- 두 값의 연산순서는 똑같지만 가독성을 위해 sum4와 같이 괄호를 사용하는 편이 권장됨
(코드가 길어도 단순한 것이 유지보수하기 쉬움)
>>>연산자 우선순위가 조금이라도 복잡하거나 애매하면 괄호 사용하기!
전위 증감 연산자, 후위 증감 연산자
public static void main(String[] args) {
//전위 증감 연산자 사용 예시
int a = 1;
int b = 0;
b = ++a; //a의 값을 먼저 증가시키고, 그 결과를 b에 대입
System.out.println("a = " + a + " , b = " + b);
//a = 2, b = 2
//후위 증감 연산자 사용 예시
a = 1;
b = 0;
b = a++;
System.out.println("a = " + a + " , b = " + b);
//a = 2, b = 1
}
- 전위 증가 연산자: a의 값 1 증가 (a = 2) → a값을 b에 대입 (b = 2) >>> 연산 후 대입
- 후위 증가 연산자: a값을 b에 대입 (b = 1) → a의 값 1 증가 (a = 2) >>> 대입 후 연산
++a;
a++;
- 증감 연산자를 단독으로 쓰면 본인의 값만 증가함. 따라서 위의 값은 둘 다 동일
비교 연산자
: 비교 연산자의 결과값은 무조건 boolean형으로 나옴
- 문자열을 비교할 때는 ==와 같은 연산자가 아닌 .equals() 메서드를 사용
public static void main(String[] args) {
String str1 = "문자열1";
String str2 = "문자열2";
boolean result1 = "hello".equals("hello"); //리터럴 비교
boolean result2 = str1.equals("문자열1"); //문자열 변수, 리터럴 비교
boolean result3 = str1.equals(str2); // 문자열 변수 비교
System.out.println(result1); //true
System.out.println(result2); //true
System.out.println(result3); //false
}
- 리터럴 비교: 직접 문자열을 입력하여 비교
논리 연산자
: boolean형을 비교하는 데 사용
- 비트 연산자는 실무에서 거의 사용하지 않음(사용해도 하드웨어 쪽이나 사용 가능성 있음)