연산자 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
 
'''연산자'''(operator)는 대부분 기본 자료형의 사칙연산 등의 계산을 위해 사용하는 것으로 기본 자료형을 제외한 참조 자료형은 연산자를 사용할 수 없다.
 
'''연산자'''(operator)는 대부분 기본 자료형의 사칙연산 등의 계산을 위해 사용하는 것으로 기본 자료형을 제외한 참조 자료형은 연산자를 사용할 수 없다.
단, 예외로 String 클래스는 + 연산이 가능하다.<ref>〈[https://onsil-thegreenhouse.github.io/programming/java/2017/11/02/java_tutorial_1-4/ 연산자 개념]〉, 《Github-Onsil's blog》, 2017-11-02</ref> 주로 어떤 연산을 할지 지정하는 것을 연산자라하고, 연산의 대상이 되는 것을 피연산자라고 한다. 연산자는 작업의 종류에 따라서 [[대입연산자]], [[산술연산자]], [[비교연산자]], [[논리연산자]] 등으로 나뉜다.<ref name="연산자 개념 및 예시">〈[https://terms.naver.com/entry.nhn?docId=4383177&cid=59941&categoryId=59941 연산자 개념 및 예시]〉, 《네이버 지식백과》</ref>
+
단, 예외로 String 클래스는 + 연산이 가능하다.<ref>〈[https://onsil-thegreenhouse.github.io/programming/java/2017/11/02/java_tutorial_1-4/ 연산자 개념]〉, 《Github-Onsil's blog》, 2017-11-02</ref> 주로 어떤 연산을 할지 지정하는 것을 연산자라하고, 연산의 대상이 되는 것을 피연산자라고 한다. 연산자는 작업의 종류에 따라서 대입 연산자, 산술 연산자, 비교 연산자, 논리 연산자 등으로 나뉜다.<ref name="연산자 개념 및 예시">〈[https://terms.naver.com/entry.nhn?docId=4383177&cid=59941&categoryId=59941 연산자 개념 및 예시]〉, 《네이버 지식백과》</ref>
  
 
== 개요 ==
 
== 개요 ==
어떤 연산을 할지 지정하는 것을 연산자 연산의 대상이 되는 것을 피연산자라고 한다. 예를 들어, x + y가 있을 때, +는 연산자에 x, y는 피연산자에 해당된다.<ref name="연산자 개념 및 예시"></ref> 논리 부정처럼 피연산자가 한 개만 필요하면 단항연산자, +처럼 피연산자가 두 개 있으면 이항연산자, 세 개 있으면 삼항연산자라고 한다.<ref name="연산자">〈[https://book.naver.com/bookdb/book_detail.nhn?bid=15766742 연산자]〉, 《2020 시나공 정보처리기사 필기》, 2019-11-13</ref>
+
어떤 연산을 할지 지정하는 것을 연산자 연산의 대상이 되는 것을 피연산자라고 한다. 예를 들어, x + y가 있을 때, +는 연산자에 x, y는 피연산자에 해당된다.<ref name="연산자 개념 및 예시"></ref> 논리 부정처럼 피연산자가 한 개만 필요하면 단항 연산자, +처럼 피연산자가 두 개 있으면 이항 연산자, 세 개 있으면 삼항 연산자라고 한다.<ref name="연산자">〈[https://book.naver.com/bookdb/book_detail.nhn?bid=15766742 연산자]〉, 《2020 시나공 정보처리기사 필기》, 2019-11-13</ref>
  
하나의 연산식에 여러 개의 연산이 사용되었을 경우 어떤 것을 먼저 처리할지 정하기 위해 우선순위가 있다. 가장 처음으로는 최고 순위에 있는 (),[]가 처리되고, 단항연산자, 이항연산자, 삼항연산자, 대입연산자, 순서연산자 순으로 처리가 된다. 이항연산자의 경우 산술, 시프트, 관계, 비트, 논리연산자가 이에 해당하며 결합 규칙은 왼쪽에서 오른쪽이다. 삼항연산자의 경우 조건연산자가 해당되며 결합 규칙은 이항연산자와 동일하다.
+
하나의 연산식에 여러 개의 연산이 사용되었을 경우 어떤 것을 먼저 처리할지 정하기 위해 우선순위가 있다. 가장 처음으로는 최고 순위에 있는 (),[]가 처리되고, 단항 연산자, 이항 연산자, 삼항 연산자, 대입 연산자, 순서 연산자 순으로 처리가 된다. 이항 연산자의 경우 산술, 시프트, 관계, 비트, 논리 연산자가 이에 해당하며 결합 규칙은 왼쪽에서 오른쪽이다. 삼항 연산자의 경우 조건 연산자가 해당되며 결합 규칙은 이항 연산자와 동일하다.
  
 
== 특징 ==
 
== 특징 ==
 
===우선순위===
 
===우선순위===
하나의 연산식에 여러 개의 연산이 사용되었을 경우 어떤 것을 먼저 처리할지 정하는 것이다. 순서는 단항연산자→산술연산자→시프트연산자→관계연산자→비트연산자→논리연산자→조건연산자→대입연산자→순서연산자 순으로 낮아진다. 단, ( ), [ ] 연산자는 최우선 연산자로, ( )는 우선순위 변경을 위해 사용되며, [ ]는 배열의 크기나 첨자를 나타낼 때 사용한다.<ref name="연산자"></ref>
+
하나의 연산식에 여러 개의 연산이 사용되었을 경우 어떤 것을 먼저 처리할지 정하는 것이다. 순서는 단항 연산자→산술 연산자→시프트 연산자→관계 연산자→비트 연산자→논리 연산자→조건 연산자→대입 연산자→순서 연산자 순으로 낮아진다. 단, ( ), [ ] 연산자는 최우선 연산자로, ( )는 우선순위 변경을 위해 사용되며, [ ]는 배열의 크기나 첨자를 나타낼 때 사용한다.<ref name="연산자"></ref>
  
 
:{|class=wikitable width=700 style="background-color:#ffffee"
 
:{|class=wikitable width=700 style="background-color:#ffffee"
18번째 줄: 18번째 줄:
 
!align=center style="background-color:#ffeecc"|결합규칙
 
!align=center style="background-color:#ffeecc"|결합규칙
 
|-
 
|-
|align=center|단항연산자
+
|align=center|단항 연산자
|align=center|단항연산자
+
|align=center|단항 연산자
 
|align=center|!(논리 not), ~(비트 not), ++, --, sizeof(기타)
 
|align=center|!(논리 not), ~(비트 not), ++, --, sizeof(기타)
 
|align=center|←
 
|align=center|←
 
|-
 
|-
|align=center rowspan="5"|이항연산자
+
|align=center rowspan="5"|이항 연산자
|align=center|산술연산자
+
|align=center|산술 연산자
 
|align=center|*, /, %(나머지)
 
|align=center|*, /, %(나머지)
 
|align=center rowspan="5"|→
 
|align=center rowspan="5"|→
 
|-
 
|-
|align=center|시프트연산자
+
|align=center|시프트 연산자
 
|align=center|<<, >>, >>>
 
|align=center|<<, >>, >>>
 
|-
 
|-
|align=center|관계연산자
+
|align=center|관계 연산자
 
|align=center|<, <=, >, >=, ==, !=
 
|align=center|<, <=, >, >=, ==, !=
 
|-
 
|-
|align=center|비트연산자
+
|align=center|비트 연산자
 
|align=center|&(비트 and), ^(비트 xor), |(비트 or)
 
|align=center|&(비트 and), ^(비트 xor), |(비트 or)
 
|-
 
|-
|align=center|논리연산자
+
|align=center|논리 연산자
 
|align=center|&&(논리 and), ∥(논리 or)
 
|align=center|&&(논리 and), ∥(논리 or)
 
|-
 
|-
|align=center|삼항연산자
+
|align=center|삼항 연산자
|align=center|조건연산자
+
|align=center|조건 연산자
 
|align=center|?, :
 
|align=center|?, :
 
|align=center|→
 
|align=center|→
 
|-
 
|-
|align=center|대입연산자
+
|align=center|대입 연산자
|align=center|대입연산자
+
|align=center|대입 연산자
 
|align=center|=, +=, -=, *=, %=, /=, >>=, <<=
 
|align=center|=, +=, -=, *=, %=, /=, >>=, <<=
 
|align=center|←
 
|align=center|←
 
|-
 
|-
|align=center|순서연산자
+
|align=center|순서 연산자
|align=center|순서연산자
+
|align=center|순서 연산자
 
|align=center|,
 
|align=center|,
 
|align=center|→
 
|align=center|→
70번째 줄: 70번째 줄:
 
* '''PROJECT''' : 릴레이션에서 Attribute 리스트에 제시된 Attribute만을 추출하는 연산자
 
* '''PROJECT''' : 릴레이션에서 Attribute 리스트에 제시된 Attribute만을 추출하는 연산자
 
:한 릴레이션의 Attribute들의 부분집합
 
:한 릴레이션의 Attribute들의 부분집합
:하나의 입력 릴레이션에 적용되므로 단항연산자
+
:하나의 입력 릴레이션에 적용되므로 단항 연산자
 
:PROJECT 연산을 하면 중복이 제거된다 --> PROJECT 연산의 결과는 중복이 제거된 distinctive한 튜플이다.<ref name='db_re'></ref>
 
:PROJECT 연산을 하면 중복이 제거된다 --> PROJECT 연산의 결과는 중복이 제거된 distinctive한 튜플이다.<ref name='db_re'></ref>
  
85번째 줄: 85번째 줄:
  
 
== 종류 ==
 
== 종류 ==
연산자의 종류는 [[산술연산자]], [[관계연산자]], [[비트연산자]], [[논리연산자]], [[대입연산자]], [[조건연산자]], 기타 연산자로 나뉜다.<ref name="연산자"></ref>
+
연산자의 종류는 [[산술 연산자]], [[관계 연산자]], [[비트 연산자]], [[논리 연산자]], [[대입 연산자]], [[조건 연산자]], 기타 연산자로 나뉜다.<ref name="연산자"></ref>
  
===산술연산자===
+
===산술 연산자===
[[산술연산자]]는 가, 감, 승, 제 등의 산술 계산에 사용되는 연산자로 '+, -, *, /, %, ++, --'가 있다. 산술연산자는 안에서도 우선 순위가 나뉘는데 증감연산자→산술연산자(* / %)→산술연산자(+ -)순으로 높아진다. 산술연산자 중 '* / %'는 우선순위가 같아 왼쪽에서 오른쪽 방향으로 순서대로 계산한다. 또한, 피연산자의 크기가 4byte보다 작을 경우 4byte(int형)로 변환한 후 연산을 수행한다. 고려 사항으로는 연산하기 전에 데이터형을 둘 중 더 큰 자료형으로 일치시켜야 하고, 정수와 정수 나눗셈시 정수로 나와야 하므로 소수는 버려지고 정수만 출력된다.<ref>〈[https://raccoonjy.tistory.com/9 산술 연산자]〉, 《Tistory blog》, 2017-06-30</ref> 산술연산자 증감연산자(++,--)는 전치와 후치로 분류되는데 전치(++a, --a)는 변수 앞에 증감연산자가 오는 형태로 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용하는 것이고, 후치(a++, a--)는변수 뒤에 증감연산자가 오는 형태로 먼저 변소를 연산에 사용한 후 변수의 값을 증감시킨다.
+
가, 감, 승, 제 등의 산술 계산에 사용되는 연산자로 '+, -, *, /, %, ++, --'가 있다. 산술 연산자는 안에서도 우선 순위가 나뉘는데 증감 연산자→산술 연산자(* / %)→산술 연산자(+ -)순으로 높아진다. 산술 연산자 중 '* / %'는 우선순위가 같아 왼쪽에서 오른쪽 방향으로 순서대로 계산한다. 또한, 피연산자의 크기가 4byte보다 작을 경우 4byte(int형)로 변환한 후 연산을 수행한다. 고려 사항으로는 연산하기 전에 데이터형을 둘 중 더 큰 자료형으로 일치시켜야 하고, 정수와 정수 나눗셈시 정수로 나와야 하므로 소수는 버려지고 정수만 출력된다.<ref>〈[https://raccoonjy.tistory.com/9 산술 연산자]〉, 《Tistory blog》, 2017-06-30</ref> 산술 연산자 증감 연산자(++,--)는 전치와 후치로 분류되는데 전치(++a, --a)는 변수 앞에 증감 연산자가 오는 형태로 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용하는 것이고, 후치(a++, a--)는변수 뒤에 증감 연산자가 오는 형태로 먼저 변소를 연산에 사용한 후 변수의 값을 증감시킨다.
  
 
  예) 3 - 7 % 8 + 5
 
  예) 3 - 7 % 8 + 5
94번째 줄: 94번째 줄:
 
연산자 우선 순위에 따라 '7 % 8'→'3 -'→'+ 5'를 하여 답은 1이 된다.
 
연산자 우선 순위에 따라 '7 % 8'→'3 -'→'+ 5'를 하여 답은 1이 된다.
  
===관계연산자===
+
===관계 연산자===
[[관계연산자]]는 두 수의 관계를 비교하여 참 또는 거짓을 결과로 얻는 연산자로 '== != > >= < <='가 있다. 왼쪽을 기준으로 크다 또는 크거나 같다로 해석한다.
+
두 수의 관계를 비교하여 참 또는 거짓을 결과로 얻는 연산자로 '== != > >= < <='가 있다. 왼쪽을 기준으로 크다 또는 크거나 같다로 해석한다.
  
===비트연산자===
+
===비트 연산자===
[[비트연산자]]는 비트별(0, 1)로 연산하여 결과를 얻는 연산자로 '&(and) ^( xor) |(or) ~(not) <<(비트 왼쪽 이동) >>(비트 오른쪽 이동)'이 있다. 실수형인 float와 double을 제외한 모든 기본형에 사용이 가능하며 피연산자를 int타입으로 자동 타입 변환한 후 연산을 수행한다. 그렇기 때문에 byte,short,char타입을 비트 논리 연산하면 그 결과는 int 타입이 된다. '|'는 OR 연산자로 피연산자 중 어느 한 쪽이 1이면 1이다. '&'는 AND 연산자로 피연산자 양 쪽 모두 1이면 1이다. '^'는 XOR 연산자로 피연산자가 서로 다를 때 1이다.<ref name="논리 연산자"></ref>
+
[[비트 연산자]]는 비트별(0, 1)로 연산하여 결과를 얻는 연산자로 '&(and) ^( xor) |(or) ~(not) <<(비트 왼쪽 이동) >>(비트 오른쪽 이동)'이 있다. 실수형인 float와 double을 제외한 모든 기본형에 사용이 가능하며 피연산자를 int타입으로 자동 타입 변환한 후 연산을 수행한다. 그렇기 때문에 byte,short,char타입을 비트 논리 연산하면 그 결과는 int 타입이 된다. '|'는 OR 연산자로 피연산자 중 어느 한 쪽이 1이면 1이다. '&'는 AND 연산자로 피연산자 양 쪽 모두 1이면 1이다. '^'는 XOR 연산자로 피연산자가 서로 다를 때 1이다.<ref name="논리 연산자"></ref>
  
 
:{|class=wikitable width=700 style="background-color:#ffffee"
 
:{|class=wikitable width=700 style="background-color:#ffffee"
133번째 줄: 133번째 줄:
 
|}
 
|}
  
===논리연산자===
+
===논리 연산자===
[[논리연산자]]는 두 개의 논리 값을 연산하여 참 또는 거짓을 결과로 얻는 연산자로 '!(not), &&(and), ∥(or)'이 있다. 피연산자로 boolean형 값을 결과로 하는 조건식만을 허용하며 '&&'가 '∥' 연산보다 우선순위가 높으므로 한 조건식에 '&&'와 '∥'가 함께 사용될 때는 괄호를 사용하여 우선순위를 명확하게 해주어야 한다. '&&'는 AND 연산자로 피연산자 양쪽 모두 참(True)이면 참이다. '∥'는 OR 연산자로 피연산자 중 어느 한 쪽이 참(True)이면 참이다. 같은 조건식이라도 피연산자의 위치에 따라서 연산속도가 달라질 수 있으며, '&&'의 경우에는 연산결과가 거짓(False)일 확률이 높은 피연산자를 연산자의 좌측에 놓아야 더 빠른 연산결과를 얻을 수 있다.<ref name="논리 연산자">〈[https://programmer-seva.tistory.com/9 논리 연산자 및 비트 연산자]〉, 《세바의 코딩교실》, 2016-01-28</ref>
+
[[논리 연산자]]는 두 개의 논리 값을 연산하여 참 또는 거짓을 결과로 얻는 연산자로 '!(not), &&(and), ∥(or)'이 있다. 피연산자로 boolean형 값을 결과로 하는 조건식만을 허용하며 '&&'가 '∥' 연산보다 우선순위가 높으므로 한 조건식에 '&&'와 '∥'가 함께 사용될 때는 괄호를 사용하여 우선순위를 명확하게 해주어야 한다. '&&'는 AND 연산자로 피연산자 양쪽 모두 참(True)이면 참이다. '∥'는 OR 연산자로 피연산자 중 어느 한 쪽이 참(True)이면 참이다. 같은 조건식이라도 피연산자의 위치에 따라서 연산속도가 달라질 수 있으며, '&&'의 경우에는 연산결과가 거짓(False)일 확률이 높은 피연산자를 연산자의 좌측에 놓아야 더 빠른 연산결과를 얻을 수 있다.<ref name="논리 연산자">〈[https://programmer-seva.tistory.com/9 논리 연산자 및 비트 연산자]〉, 《세바의 코딩교실》, 2016-01-28</ref>
  
 
:{|class=wikitable width=700 style="background-color:#ffffee"
 
:{|class=wikitable width=700 style="background-color:#ffffee"
|+논리연산자
+
|+논리 연산자
 
!align=center style="background-color:#ffeecc"|x  
 
!align=center style="background-color:#ffeecc"|x  
 
!align=center style="background-color:#ffeecc"|y
 
!align=center style="background-color:#ffeecc"|y
164번째 줄: 164번째 줄:
 
|}
 
|}
  
===대입연산자===
+
===대입 연산자===
[[대입연산자]]는 연산 후 결과를 대입하는 연산식을 간략하게 입력할 수 있도록 하는 연산자이다. 대입연산자에는 '+= -= *= /= %= <<= >>='가 있다. 자바에서는 대입연산자와 다른 연산자를 결합하여 만든 다양한 복합 대입연산자를 제공한다.<ref>〈[http://tcpschool.com/java/java_operator_assignment 대입 연산자]〉, 《TCPSCHOOL》</ref>
+
[[대입 연산자]]는 연산 후 결과를 대입하는 연산식을 간략하게 입력할 수 있도록 하는 연산자이다. 대입연산자에는 '+= -= *= /= %= <<= >>='가 있다. 자바에서는 대입 연산자와 다른 연산자를 결합하여 만든 다양한 복합 대입 연산자를 제공한다.<ref>〈[http://tcpschool.com/java/java_operator_assignment 대입 연산자]〉, 《TCPSCHOOL》</ref>
  
===조건연산자===
+
===조건 연산자===
[[조건연산자]]는 조건에 따라 서로 다른 수식을 수행하는 것이다. 삼항연산자에 속하며 if문으로 처리했을 때보다 라인수를 획기적으로 줄여준다. 따라서 가벼운 로직을 처리한다면 if문 보다는 조건연산자를 사용하여 처리하는 것이 훨씬 좋다.<ref>〈[https://coding-factory.tistory.com/266 조건 연산자]〉, 《코딩팩토리》, 2018-12-01</ref>
+
[[조건 연산자]]는 조건에 따라 서로 다른 수식을 수행하는 것이다. 삼항연산자에 속하며 if문으로 처리했을 때보다 라인수를 획기적으로 줄여준다. 따라서 가벼운 로직을 처리한다면 if문 보다는 조건 연산자를 사용하여 처리하는 것이 훨씬 좋다.<ref>〈[https://coding-factory.tistory.com/266 조건 연산자]〉, 《코딩팩토리》, 2018-12-01</ref>
  
 
  조건 ? 수식1 : 수식2; -> '조건'의 수식이 참이면 '수식1'을 거짓이면 '수식2'를 실행'''
 
  조건 ? 수식1 : 수식2; -> '조건'의 수식이 참이면 '수식1'을 거짓이면 '수식2'를 실행'''
176번째 줄: 176번째 줄:
  
 
==활용==
 
==활용==
===산술연산자===
+
===산술 연산자===
산술연산자 예시<ref name="연산자 예시">〈[https://josephian.tistory.com/213 산술 연산자, 대입연산자 예시]〉, 《Tisroty - 요셉의 꿈》, 2015-05-05</ref>
+
산술 연산자 예시<ref name="연산자 예시">〈[https://josephian.tistory.com/213 산술 연산자, 대입연산자 예시]〉, 《Tisroty - 요셉의 꿈》, 2015-05-05</ref>
  
 
  public static void main(String[] args){
 
  public static void main(String[] args){
195번째 줄: 195번째 줄:
 
  }
 
  }
  
===관계연산자===
+
===관계 연산자===
관계연산자 예시
+
관계 연산자 예시
  
 
  public static void main(String[] args){
 
  public static void main(String[] args){
209번째 줄: 209번째 줄:
 
  }
 
  }
  
===비트연산자===
+
===비트 연산자===
비트연산자 예시<ref>〈[https://donologue.tistory.com/55 비트 연산자 예시]〉, 《구운밤》, 2016-07-10</ref>
+
비트 연산자 예시<ref>〈[https://donologue.tistory.com/55 비트 연산자 예시]〉, 《구운밤》, 2016-07-10</ref>
  
 
~(not) 연산자
 
~(not) 연산자
248번째 줄: 248번째 줄:
 
     // 두 비트가 다를 때 1을 반환한다.  
 
     // 두 비트가 다를 때 1을 반환한다.  
  
[[시프트연산자]]
+
[[시프트 연산자]]
  
 
     int num1 = 9;
 
     int num1 = 9;
257번째 줄: 257번째 줄:
 
     // num2 = 1001 (오른쪽으로 2비트)→ 0010 → 2  
 
     // num2 = 1001 (오른쪽으로 2비트)→ 0010 → 2  
  
===논리연산자===
+
===논리 연산자===
논리연산자 예시<ref name="논리 연산자"></ref>
+
논리 연산자 예시<ref name="논리 연산자"></ref>
  
 
  public static void main(String[] args){
 
  public static void main(String[] args){
269번째 줄: 269번째 줄:
 
   } // 결과: 유효한 문자입니다.
 
   } // 결과: 유효한 문자입니다.
  
===대입연산자===
+
===대입 연산자===
대입연산자 예시<ref name="연산자 예시"></ref>
+
대입 연산자 예시<ref name="연산자 예시"></ref>
  
 
  public static void main(String[] args){
 
  public static void main(String[] args){
284번째 줄: 284번째 줄:
 
  }  
 
  }  
  
===조건연산자===
+
===조건 연산자===
조건연산자 예시
+
조건 연산자 예시
  
 
   int b = (5 < 4) ? 50 : 40;
 
   int b = (5 < 4) ? 50 : 40;

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)