3 + 4
a + b
- , - , * , / , %
package operator;
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); // 문자열 + 숫자 형식으로 출력 가능
// 뺼셈
int diff = a-b;
System.out.println("a - b = " + diff);
// 곱셈
int multi = a * b;
System.out.println("a * b = " + multi);
// 나누기
int div = a / b;
System.out.println("a / b = " + div); // 원래는 2.5로 나와야 하지만 int 형 끼리의 계산이기 떄문에 소수점 표현이 안된다.
// 나머지
int mod = a % b;
System.out.println("a % b = " + mod); // 몫을 나누고 난 후에 나머지
}
}
연산 과정
int sum = a + b // 변수 값 읽기 (a,b 초기화 된 값 찾기)
int sum = 5 + 2 // 변수 값 계산
int sum = 7 // 계산 결과를 sum 변수에 대입
sum = 7 // 최종 결과
package operator;
public class Operator2 {
public static void main(String[] args) {
// 문자열과 문자열 더하기
String s1 = "hello";
String s2 = "world";
System.out.println(s1 + s2);
// 문자열과 숫자 더하기
String result3 = "a + b + " + 10; // 문자와 숫자를 더할 때 는 숫자를 문자로 바꿔서 붙인다
System.out.println(result3);
// 문자열과 숫자 더하기2
int num = 20; // 숫자
String str = "a + b = "; // 문자
String result4 = str + num; // 문자 + 숫자 -> 숫자는 문자로 바뀐다.
System.out.println(result4);
}
}
연산 과정
"a + b = "(String) + 10(int)
"a + b = "(String) + "10"(int -> String)
"a + b = " + "10" // 문자열 + 문자열 붙이기
"a + b = 10" // 결과str(String) + num(int)
"a + b = "(String) + num(int) // str 변수에서 값 조회
"a + b = "(String) + 20(int) // num 변수에서 값을 조회
"a + b = "(String) + "20"(String) // 숫자를 문자로 변환
"a + b = 20" // 결과
package operator;
public class Operator3 {
public static void main(String[] args) {
int sum1 = 1 + 2 * 3; // 1 + (2 * 3)
int sum2 = (1+2) * 3;
System.out.println("Sum1 = " + sum1);
System.out.println("Sum2 = " + sum2);
}
}
package operator;
public class Operator4 {
public static void main(String[] args) {
int sum3 = 2 * 2 + 3 * 3;
int sum4 = (2 * 2) + (3 * 3);
System.out.println("sum3 = " + sum3);
System.out.println("sum4 = " + sum4);
}
}
연산자 우선순위 순서
- 괄호 ()
- 단항 연산자 (++ , -- , ! , ~ , new , (type))
- 산술 연산자 (* , / , % , + , - )
- Shift 연산자 (<< , >> , >>>)
- 비교 연산자 (< , <= , > , >= , instanceof)
- 등식 연산자 (== , !=)
- 비트 연산자 (& , ^ , |)
- 논리 연산자 (&& , ||)
- 삼항 연산자 (? , :)
- 대입 연산자 (= , += , -= , *= , /= , %=)
package operator;
public class OperatorAdd1 {
public static void main(String[] args) {
int a = 0;
a = a + 1;
System.out.println("a = " + a);
a = 1 + 1;
System.out.println("a = " + a);
// 증감 연산자
++a; // a = a + 1
System.out.println("a = " + a);// 3
++a;
System.out.println("a = " + a); // 4
}
}
연산 과정
a = 0
a = a + 1 // a의 값 읽기
a = 0 + 1 // 연산 수행
a = 1
a = 1
a = a + 1 // a 값 읽기
a = 1 + 1 // 연산 수행
a = 2 // 저장
package operator;
public class OperatorAdd2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
System.out.println("전위 증감 연산 수행");
System.out.println("a = " + a); // a = 1
System.out.println("b = " + b); // b = 0
// 전위 연산
b = ++a; // a를 먼저 증가시키고 b에 저장한다 즉 증가된 a 값을 b에 초기화 한다.
System.out.println("a = " + a); // a = 2
System.out.println("b = " + b); // b = 2
System.out.println("--------------------------------------------------------");
System.out.println("후위 증감 연산 수행");
// 후위 증감 연산자
a = 1; // a = 1
b = 0; // b = 0
System.out.println("a = " + a); // a = 1
System.out.println("b = " + b); // b = 0
b = a++; // a를 b에 먼저 대입하고 그 다음에 a를 증가
System.out.println("a = " + a); // a = 2
System.out.println("b = " + b); // b = 1
}
}
전위 증감 연산
a = 1;
b = 0;
b = ++a;
a = a + 1 // a값 읽기
a = 1 + 1 // a값 증가
b = a // 증가된 a값을 읽기
b = 2 // 증가된 a값 저장
후위 증감 연산
a = 1;
b = 0;
b = a++;
b = a // 기존에 a를 읽기
b = 1 // a값을 저장
a = a + 1 // a값을 읽기
a = 1 + 1 // a값을 증가
a = 2 // a 값을 저장
"==" (동등)
"!=" (불일치)
">" (크다)
"<" (작다)
">="(크거나 같다)
"<="(작거나 같다)
비교 연산자의 결과는 항상 true or false가 나온다.(boolean)
"="은 대입 연산자 / "=="은 비교 연산자
"!=" 불일치 여부 확인 비교 연산자 이다.
package operator;
public class Comp1 {
public static void main(String[] args) {
int a = 2;
int b = 3;
System.out.println(a == b); // 2 != 3 이기 때문에 false
System.out.println(a != b); // 2 != 3 이기 때문에 true
System.out.println(a > b); // false
System.out.println(a < b); // true
System.out.println(a >= b); // false
System.out.println(a <= b); // true
boolean result = a == b; // 결과 값이 boolean 이기때문에 boolean 자료형에 대입하여 사용가능하다
System.out.println(result); // false
}
}
package operator;
public class Comp2 {
public static void main(String[] args) {
String str1 = "문자열1";
String str2 = "문자열1";
boolean result2 = "hello".equals("hello"); // 문자열 리터럴 비교
boolean result3 = str1.equals("문자열1");// 문자열 변수 , 리터럴 비교
boolean result4 = str1.equals(str2); // 문자열 변수 끼리 같은가
System.out.println(result2);
System.out.println(result3);
System.out.println(result4);
}
}
문자열을 비교할때는 .equals 라는 매서드를 이용한다.
리터럴 끼리 비교 , 문자열 변수 리터럴 비교 , 문자열 변수 끼리 비교
문자열 비교 할때는 "==" 비교 연산자는 사용하면 안된다.
자바에서 equals 와 == 은 차이는 == 은 객체의 주소를 비교하여 일치하는지 확인 하는것 equals 는 내용을 비교하여 일치하는지 판단하는 것이다.
package operator;
public class Logical1 {
public static void main(String[] args) {
System.out.println("&& AND 연산");
System.out.println(true && true); // true
System.out.println(true && false); // false
System.out.println(false && false); // false
System.out.println("|| or 연산");
System.out.println(true || true); // true
System.out.println(true || false); // true
System.out.println(false || false); // false
System.out.println("! 연산");
System.out.println(!true); // false
System.out.println(!false); // true
System.out.println("변수 활용");
boolean a = true;
boolean b = false;
System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!a); // false
System.out.println(!b); // true
}
}
package operator;
public class Logical2 {
public static void main(String[] args) {
int a = 15;
// a 는 10 보다 크고 20 보다 작다
boolean result = 10 < a && a <20;
System.out.println("result = " + result);
}
}
package operator;
public class Assign1 {
public static void main(String[] args) {
int a = 5;
a += 3; // a = a + 3 이랑 똑같은 연산이다
System.out.println(a); // 8
a-= 2; // a = a - 2
System.out.println(a); // 6
a*= 4; // a = a * 4
System.out.println(a); // 24
a/=3; // a = a / 3
System.out.println(a); // 8
a %=5; // a = a % 5
System.out.println(a); // 3
}
}