JAVA
2011. 6. 9. 00:51
어제에 이어서 자바의 연산자에 대하여 계속 한다.
논리 연산자 & | ^ !
앞에서 배운 수치 비교 연산자와 동등 연산자는 모두 두 값을 비교한 결과를 boolean 값으로
산출한다. 그런데 때로는 이런 결과들을 조합하여 좀더 복잡한 논리식을 만들어야 할
경우도 있는데 그 때 사용하는 연산자가 논리 연산자이다.
피연산자1 & 피연산자2 > 1과 2가 모두 같으면 true, 그렇지 않으면 false이다.
피연산자1 | 피연산자2 > 1과 2가 모두 false면 false, 그렇지 않으면 true이다.
피연산자1 ^ 피연산자2 > 하나가 true, 하나가 false면 true, 그렇지 않으면 false이다.
!피연산자1 > 값이 true이면 false, false이면 true.
복잡하고 헷갈린다,,
조건 AND / OR 연산자 && ||
&&, || 는 위에서 배웠던 것과 같은 연산을 수행한다.
피연산자1 && 피연산자2 > 두 값이 모두 true면 true, 그렇지 않으면 false이다.
피연산자1 || 피연산자2 > 두 값이 모두 false면 false, 그렇지 않으면 true이다.
보면 위 &, | 와 다를게 없어 보인다, 하지만 차이점이있는데 보자
우선 ( 1 > 2 ) & ( 3 < 4 ) 라면 어떤 방식으로 계산할까?
컴퓨터는 우선 양쪽 피연산자를 먼저 계산한다. ( 1>2)를 계산하여 false를 얻고
(3<4) 를 계산하여 true를 얻는다 ,그러고 최종적으로 false를 얻는다.
하지만 사람이 푼다면 처음에 (1>2) 를 보고 ' 아 false네 뒤엣건 보나마나 아차피
false겠구나' 하고 바로 결과에 도달한다. 바로 이런게 && , || 이다 .
얘네는 사람처럼 앞에만 계산하고 결과를 얻을 수 있다.
조건연산자 ? :
if 문이 조건에 따라 다른 명령을 실행하는 조건문이라면 ? : 이것은 조건에 따라
다른식을 계산 하는 조건 연산자이다. 형식을 보자
조건식 ? 식1 : 식2 > 조건식이 true이면 식1을 계산하고 그렇지않으면 식2 를 계산한다
예 ) a < b ? a + 1 : b * 2 이런식이다,
비트 연산자 & | ^ ~
&, |, ^, ~ 는 데이터가 표현하는 값이 아니라 데이터를 구성하는 비트 자체를 가지고
AND, OR, XOR, NOT 연산을 수행하는 연산자이다.
피연산자1 & 피연산자2 > 두 데이터의 같은 위치 비트들을 AND 연산한다.
피연산자1 | 피연산자2 > 두 데이터의 같은 위치 비트들을 OR 연산한다.
피연산자1 ^ 피연산자2 > 두 데이터의 같은 위치 비트들을 XOR 연산한다.
~피연산자1 > 데이터의 각 위치 비트들을 NOT 연산한다.
정보처리 딸 때 공부했던 기억이.... 했던 기억만...-_-
쉬프트 연산자 << >> >>>
정수 << 비트수 > 정수를 구성하는 비트를 주어진 비트수만큼 왼쪽으로 이동하고
빈 공간은 0 으로 채움
정수 >> 비트수 > 정수를 구성하는 비트를 주어진 비트수만큼 오른쪽으로 이동하고
빈 공간은 MSB와같은 비트로 채움
정수 >>> 비트수 > 정수를 구성하는 비트를 주어진 비트수만큼 오른으로 이동하고
빈 공간은 0 으로 채움
음,, 이것도 본기억이 .. 밀리고 0 채우고 이런거.. 많이 봤는데 -ㅅ-
캐스트 연산자
캐스트 연산자는 타입의 변환을 전문적으로 수행하는 연산자이다.
(타입) 피연산자 > 피연산자의 값을 타입으로 변환한다.
(int)num , (byte)12.5 등등..
캐스트 연산자는 피연산자를 변환시키는 것이 아니라 새로운 타입으로 값을 만들어 내는것이다.
int num1 = 3;
double num2 = (double)num1;
위를 보면 num1을 바꾸는 것 처럼 보여도 결과적으로 num2를 만들어 내는 것이다.
값이 옮겨 간 것일 뿐..
자바 연산자에는 우선순위가 있다. 수학 처럼 .. 물론 낮은 수준의 수학-_-.. 그 수학처럼
사칙연산만 정도의 갯수만 나온다면 구분을 하지만 자바처럼 많은 연산이 동시에 수행되려면
정해진 순서가 필요했고 아래와 같다.
이 순서로 진행된다.
안드로이드 하면서 몰랐던 연산도 많이 봤다. 갈길이 멀다
출판사 : 한빛미디어 , 저자 : 김윤명 님의 뇌를 자극하는 Java프로그래밍에서 공부한 내용입니다.
논리 연산자 & | ^ !
앞에서 배운 수치 비교 연산자와 동등 연산자는 모두 두 값을 비교한 결과를 boolean 값으로
산출한다. 그런데 때로는 이런 결과들을 조합하여 좀더 복잡한 논리식을 만들어야 할
경우도 있는데 그 때 사용하는 연산자가 논리 연산자이다.
피연산자1 & 피연산자2 > 1과 2가 모두 같으면 true, 그렇지 않으면 false이다.
피연산자1 | 피연산자2 > 1과 2가 모두 false면 false, 그렇지 않으면 true이다.
피연산자1 ^ 피연산자2 > 하나가 true, 하나가 false면 true, 그렇지 않으면 false이다.
!피연산자1 > 값이 true이면 false, false이면 true.
복잡하고 헷갈린다,,
조건 AND / OR 연산자 && ||
&&, || 는 위에서 배웠던 것과 같은 연산을 수행한다.
피연산자1 && 피연산자2 > 두 값이 모두 true면 true, 그렇지 않으면 false이다.
피연산자1 || 피연산자2 > 두 값이 모두 false면 false, 그렇지 않으면 true이다.
보면 위 &, | 와 다를게 없어 보인다, 하지만 차이점이있는데 보자
우선 ( 1 > 2 ) & ( 3 < 4 ) 라면 어떤 방식으로 계산할까?
컴퓨터는 우선 양쪽 피연산자를 먼저 계산한다. ( 1>2)를 계산하여 false를 얻고
(3<4) 를 계산하여 true를 얻는다 ,그러고 최종적으로 false를 얻는다.
하지만 사람이 푼다면 처음에 (1>2) 를 보고 ' 아 false네 뒤엣건 보나마나 아차피
false겠구나' 하고 바로 결과에 도달한다. 바로 이런게 && , || 이다 .
얘네는 사람처럼 앞에만 계산하고 결과를 얻을 수 있다.
조건연산자 ? :
if 문이 조건에 따라 다른 명령을 실행하는 조건문이라면 ? : 이것은 조건에 따라
다른식을 계산 하는 조건 연산자이다. 형식을 보자
조건식 ? 식1 : 식2 > 조건식이 true이면 식1을 계산하고 그렇지않으면 식2 를 계산한다
예 ) a < b ? a + 1 : b * 2 이런식이다,
비트 연산자 & | ^ ~
&, |, ^, ~ 는 데이터가 표현하는 값이 아니라 데이터를 구성하는 비트 자체를 가지고
AND, OR, XOR, NOT 연산을 수행하는 연산자이다.
피연산자1 & 피연산자2 > 두 데이터의 같은 위치 비트들을 AND 연산한다.
피연산자1 | 피연산자2 > 두 데이터의 같은 위치 비트들을 OR 연산한다.
피연산자1 ^ 피연산자2 > 두 데이터의 같은 위치 비트들을 XOR 연산한다.
~피연산자1 > 데이터의 각 위치 비트들을 NOT 연산한다.
정보처리 딸 때 공부했던 기억이.... 했던 기억만...-_-
쉬프트 연산자 << >> >>>
정수 << 비트수 > 정수를 구성하는 비트를 주어진 비트수만큼 왼쪽으로 이동하고
빈 공간은 0 으로 채움
정수 >> 비트수 > 정수를 구성하는 비트를 주어진 비트수만큼 오른쪽으로 이동하고
빈 공간은 MSB와같은 비트로 채움
정수 >>> 비트수 > 정수를 구성하는 비트를 주어진 비트수만큼 오른으로 이동하고
빈 공간은 0 으로 채움
음,, 이것도 본기억이 .. 밀리고 0 채우고 이런거.. 많이 봤는데 -ㅅ-
캐스트 연산자
캐스트 연산자는 타입의 변환을 전문적으로 수행하는 연산자이다.
(타입) 피연산자 > 피연산자의 값을 타입으로 변환한다.
(int)num , (byte)12.5 등등..
캐스트 연산자는 피연산자를 변환시키는 것이 아니라 새로운 타입으로 값을 만들어 내는것이다.
int num1 = 3;
double num2 = (double)num1;
위를 보면 num1을 바꾸는 것 처럼 보여도 결과적으로 num2를 만들어 내는 것이다.
값이 옮겨 간 것일 뿐..
자바 연산자에는 우선순위가 있다. 수학 처럼 .. 물론 낮은 수준의 수학-_-.. 그 수학처럼
사칙연산만 정도의 갯수만 나온다면 구분을 하지만 자바처럼 많은 연산이 동시에 수행되려면
정해진 순서가 필요했고 아래와 같다.
이 순서로 진행된다.
안드로이드 하면서 몰랐던 연산도 많이 봤다. 갈길이 멀다
출판사 : 한빛미디어 , 저자 : 김윤명 님의 뇌를 자극하는 Java프로그래밍에서 공부한 내용입니다.
'JAVA' 카테고리의 다른 글
JAVA] 17. 생성자 (0) | 2011.06.13 |
---|---|
JAVA] 16. 객체와 클래스 (0) | 2011.06.09 |
JAVA] 14. 자바의 연산자 -1 (0) | 2011.06.08 |
JAVA] 13. 자바의 타입 분류 체계와 프리미티브 타입 (0) | 2011.06.07 |
JAVA] 12. 익셉션 처리에 사용되는 try 문 (0) | 2011.06.02 |