Latest web development tutorials

스칼라 연산자

운영자는 지정된 수학 및 논리 연산을 수행하는 컴파일러를 얘기하는 데 사용되는 기호입니다.

다음과 같은 유형을 포함하여 스칼라 풍부한 내장 연산자 :

  • 산술 연산자

  • 관계 연산자

  • 논리 연산자

  • 비트 연산자

  • 할당 연산자

다음으로, 우리는 더 많은 다양한 사업자의 응용 프로그램보다 당신에게 설명합니다.


산술 연산자

다음 표는 스칼라 지원 산술 연산자를 보여줍니다.

변수는 10로 가정, B (20) :

운영자 기술
+ 플러스의 A + B의 연산 결과 30
- 마이너스 A - B의 연산 결과는 -10
* 곱셈 기호 A * B의 연산 결과는 (200)
/ 부문 로그인 B / A의 연산 결과는 2
% 나머지 B %의 A는 계산 결과는 0

object Test {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;
      var c = 25;
      var d = 25;
      println("a + b = " + (a + b) );
      println("a - b = " + (a - b) );
      println("a * b = " + (a * b) );
      println("b / a = " + (b / a) );
      println("b % a = " + (b % a) );
      println("c % a = " + (c % a) );
      
   }
}

»인스턴스를 실행

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5

관계 연산자

다음 표는 스칼라 관계 연산자를 지원 보여줍니다.

변수는 10로 가정, B (20) :

운영자 기술
== 같은 (A == B는) 연산 결과는 false입니다
! = 동일하지 않은 (A! = B) 연산 결과는 true입니다
> 보다 큼 (A는> B) 연산 결과는 false입니다
< 이하 (A는 <B) 연산 결과는 true입니다
> = 크거나 같음 (A> = B) 연산 결과가 false
<= 보다 작거나 같음 (A는 <=는 B) 연산 결과는 true입니다

object Test {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;
      println("a == b = " + (a == b) );
      println("a != b = " + (a != b) );
      println("a > b = " + (a > b) );
      println("a < b = " + (a < b) );
      println("b >= a = " + (b >= a) );
      println("b <= a = " + (b <= a) );
   }
}

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

논리 연산자

다음 표는 스칼라 논리 연산자를 지원 보여줍니다.

1로 가정 변수는, B는 0 :

운영자 기술
&& 논리와 (A && B는) 연산 결과는 false입니다
|| 논리 또는 (A || B) 연산 결과는 true입니다
! 논리 NOT ! (A && B는) 연산 결과는 true입니다

object Test {
   def main(args: Array[String]) {
      var a = true;
      var b = false;

      println("a && b = " + (a&&b) );

      println("a || b = " + (a||b) );

      println("!(a && b) = " + !(a && b) );
   }
} 

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
a && b = false
a || b = true
!(a && b) = true

비트 연산자

: ^ 부정하고, 비트, 또는 비트에 의해하고, 다음 표 예제와 비트 XOR 연산 | 비트 연산자 비트 ~,,, 작동하는 데 사용

P & Q P | Q P ^ q를
0 0 0 0 0
0 (1) 0 (1) (1)
(1) (1) (1) (1) 0
(1) 0 0 (1) (1)

:와, B = 13; 두 변수 진에 대응 A = 60의 경우

A = 0011 1100

B = 0000 1101

-------位运算----------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

스칼라 비트 단위의 규칙은 다음과 같습니다 :

운영자 기술
비트 AND 연산자 (A & B) 출력 (12), 이진 설명 : 0000 1100
| 비트 OR 연산자 (A | B) 출력 (61), 이진 설명 : 00111101
^ 비트 단위 배타적 논리합 연산자 (A ^ B) (49)의 출력을 이진 설명 : 00110001
~ 비트 연산자 (~ A) -61 출력, 이진 설명 : 1100 0011 상징적 인 형태로는 진수를 보완합니다.
<< 왼쪽 이동 통신 사업자 << 2 출력 (240) 이진 해석 : 11110000
>> 마우스 오른쪽 단추로 이동할 수있는 통신 >> 2 출력 (15), 이진 설명 : 0000 1111
>>> 부호없는 오른쪽 시프트 >>> 2 출력 15 진 설명 : 0000 1111

object Test {
   def main(args: Array[String]) {
      var a = 60;           /* 60 = 0011 1100 */  
      var b = 13;           /* 13 = 0000 1101 */
      var c = 0;

      c = a & b;            /* 12 = 0000 1100 */ 
      println("a & b = " + c );

      c = a | b;            /* 61 = 0011 1101 */
      println("a | b = " + c );

      c = a ^ b;            /* 49 = 0011 0001 */
      println("a ^ b = " + c );

      c = ~a;               /* -61 = 1100 0011 */
      println("~a = " + c );

      c = a << 2;           /* 240 = 1111 0000 */
      println("a << 2 = " + c );

      c = a >> 2;           /* 215 = 1111 */
      println("a >> 2  = " + c );

      c = a >>> 2;          /* 215 = 0000 1111 */
      println("a >>> 2 = " + c );
   }
} 

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2  = 15
a >>> 2 = 15

