Presentation is loading. Please wait.

Presentation is loading. Please wait.

Operator 연산(계산)을 위해 사용되는 부호 및 기호.

Similar presentations


Presentation on theme: "Operator 연산(계산)을 위해 사용되는 부호 및 기호."— Presentation transcript:

1 Operator 연산(계산)을 위해 사용되는 부호 및 기호

2 1. 연산자의 우선 순위와 종류 1) 피 연산자의 개수에 따른 연산자의 종류 2) 용도에 따른 연산자 및 우선 순위
단항 연산자: 피 연산자가 1개인 연산자 이항 연산자: 피 연산자가 2개인 연산자 삼항 연산자: 피 연산자가 3개인 연산자 2) 용도에 따른 연산자 및 우선 순위 종류 연산자 결합 방향 최우선 (), [] -> 단항 연산자 ++, --, +, -, (type), !, ~ <- 산술 연산자 %, /, *, +, - 시프트 연산자 >>, <<, >>> 관계 연산자 <, <=, >, >=, instanceof, ==, != 논리 연산자 &, ^, |,, ~ &&, || 삼항 연산자 ? : 대입 연산자 =, +=, -=, *=, %=, /=, >>=, <<= 콤마 연산자 ,

3 2. 최우선 연산자 1) ( ) 연산자 우선 순위 변경을 위해 사용 2) [ ] 연산자 배열의 크기나 첨자를 나타낼 때 사용

4 3.단항(Unary) 연산자 1)~ 틸드 2)! 3)부호 +, - 1의 보수를 구해주는 연산자.
모든 비트의 값을 반대로 표현해서 정수로 리턴합니다. 양수의 1의 보수는 부호는 음수가 되고 절대값은 1증가 음수의 1의 보수는 부호는 양수가 되고 절대값은 1감소 2)! 자바에서는 boolean에서만 사용이 가능 NOT(true -> false로 false -> true) !true -> false 3)부호 +, - +: 형식적으로 제공 -: 2의 보수 연산자, 부호 바꿈 연산자

5 실습(Unary.java) public class Unary { public static void main(String args[]) { int a = 10, b = -10; boolean c = true, d = false; System.out.println("a= " + a + "\t b=" + b + "\t c=" + c + "\t d=" + d); System.out.println("~a=" + ~a); // -11 1의 보수 연산(양수-> 음수 부호가 바뀌고 1증가됨) System.out.println("~b=" + ~b); // 9 음수-> 양수 부호가 바뀌고 1감소됨 System.out.println("!c=" + (!c) + "\t !d = " + (!d)); System.out.println("+a=" + (+a) + "\t +b = " + (+b)); System.out.println("-a= " + (-a) + "\t -b = " + (-b)); }

6 3.단항(Unary) 연산자 4) 증감연산자: ++, -- 정수 변수에만 사용할 수 있는 연산자
4) 증감연산자: ++, -- 정수 변수에만 사용할 수 있는 연산자 단항 연산자는 피 연산자의 오른쪽에 위치하지만 ++와 –연산자는 왼쪽과 오른쪽 모두 가능 ++: 변수의 값을 1 증가 --: 변수의 값을 1 감소 증감 연산자는 어느 위치에 놓는가에 따라서 수행 결과가 달라질 수 있습니다. 증감 연산자를 앞에 놓으면 전위 연산(prefix)이라 하고 뒤에 놓으면 후위 연산(postfix)이라고 합니다. 전위 연산은 증감을 먼저 하고 명령을 수행하게 되며 후위 연산은 명령을 수행한 후에 증감 을 하게 됩니다.

