Java - Operator

CYSSSSSSSSS·2024년 2월 1일
0

자바

목록 보기
2/26

연산자 종류

  • 산술
  • 증감
  • 비교
  • 논리
  • 대입
  • 삼항

연산자와 피연산자

3 + 4 
a + b
  • 연산자: 연산 기호 ('+' , '-')
  • 피연산자 : 연산 대상 (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 // 최종 결과

  • 나누기를 할 때 int 자료형 끼리의 나누기 연산을 진행하면 소수점이 사라진다.
  • 나머지 연산자는 말 그대로 숫자를 나누고 생기는 나머지 이다.
  • 나누기 연산을 할 때 0으로 나누는 연산을 주의 해야 한다. (수학에서는 절대 허용안 되는 연산)

문자열 더하기

  • '+' 연산자를 통해 두개의 문자열을 붙일 수 있다.
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);
    }
}
  • 연산자 우선순위가 동급일 경우 앞에 연산 부터 시작된다.
  • 결론적으로 sum3 = sum4 같은 연산이다

연산자 우선순위 순서

  • 괄호 ()
  • 단항 연산자 (++ , -- , ! , ~ , new , (type))
  • 산술 연산자 (* , / , % , + , - )
  • Shift 연산자 (<< , >> , >>>)
  • 비교 연산자 (< , <= , > , >= , instanceof)
  • 등식 연산자 (== , !=)
  • 비트 연산자 (& , ^ , |)
  • 논리 연산자 (&& , ||)
  • 삼항 연산자 (? , :)
  • 대입 연산자 (= , += , -= , *= , /= , %=)
  • 너무 외울려고 하지는 말고 괄호를 잘 사용해서 결과값을 잘 조절하자

증감 연산자

  • ++ , -- 가 대표 연산자로 , 1 증가 하거나 감소 할때 사용한다.
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값 읽기 -> a + 1 연산 수행 -> 저장

a = 1
a = a + 1 // a 값 읽기
a = 1 + 1 // 연산 수행
a = 2 // 저장

전위 증감 연산 vs 후위 증감 연산

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 는 내용을 비교하여 일치하는지 판단하는 것이다.

논리 연산자

  • 논리 연산자인 boolean형인 true , false를 비교하는데 사용한다.

논리 연산자

  • &&(AND) 두 연산자가 같은지 판단하는 여부
  • ||(OR) 두 연산자중 하나만 true인지 여부
  • !(NOT) 피연산자의 논리적 부정을 반환 true ->false , false->true를 반환
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
    }
}
profile
개발자 되고 싶어요

0개의 댓글

관련 채용 정보