할당 연산자

다음 목록 스칼라 언어 지원 할당 연산자 :

운영자 기술
= 단순 할당 연산자는 왼쪽 피연산자에 할당 오른쪽 오퍼랜드를 지정한다. C = A + B A + B의 연산 결과 C에 할당
+ = 할당 후 추가 전에 피연산자의 좌우 왼쪽 오퍼랜드에 할당 된 추가. C + = A는 C = C + A에 대응
- = 감산 할당 한 후, 왼쪽 피연산자 양측 좌우 피연산자 감산 할당 후. C - = A는 C = C에 해당 -을
* = 그런 다음 할당을 곱하여, 피연산자의 왼쪽과 오른쪽은 왼쪽 피연산자에 할당하기 전에 곱합니다. C * = A는 C = C의 * (A)에 대응
/ = 할당 후 나누어 왼쪽 피연산자 할당 후의 분할 피연산자의 좌우측. C / = A는 동등한 C = C / A입니다
(%) = 할당 한 후 나머지 왼쪽 오퍼랜드에 할당 한 후 나머지 피연산자의 좌우측. C의 % = A는 C = C의 % (A)에 해당합니다
<< = 비트는 할당 후 남아 C는 << = 2 C = C에 해당 << 2
>> = 할당 후 비트 오른쪽 C >> = 2 C = C >> 2에 해당
& = 비트 단위 AND 연산 후 할당 C & = 2 C = C & 2에 해당
^ = 비트 단위 배타적 논리합 연산자 다음 할당 C ^ = 2 C = C ^ 2에 해당
| = 비트 OR 대입 후 C는 | 2 | = 2 C = C에 해당

object Test {
   def main(args: Array[String]) {
      var a = 10;	
      var b = 20;
      var c = 0;

      c = a + b;
      println("c = a + b  = " + c );

      c += a ;
      println("c += a  = " + c );

      c -= a ;
      println("c -= a = " + c );

      c *= a ;
      println("c *= a = " + c );

      a = 10;
      c = 15;
      c /= a ;
      println("c /= a  = " + c );

      a = 10;
      c = 15;
      c %= a ;
      println("c %= a  = " + c );

      c <<= 2 ;
      println("c <<= 2  = " + c );

      c >>= 2 ;
      println("c >>= 2  = " + c );

      c >>= 2 ;
      println("c >>= a  = " + c );

      c &= a ;
      println("c &= 2  = " + c );
     
      c ^= a ;
      println("c ^= a  = " + c );

      c |= a ;
      println("c |= a  = " + c );
   }
} 

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
c = a + b  = 30
c += a  = 40
c -= a = 30
c *= a = 300
c /= a  = 1
c %= a  = 5
c <<= 2  = 20
c >>= 2  = 5
c >>= a  = 1
c &= 2  = 0
c ^= a  = 10
c |= a  = 10

연산자 우선 순위

표현식에서 데이터 객체의 다양한 데이터 유형과 연결 상이한 복수의 조작자를 포함 할 수있다식이 다양한 작업을 갖기 때문에, 동작의 다른 순서가도 오동작 오류 다른 결과를 가질 수있다 때 때문에 일정한 순서에 따라 다양한 작업을 포함하는 발현 결과의 정확성 및 합리성 동작의 고유성을 보장하기 위해 결합해야하는 경우.

우선 위에서 아래로 내림차순으로 상위는 콤마 연산자는 낮은 우선 순위가 가장 높은 우선 순위를 갖는다.

같은 우선 순위, 계산의 결합 순서에 따라. 대부분의 작업은 왼쪽에서 오른쪽으로 계산, 세 개의 우선 순위는 단항 연산자, 조건 연산자, 대입 연산자이고, 오른쪽에서 왼쪽으로 조합입니다.

기본 우선 순위는 기억해야합니다 :

  • 이항 연산자보다 단항 최적의 포인터. 기호로.
  • 먼저 곱셈과 뺄셈 후 분할 (계수).
  • 마지막 비트 컴퓨팅 후 첫 산술 시프트 연산. 특히주의하십시오 : << 1 2 3 + 7 (1 << (3 + 2)) 및 7에 해당
  • 최종 연산 논리 연산
운영자 유형 운영자 바인딩 방향
식 평가 () []. EXPR ++ expr-- 왼쪽에서 오른쪽
단항 연산자

* + -! ~ ++ EXPR --expr

* / %

+ -

>> <<

<> <=> =

==! =

오른쪽에서 왼쪽으로
비트 연산자

^

|

&&

||

왼쪽에서 오른쪽
삼항 연산자 ? : 오른쪽에서 왼쪽으로
할당 연산자 = + = - = * = / = % = >> = << = & = ^ = | = 오른쪽에서 왼쪽으로
콤마 , 왼쪽에서 오른쪽