7 실습(Fix.java) public class Fix { public static void main(String args[]) { int a=10; System.out.println("a = " + a); System.out.println("후위 연산 a = " + a++); // 증감을 하기 전에 명령문을 먼저 처리하므로 10 출력 // 연산 후의 결과는 11 a = 10; System.out.println("전위 연산 a = " + ++a); // 증감을 한 후에 명령문을 처리하므로 11 출력 }

8 4.산술 연산자 사칙연산자(+, -, *, /), 나머지 연산자(%)는 두 개의 피 연산자를 가지는 이항연산자이며 산술 연산자는 피 연산자의 크기가 4byte보다 작으면 4byte(int형)로 변환한 다음에 연산을 수행합니다. 산술 연산자는 연산을 수행하기 전에 피 연산자들의 데이터 형을 일치 시킨 후 연산을 합니다. 서로 다른 자료형 사이의 연산의 경우에는 더 큰 자료형으로 자료형을 변경해서 연산을 수행합니다. 정수와 정수의 나눗셈을 하면 결과가 정수로 나와야 하므로 몫만 나오게 되며 소수는 버려지게 됩니다. % 연산자는 정수 사이의 연산에서만 의미를 갖습니다. % 연산자는 주기적인 작업(그룹화)이나 Transcription Error 제거를 위한 곳에서 많이 사용됩니다. 양수의 나머지는 양수만 나오지만 음수의 나머지를 구하게 되면 양수로 나오지 않고 음수로 나옵니다.

9 실습(Error.java) public class Error { public static void main(String[] args) { byte a = 10; byte b = 20; byte c = a + b; // 이 때 a 와 b가 모두 int 형으로 변환되어 연산하고 // 따라서 연산의 결과도 int 형이 되므로 대입 불가능 // byte c = (byte)(a + b); 으로 수정하던지 // int c = a + b;로 수정하면 에러가 없어짐 System.out.println(c); }

10 실습(Arithmetic.java) public class Arithmetic { public static void main(String args[]) { int a = 11, b = 2; int add = a + b; int sub = a - b; int mul = a * b; int div = a / b; int mod = a % b; System.out.println("a+b=" + add); System.out.println("a-b=" + sub); System.out.println("a*b=" + mul); System.out.println("a/b=" + div); System.out.println("a/b=" + (float) a / b); System.out.println("a%b=" + mod); //양수와 음수 사이에서의 나머지 System.out.println("5%-2=" + (5%-2)); //음수와 양수 사이에서의 나머지 System.out.println("-5%2=" + (-5%2)); //음수와 음수 사이에서의 나머지 System.out.println("-5%-2=" + (-5%-2)); }

11 5.Shift 연산자 <<, >>, >>>
Shift 연산자는 정수형 데이터에만 사용할 수 있으며 피 연산자의 각 자리(2진수 로 표현했을 때)를 오른쪽 또는 왼쪽으로 이동(shift)한다고 해서 Shift 연산자(shift operator)라고 합니다. 오른쪽으로 n 비트를 이동하면 피 연산자를 2의 n승으로 나눈 것과 같은 결과를 얻을 수 있고 왼쪽으로 n자리를 이동하면 2의 n승으로 곱한 것과 같은 결과를 얻을 수 있습니다. "<<"연산자의 경우 피 연산자의 부호에 상관없이 자리를 왼쪽으로 이동시키며 빈칸을 0으로만 채우면 되지만, ">>"연산자는 음수인 경우 부호를 유지시켜주기 위해서 음수인 경우 빈자리를 1로 채우게 됩니다. 반면에 ">>>"연산자는 부호에 상관없이 항상 0으로 빈자리를 채워줍니다. 그렇기 때문에, 음수에 ">>>"연산을 행한 후, 10진수로 변환해 보면, 뜻밖의 결 과를 얻게 될 것입니다.

12 5.Shift 연산자 "<<", ">>"연산자와는 달리 ">>>"연산자의 결과는 10진수 보다는 2진수로 표현 했을 때 기호로서 더 의미를 가지므로 10진 연산보다는 비트연산(2진 연산)에 주로 사용됩니다. 미는 비트 수 n의 값이 자료형의 bit수 보다 크면 자료형의 bit수로 나눈 나머지 만큼만 이동합니다. 예를 들어 int형의 경우, 4byte(32bit)이므로 1000 >> 32는 수행하면 아무 일도 하지 않습니다. 1000 >> 35는 35를 32로 나눈 나머지인 3만큼만 이동하는 1000 >> 3을 수행합 니다.

13 실습(Shift.java) public class Shift { public static void main(String args[]) int temp; // 계산 결과를 담기 위한 변수 System.out.println(-8); System.out.println(Integer.toBinaryString(-8)); // Integer.toBinaryString은 매개변수를 2진 문자열로 변경해주는 메서드 입니다. temp = -8 << 2; System.out.println( "-8 << 2 = " + temp); System.out.println(Integer.toBinaryString(temp)); temp = -8 >> 2; System.out.println( "-8 >> 2 = " + temp);

14 실습(Shift.java) System.out.println(-8); System.out.println(Integer.toBinaryString(-8)); temp = -8 >>> 2; System.out.println( "-8 >>> 2 = " + temp); System.out.println(Integer.toBinaryString(temp)); //33번 shift 인 경우 33이 32보다 크거나 같으므로 32로 나눈 나머지인 1번만 수행 temp = 4 << 33; System.out.println("4 << 2 = " + temp); }

15 6. 관계 연산자 관계 연산자는 이항 연산자로 피 연산자들을 비교하는 연산자
연산의 결과는 boolean(true 아니면 false) <, >, <=, >= 두 피 연산자의 크기를 비교하는 연산자입니다. 기본형 중에서는 boolean형을 제외한 나머지 자료형에 다 사용할 수 있고 참조형에는 사용할 수 없습니다. ==, != 두 피 연산자에 저장되어 있는 값이 같은지,또는 다른지를 비교하는 연산자입니다. 대소비교연산자(<, >, <=, >=)와는 달리 기본형은 물론 참조형에 사용할 수 있습니다. 기본형의 경우 변수에 저장되어 있는 값이 같은지를 알 수 있고 참조형의 경우 객체의 주소(해시) 값을 저장하기 때문에 두 개의 피 연산자(참조변수)가 같은 메모리의 주소를 가리키는 지 알 수 있습니다. 기본형과 참조형 간에는 저장되는 데이터가 다르기 때문에 등가비교 연산자(==, !=)의 피 연산자로 기본형과 참조형을 함께 사용할 수는 없습니다. boolean은 다른 자료형과 비교할 수 없습니다. instanceof: 참조형의 경우 어떤 타입인지 확인 해주는 연산자

16 실습(Relation.java) pan:true pan:false
public class Relation { public static void main(String[] args) boolean pan; int n = 10; float f = 10.0f; pan = 10 > 3; System.out.println("pan:" + pan); pan = 10 == 3; //서로 다른 자료형이지만 숫자 타입이므로 비교가능 pan = n == f; } pan:true pan:false

17 7.논리 연산자 논리 연산자는 이항 연산자로 조건의 참, 거짓을 비교하는 조건 논리 연산자와 비 트 단위로 연산을 수행해서 결과를 리턴하는 비트 논리 연산자로 나뉘게 됩니다. ||, && 연산자(조건 논리 연산자) ||, && 연산자는 피 연산자로 boolean형 또는 boolean형 값을 결과로 하는 연산식이나 메서드 호출 만을 허용 조건문과 반복문에서 조건식 간의 결합에 사용 그리고, "&&"가 "||" 연산보다 우선순위가 높으므로 한 조건식에 "&&"와 "||" 가 함께 사 용될 때는 괄호를 사용해서 우선순위를 명확히 해주는 것이 좋습니다. || (OR결합) - 피 연산자 중 한 쪽만 true이면 true를 결과로 얻게 됩니다. &&(AND결합) - 피 연산자 양쪽 모두 true이어야 true를 결과로 얻게 됩니다. Dead Code: 결코 수행될 수 없는 코드로 ||의 앞쪽 조건이 참이 되면 뒤의 조건은 조사 할 필요가 없어지며 &&의 앞쪽 조건이 거짓이면 뒤의 조건은 조사할 필요가 없어집니다. Don’t Care라고도 합니다.

18 실습(Logical.java) public class Logical { public static void main(String[] args) boolean pan; pan = 10 > 3 && 3 < 10; System.out.println("pan:" + pan); pan = 10 > 3 || 3 < 10; }

19 7.논리 연산자 |, &, ^, ~ 연산자(비트 논리 연산자) 피 연산자끼리 이진 비트연산을 수행해서 결과를 돌려주는 연산자
실수형인 float와 double을 제외한 모든 숫자형(정수형)에 사용가능하며 정수끼리 연산 을 수행하면 정수로 boolean 끼리 연산을 하면 boolean으로 결과를 리턴 |(OR연산자) - 피 연산자 중 한 쪽의 값이 1이면, 1을 결과로 1을 얻고 그 외에는 0을 얻 게됩니다. &(AND연산자) - 피 연산자 양 쪽이 모두 1이어야 1을 결과로 얻고 그 외에는 0을 얻게 됩니다. ^(XOR연산자) - 피 연산자의 값이 서로 다를 때만 1을 결과로 얻고 그 외에는 0을 얻게 됩니다. ~(NOT 연산자) – 1의 보수를 구해주는 연산자

20 실습(Bit.java) public class Bit { public static void main(String[] args) int x = 3; int y = 5; System.out.println("x는 " + x + "이고, y는 " + y +"일 때, "); System.out.println("x | y = " + (x|y)); System.out.println("x & y = " + (x&y)); System.out.println("x ^ y = " + (x^y)); System.out.println("~x = " + ~x); System.out.println("true | false = " + (true|false)); System.out.println("true & false = " + (true&false)); System.out.println("true ^ false = " + (true^false)); }

21 8.삼항 연산자 삼항 연산자는 조건 연산자라고도 하며 3개의 피 연산자를 필요로 하게 되는데 첫 번째 피 연산자는 조건이며 두 번째 피 연산자는 조건이 true일 때 반환 값이고 세 번째 피 연산자는 조건이 false일 때 반환 값입니다. 기본형식 조건식? 식1: 식2

22 실습(Condition.java) public class Condition { public static void main(String[] args) { int a = 10, b = 11; int max, min; max = a > b ? a : b; min = a < b ? a : b; System.out.println("두 수 중 큰 값:" + max); System.out.println("두 수 중 작은 값:" + min); }

23 9. 대입 연산자 대입 연산자는 변수에 값 또는 수식의 연산결과 또는 메서드의 수행 결과를 저장 하는데 사용됩니다.
대입연산자의 왼쪽에는 반드시 변수가 위치해야 하며 오른쪽에는 리터럴이나 변 수 또는 수식 및 메서드 호출구문이 올 수 있습니다. 대입 연산자는 모든 연산자들 중에서 가장 낮은 연산순위를 가지고 있기 때문에 제일 마지막에 수행됩니다. 연산진행방향이 오른쪽에서 왼쪽이기 때문에 x=y=3; 에서 y=3이 먼저 수행되고 그 다음에 x=y가 수행됩니다. 대입연산자는 다른 연산자와 결합하여 "op="와 같은 방식으로 사용될 수 있다. 예를 들면, i = i + 3은 i +=3과 같이 표현될 수 있습니다.

24 실습(Assign.java) public class Assign { public static void main(String[] args) int add,sub,mul, div; add = sub = mul = div =10; add +=10; sub -=10; mul *=10; div /=10; System.out.println("add:" + add); System.out.println("sub:" + sub); System.out.println("mul:" + mul); System.out.println("div:" + div); }


Download ppt "Operator 연산(계산)을 위해 사용되는 부호 및 기호."

Similar presentations


Ads by Google