operation

연산종류

대입(할당)연산

package chapter04;

public class OpEx1 {

    public static void main(String[] args) {
        /*
        int a = 10;
        10 = a;     // 에러 1
        a + 1 = 10; // 에러 2
        10 = 1;     // 에러 3
        a = a + 10; // 정상
        */

        int number1 = 10;
        System.out.println("number1 = 10 -> "+number1); // 10출력


        number1 = number1;
        System.out.println("number1 = 10 -> "+number1); // 10출력

        int number2 = number1;
        System.out.printf("(number1, number2) -> (%s,%s)", number1, number2); // (10,10)출력

    }

}

산술연산

package chapter04;

public class OpEx1 {

    public static void main(String[] args) {

        int number1 = 10;
        System.out.println("number1 = 10 -> "+number1); // 10출력

        int number2 = number1;
        System.out.printf("(number1, number2) -> (%s,%s)", number1, number2); // (10,10)출력

        number1 = number1 + 10;
        number1 += 10; // 더하고 대입
        System.out.println("number1 += 10 -> "+number1);

        number1 = number1 - 10;
        number1 -= 10; // 빼고 대입
        System.out.println("number1 -= 10 -> "+number1); 

        number1 = number1 * 2;
        number1 *= 2; // 곱하고 대입
        System.out.println("number1 *= 2 -> "+number1); 

        number1 = number1 / 2;
        number1 /= 2; // 나누고 대입
        System.out.println("number1 /= 2 -> "+number1);

        number1 = number1 % 3 ;
        number1 %= 3 ; // 나머지 대입
        System.out.println("number1 %= 3 -> "+number1); 


    }

}
package chapter04;

public class OpEx2 {

    public static void main(String[] args) {


        // 결과값이 실수로 연산되게하는 방법
        int a = 10;
        int b = 4;
        System.out.println("10 / 4 = " + a / b);
        System.out.println("10 / 4 = " + (double)a / b);


        // char 연산
        char c1 = 'a';
        char c2 = 'b';
        int c3 = c1 + c2; // 자동형변환
        int c4 = (int)c1 + (int)c2; // 강제형변환
        System.out.println("c3 = " + c3);
        System.out.println("c4 = " + c4);

        // 문자열 덧셈

        String s1 = "Hello";
        String s2 = "World!!";
        String s3 = s1 + " " + s2;
        System.out.println(s3);

        // 음수 사용
        int c = -a;     
        System.out.println("c = " + c);


    }

}

증감연산

package chapter04;

public class OpEx3 {

    public static void main(String[] args) {

        int a = 10;
        int b;

        a = a + 1;
        a += 1;     
        ++a; // 전위연산
        a--; // 후위연산
        System.out.println(a);

        // 전위,후위 연산 차이

        a = 10;
        b = a++;
        System.out.printf("(a,b)= (%s,%s)", a,b);
        System.out.println();
        b = ++a;
        System.out.printf("(a,b)= (%s,%s)", a,b);

    }

}

비교연산

package chapter04;

public class OpEx4 {

    public static void main(String[] args) {

        int a = 10;
        int b = 5;

        System.out.println(a > b);  // true
        System.out.println(a >= b); // true
        System.out.println(a < b);  // false
        System.out.println(a <= b); // false
        System.out.println(a == b); // false
        System.out.println(a != b); // true

        boolean c = a == b; // c 변수에 결과값 대입
        System.out.println("c = "+c);
        boolean d = c == false; // d 변수에 결과값 대입
        System.out.println("d = "+d);

        String myName = "bar";
        String yourName = "bar";
        System.out.println(myName == yourName);
    }

}
package chapter04;

import java.util.Scanner;

public class OpEx4_1 {

