연산

2022. 2. 21. 18:01·Programing/JAVA

연산 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)출력

    }

}

산술연산

  • 연산자 : +, -, *, /, %
  • ' % ' : 나머지 연산자
  • 변수 = 변수 + 값
  • 변수 += 값 (단, 변수 == 변수)
  • 연산결과가 범위를 벗어나면 에러발생
  • 자료형이 다른 연산은 큰자료형변환 후 연산
  • 정수 / 정수 => 정수
  • (double,float)정수 / (double, float)정수 => 실수 , 둘중 하나를 실수형으로 형변환
  • (int)문자 + (int)문자 가능
  • 문자열 + 문자열 가능
  • 음수 표현시 ' - ` 사용
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);


    }

}

증감연산

  • 연산자 : ++, --
  • 변수의 값을 1 증가시키거나 감소 시킴
  • 전위연산, 후위연산으로 나뉘며 대입되는 변수에 값이 다르므로 주의
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);

    }

}

비교연산

  • 두항의 관계를 나타내는 연산자
  • 연산자 : '>, >=, <, <=, ==, !='
  • = 대입연사자, == 동등비교연산자
  • 문자열의 값동등비교는 String 객체의 equals() 메소드 사용
  • 연산결과 : 논리형 boolean => true, false
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));
    }

}

논리연산

  • 수학의 논리연산과 동일
  • 연산자 : { AND : && , OR: ||, NOT : !
  • 피연산자, 결과 모두 boolean true, false 자료

이미지참조 : 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));
    }

}

비트연산

  • 비트단위(0,1)로 연산
  • 연산자 : { AND : & , OR: |, NOT : ~, 비트이동 : >>, <<
  • 2진수 출력 메서드 : Integer.toBinaryString()
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));      

    }

}

삼항연산

  • 3개의 항으로 이루어진 연산
  • 특정 조건의 true, false에 따라 조건 연산 => 조건문으로 변경 가능
  • 조건식 ? 값1(연산식) : 값2(연산식)
  • 조건식 true => 값1, false => 값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);

    }

}

깃 허브 주소 : https://github.com/bjw5035/Academy_Study

'Programing > JAVA' 카테고리의 다른 글

제어문 - 반복문 LOOP  (1) 2022.02.23
제어문 - 조건문 CONDITIONAL  (1) 2022.02.21
변수  (0) 2022.02.21
변수란?  (0) 2022.02.17
변수  (0) 2021.04.01
'Programing/JAVA' 카테고리의 다른 글
  • 제어문 - 반복문 LOOP
  • 제어문 - 조건문 CONDITIONAL
  • 변수
  • 변수란?
쿠크
쿠크
  • 쿠크
    쿠크 개발자
    쿠크
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • Kubernetes (2)
      • Programing (35)
        • JSP (3)
        • JAVA (22)
        • Spring (5)
        • HTML (5)
      • 이외 (12)
        • Git (2)
        • 임시 잡다함 (6)
        • IntelliJ (1)
        • 에러 모음 (2)
      • OS (2)
        • Docker (0)
        • Kubernetes (0)
        • Linux (2)
      • DataBase (2)
        • Mysql (1)
      • 토이 프로젝트 (0)
        • 게시판 만들기 (0)
      • Spring (0)
      • 부동산 or 주식 (0)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

    • 깃 허브 주소
  • 공지사항

  • 태그

    클래스
    Linux
    MVC
    spring
    HTML
    jsp
    spring-framwork
    Database
    에러 발생
    에러원인
    ubuntu
    상속
    MySQL
    HTTP란
    spring-framework
    java
    error
    IntelliJ
    kubernetes
    스프링 특징
  • hELLO· Designed By정상우.v4.10.3
쿠크
연산
상단으로

티스토리툴바