반응형
<출처 : http://javaora.tistory.com/entry/Learning-the-JavaFX-Script-Programming-Language-Lesson-6-Operators >

연산자(Operator)는 한/두개의 피연산자로 특정 연산작업을 수행하고 결과를 되돌리는(return) 특별한 기호다. 

목차
- 할당 연산자(Assignment Operators)
- 수리 연산자(Arithmetic Operators)
- 단항 연산자(Unary Operators)
- 비교 & 관계 연산자(Equality and Relational Operators)
- 조건 연산자(Conditional Operators)
- 형 비교 연산자(Type Comparison Operators)


* 할당 연산자

할당연산자 "=" 은 앞으로 보게될 가장 일반적으로 사용되어지는 연산자이다. 이 연산자는 연산자 좌측 변수에 우측 피연산자의 값을 할당한다.

result = num1 + num2;
days = ["Mon","Tue","Wed","Thu","Fri"];


* 수리 연산자

수리연산자는 4칙연산(+, -, *, /)을 수행하며, "mod" 연산자는 나눗셈을 하고 남은 값(remainder)을 결과로 리턴한다.

var result = 1 + 2; // result is now 3
println(result);

result = result - 1; // result is now 2
println(result);

result = result * 2; // result is now 4
println(result);

result = result / 2; // result is now 2
println(result);

result = result + 8; // result is now 10
println(result);

result = result mod 7; // result is now 3
println(result);

더불어 산술연산자와 할당연산자를 합친 복합할당자(compound assignment) 를 사용 할 수도 있다. 예를들면, result += 1; 은 result = result + 1 과 동일한 result 에 1을 더한 값을 다시 result 에 할당하는 작업을 수행한다. 단 "mod" 연산자는 복합할당자 형식으로 사용 할 수 없다. 예를 들어, result 를 2로 나눈 나머지 값을 다시 result 에 할당하기 위해선 result = result mod 2; 와 같이 작성해야만 한다.

var result = 0;
result += 1;
println(result); // result is now 1

result -= 1;
println(result); // result is now 0

result = 2;
result *= 5; // result is now 10
println(result);

result /= 2; // result is now 5
println(result);


* 단항 연산자

대부분의 연산자는 두개의 피연산자를 필요로 한다. 단항연산자는 하나의 피연산자를 사용하여 값을 증가(incrementing)와 감소(decrementing) 시키거나 음수(negaring a number)화 시키거나 boolean 값을 역으로 바꾸는 연산작업을 수행한다.

-   : Unary minus operator; negates a number
++  : Increment operator; increments a value by 1
--  : Decrement operator; decrements a value by 1
not : Logical complement operator; inverts the value of a boolean

var result = 1; // result is now 1

result--;  // result is now 0
println(result);

result++; // result is now 1
println(result);

result = -result; // result is now -1
println(result);

var success = false;
println(success); // false
println(not success); // true

증가/감소 연산자는 피연산자의 전처리(before, prefix)와 후처리(after, postfix) 적용이 가능하다. result++; 와 ++result; 는 둘 다 result의 값을 1 증가시키는 역할을 한다. 전처리(++result)의 경우 값을 사용하는 시점에서 이미 1을 증가시킨 상태임에 비해 후처리(result++)의 경우 값을 사용하는 시점에서는 원래 증가전 값을 사용하며 사용한후 이를 1 증가시킨다. 설명은 복잡해 보이지만 실제 예를 보면 간단하게 이해 할 수 있다.

var result = 3;
result++;
println(result); // result is now 4
++result;
println(result); // result is now 5
println(++result); // result is now 6
println(result++); // this still prints prints 6!
println(result); // but the result is now 7


* 비교 & 관계 연산자

비교 관계 연산자는 하나의 연산자와 다른 연산자를 비교하여 값의 산술적 크기가 큰지, 작은지, 같은지, 같지 않은지를 비교하며, 비산술적인 형식(예를 들면 String)의 값이 같은지 같지않은지를 비교한다.

==	equal to
!=	not equal to
>	greater than
>=	greater than or equal to
<	less than
<=	less than or equal to
 
예를 보자.

def num1 = 1;
def num2 = 2;
def str1 = "A";
def str2 = "A";
def str3 = "B";

println(num1 == num2); // prints false
println(num1 != num2); // prints true
println(num1 > num2);  // prints false
println(num1 >= num2); // prints false
println(num1 < num2);  // prints true
println(num1 <= num2); // prints true

println(str1 == str2); // prints true
println(str1 != str2); // prints false
println(str1 == str3); // prints false
println(str1 != str3); // prints true


* 조건 연산자

조건 "and"와 조건 "or" 연산자는 주어진 2개의 boolean 표현의 조건연산을 수행한다. "and" 연산자는 "and" 연산자 좌측과 우측의 조건이 모두 true 일때만 수행되며, "or" 연산자는 좌측이든 우측이든 둘중 하나가 true 이면 수행된다. 

def username = "foo";
def password = "bar";

if ((username == "foo") and (password == "bar")) {
     println("Test 1: username AND password are correct");
}

if ((username == "") and (password == "bar")) {
     println("Test 2: username AND password is correct");
}

if ((username == "foo") or (password == "bar")) {
     println("Test 3: username OR password is correct");
}

if ((username == "") or (password == "bar")) {
     println("Test 4: username OR password is correct");
}

결과는 다음과 같다.

Test 1: username AND password are correct
Test 3: username OR password is correct
Test 4: username OR password is correct


* 형 비교 연산자

"instance of" 연산자는 객체의 특정타입을 비교한다. 이를 통해 특정 객체가 어떤 클래스를 통해 인스턴스화 되었는지 알수있다(비교 할 수 있다.)

def str1="Hello";
println(str1 instanceof String); // prints true
def num = 1031;
println(num instanceof java.lang.Integer); // prints true

지금은 잘 모르겠지만 이 연산자가 차후 클래스와 상속에 대해 배운다면 유용한 것임을 알게 될것이다.

+ Recent posts