연산

2022. 2. 21. 18:01·Programing/JAVA
목차
  1. 연산종류
  2. 대입(할당)연산
  3. 산술연산
  4. 증감연산
  5. 비교연산
  6. 논리연산
  7. 비트연산
  8. 삼항연산
  9. 문자열 연산
  10. 연산자 우선순위

연산 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
  1. 연산종류
  2. 대입(할당)연산
  3. 산술연산
  4. 증감연산
  5. 비교연산
  6. 논리연산
  7. 비트연산
  8. 삼항연산
  9. 문자열 연산
  10. 연산자 우선순위
'Programing/JAVA' 카테고리의 다른 글
  • 제어문 - 반복문 LOOP
  • 제어문 - 조건문 CONDITIONAL
  • 변수
  • 변수란?
쿠크
쿠크
  • 쿠크
    쿠크 개발자
    쿠크
  • 전체
    오늘
    어제
    • 분류 전체보기 (96) N
      • Programing (39) N
        • JSP (3)
        • JAVA (24) N
        • Spring (7) N
        • HTML (5)
      • 이외 (14)
        • Git (4)
        • 임시 잡다함 (6)
        • IntelliJ (1)
        • 에러 모음 (2)
      • OS (18) N
        • Docker (1)
        • Kubernetes (8) N
        • Linux (7) N
        • DevOps (2) N
      • DataBase (2)
        • Mysql (1)
      • 토이 프로젝트 (0)
        • 게시판 만들기 (0)
      • Spring (0)
      • 건강 & 생활 (12) N
        • 여름 건강 (12) N
      • 공부 · 자격증 (1)
      • 명언과 루틴 (3) N
      • 부동산 or 주식 (3)
        • 부동산 (1)
        • 주식 (2)
      • 경제 (4) N
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

    • 깃 허브 주소
  • 공지사항

  • 태그

    MySQL
    kubernetes
    쿠버네티스
    spring-framwork
    MVC
    IntelliJ
    물2리터 #수분섭취 #건강관리 #생활습관 #물마시기 #하루습관
    error
    java
    jsp
    Database
    HTML
    spring
    클래스
    Linux
    ubuntu
    데브옵스
    상속
    냉방병 #여름건강 #에어컨 #여름질병예방 #여름라이프 #건강관리
    DevOps
  • hELLO· Designed By정상우.v4.10.3
쿠크
연산

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.