    public static void main(String[] args) {

        // String 값 비교
        // 리터럴
        String myName = "bar";
        String yourName = "bar";
        System.out.println(myName == yourName); // true
        System.out.println(myName.equals(yourName)); // true

        // 생성자 
        myName = new String("foo");
        yourName = new String("foo");
        System.out.println(myName == yourName); // false
        System.out.println(myName.equals(yourName)); // true

                // hashCode() : 값이 같으면 주소를 같은 해시값으로 생성 
        System.out.println(myName.hashCode() + "/" + yourName.hashCode()); // 같다

                // System.identityHashCode(Object o) : 실제 생성된 주소를 해시값으로 생성
                System.out.println(System.identityHashCode(myName)); // 다르다
                System.out.println(System.identityHashCode(yourName)); // 다르다

        // 외부 입력
        System.out.println("name input > ");
        Scanner scan = new Scanner(System.in);
        myName = scan.next();
        yourName = scan.next();
        System.out.println(myName == yourName); // false
        System.out.println(myName.equals(yourName)); // true
        System.out.println(myName.hashCode() + "/" + yourName.hashCode());
                System.out.println(System.identityHashCode(myName));
                System.out.println(System.identityHashCode(yourName));
    }

}

논리연산

이미지참조 : https://medium.com/@katekim720/%EC%97%B0%EC%82%B0%EC%9E%90%EB%B6%80%ED%84%B0-%EC%A1%B0%EA%B1%B4-%EB%B0%98%EB%B3%B5%EB%AC%B8%EA%B9%8C%EC%A7%80-3d5cec6513d4
package chapter04;

public class OpEx5 {

    public static void main(String[] args) {

        int a = 10;
        int b = 5;

        // AND 연산
        System.out.println(a > b && a == 10);   // true
        System.out.println(a > b && a == b);    // false

        // OR 연산
        System.out.println(a > b || a == b);    // true
        System.out.println(a < b || a == b);    // false

        // XOR 연산
        System.out.println(a > b ^ a == 10);    // false
        System.out.println(a > b ^ a == b);     // true

        // NOT 연산
        System.out.println(!(a > b));   // false
        System.out.println(!(a < b));   // true


    }

}
package chapter04;

public class OpEx5_3 {

    public static void main(String[] args) {

        int a = 10;
        int b = 0;

        // && 연산 - 첫항이 flase이면 다음항 연산 안함 
        System.out.println(b > 0 && (a / b > 0));

        // || 연산 - 첫항이  true이면 다음항 연산 안함
        System.out.println(b == 0 || (a / b > 0));
    }

}

비트연산

package chapter04;

public class OpEx6_1 {

    public static void main(String[] args) {

        System.out.println("2:"+Integer.toBinaryString(2)); // 10진수 2를 2진수로 변환
        System.out.println("3:"+Integer.toBinaryString(3)); // 10진수 3을 2진수로 변환

        // 비트 논리연산
        System.out.println("2&3 : "+(2&3));
        System.out.println("2|3 : "+(2|3));
        System.out.println("2^3 : "+(2^3)); // XOR
        System.out.println("~3 : "+~3);

        // << 연산
        System.out.println(3 << 2);
        System.out.println("3의   이진수 : "+Integer.toBinaryString(3));
        System.out.println("12의 이진수 : "+Integer.toBinaryString(12));

        // >> 연산
        System.out.println(8 >> 2);
        System.out.println("8의   이진수 : "+Integer.toBinaryString(8));
        System.out.println("2의 이진수 : "+Integer.toBinaryString(2));      

    }

}

삼항연산

package chapter04;

public class OpEx7 {

    public static void main(String[] args) {

        int score = 80;
        String pass = score >= 60 ? "합격 " : "불합격";
        System.out.println(pass);

    }

}

문자열 연산

package chapter04;

public class OpEx8 {

    public static void main(String[] args) {

        String name = "홍길동";
        System.out.println("안녕하세요 " + name + " 입니다.");

        int height = 180;
        System.out.println("저의 키는 " + height + "cm입니다.");

        // String weight = 75.5; // 에러발생 (문자자료형 변수에는 숫자 대입 못함)
        String weight = 75.5 + "";
        System.out.println("제 몸무게는 " + weight + "kg입니다.");

        int ageInt = 30;        // 정수
        String ageStr = "30";   // 문자열


    }

}

연산자 우선순위

package chapter04;

public class OpEx9 {

    public static void main(String[] args) {

        int a = 5;
        int b = 4;
        int c = 3;

        // * 연산이 먼저 실행됨
        System.out.println(a + b * c);

        // 괄호로 묶어 우선순위를 높여줌
        System.out.println((a + b) * c);

    }

}