거의 모든 운영자는 "프리미티브"에서만 작동 할 수 있습니다. 예외는 "=", "=="및 "! ="이며 모든 객체를 작동합니다. 또한 문자열 클래스는 "+"및 "+="를 지원합니다.
기본 유형은 실제 수치 값을 저장합니다. 객체를 참조하는 대신. 따라서 값을 할당 할 때 한 장소의 내용은 다른 장소에 직접 복사됩니다. 예를 들어, A = B가 기본 데이터 유형에 사용되면 B의 내용이 A에 복사됩니다. A가 수정되면 B는이 수정의 영향을받지 않습니다. (이전의 Java 프로그래밍 아이디어 (2)에서, 우리는 기본 유형이 스택에 저장된다는 것을 알고 있습니다. a = 4, 스택에 4가 없다면 값을 만들기 위해 공간이 열리면 a = b, b가 스택에서 4를 가리키면 5가 5와 같다. B)에 영향을 미치지 않습니다.
그러나 객체에 "값을 할당"하면 상황이 바뀔 것입니다. 우선, 우리는 객체를 작동 할 때 실제로 작동하는 것이 객체에 대한 참조라는 것을 알고 있습니다. 따라서 "다른 객체에 객체를 할당하는"경우 실제로 한 장소에서 다른 장소로 "참조"를 복사합니다. 즉, C = D가 객체에 사용되면 C와 D는 원래 D만으로 만 가리키는 객체를 가리 며 (리모컨 (참조)은 작동하여 TV 세트 (객체)를 누릅니다).
우선 사항:
| 우선 사항 | 본딩 | |
1 | 접미사 연산자 | []. () (함수 호출) | 왼쪽에서 오른쪽으로 |
2 | 독백 운영자 | ! ~ ++ - +(단일 피연산자) (단일 피연산자) | 오른쪽에서 왼쪽으로 |
3 | 만들다 | 새로운 | 왼쪽에서 오른쪽으로 |
4 | 곱셈 및 분열 | */ % | 왼쪽에서 오른쪽으로 |
5 | 추가 및 뺄셈 | + - - | 왼쪽에서 오른쪽으로 |
6 | 옮기다 | << >> >>>> | 왼쪽에서 오른쪽으로 |
7 | 관계 | <<= >> = 인스턴스 | 왼쪽에서 오른쪽으로 |
8 | 동일한 | ==! = | 왼쪽에서 오른쪽으로 |
9 | 비트와 | &이었다. | 왼쪽에서 오른쪽으로 |
10 | 조금씩 xor | ^ | 왼쪽에서 오른쪽으로 |
11 | 비트 또는 | | | 왼쪽에서 오른쪽으로 |
12 | 논리와 | && | 왼쪽에서 오른쪽으로 |
13 | 논리적 또는 | || | 왼쪽에서 오른쪽으로 |
14 | 상태 | ? : | 오른쪽에서 왼쪽으로 |
15 | 과제 | = += -= *= /= %= ^= << = >> = >>> = | 오른쪽에서 왼쪽으로 |
(1) 과제
기본 유형은 "A = B"를 사용하고 B의 내용은 A에 복사됩니다. A가 수정되면 B는 수정에 전혀 영향을받지 않습니다.
객체가 "할당"되면 상황이 변경됩니다. 객체를 작동 할 때 우리가 실제로 작동하는 것은 손잡이입니다. 따라서 한 객체에서 다른 객체로 값을 할당하면 실제로 핸들을 한 장소에서 다른 장소로 복사하는 것입니다. 이것은 "C = D"가 물체에 사용되면 C와 D가 결국 D 만 가리키는 객체를 가리킨다는 것을 의미합니다.
짧은 S1 = 1; S1 = S1 + 1; (S1+1 작동 결과는 int 유형이며 캐스트 유형이 필요합니다)
짧은 S1 = 1; S1 += 1; (올바르게 컴파일 할 수 있음) += 유형 변환 문제없이 연산자
(2) 산술 연산자
Java의 산술 연산자 : 플러스 부호 (+), 마이너스 부호 (-), 디비전 부호 (/), 곱셈 부호 (*) 및 계수 (%, 정수 부서에서 나머지를 얻음). 정수 부서는 운반 대신 소수성을 직접 줄입니다.
(3) 자동 증분 및 감소
사전 증가 및 사전 증가 (예 : ++ a 또는 -a)의 경우 작업이 먼저 수행되고 값이 생성됩니다.
상업 후 및 개수 후 (A ++ 또는 A- 등)의 경우 값이 생성되고 작동이 수행됩니다.
(4) 관계형 운영자
관계형 운영자는 <,>, <=,> =, = =,! =에 포함됩니다.
모든 내장 데이터 유형에 적용되는 것과 동일하지는 않지만 다른 비교는 부울 유형에 적용되지 않습니다.
두 객체의 실제 내용이 동일한 지 비교하려면 모든 객체에 적용되는 특수 메소드 equals ()을 사용해야합니다.
equals () 메소드는 "기본 유형"에 적용되지 않습니다. 이러한 유형은 == 및! =와 직접 사용할 수 있습니다.
equals ()의 기본값은 비교 핸들입니다. 따라서 새 클래스에서 equals ()를 변경하지 않는 한, 우리가 원하는 행동을 보여주는 것은 불가능합니다.
대부분의 Java 클래스 라이브러리는 equals ()를 구현하므로 실제로 핸들이 아닌 객체의 내용을 비교합니다.
= = 그리고! = 객체의 실제 내용이 아니라 객체 핸들을 비교합니다.
(5) 논리 연산자
논리 연산자 &&, ||,! 부울 값을 생성 할 수 있습니다
& & &&는 논리 연산자로 사용될 수 있지만 && &&는 "단락과"입니다. 계산할 때 심볼 이전의 표현식 값이 먼저 판단됩니다. 전체 표현식의 값을 결정할 수있는 경우, 심볼 후 표현식의 작동은 수행되지 않습니다.
또한 비트 연산자로 사용할 수 있습니다.
(6) 비트 타이어 운영자
비트와 운영자 (&)
Bitwise 또는 Operation (|)
Bitwise XOR (^, XOR)
Bitwise (~, "Non"연산자라고도하는 ~)는 단일 연산자에 속하며 입력 비트와 반대되는 값을 생성합니다.
(7) 이동 연산자
왼쪽 시프트 연산자 (<<)는 작동 객체를 왼쪽으로 왼쪽으로 이동할 수 있습니다.
서명 된 오른쪽 시프트 연산자 (>>)는 작업 객체를 오른쪽으로 이동합니다. 서명 된 오른쪽 시프트 연산자는 부호 확장을 사용합니다. 값이 양수 인 경우 0은 높은 위치에 삽입됩니다. 값이 음수 인 경우 1은 높은 위치에 삽입됩니다.
"Zero Extension"을 사용하는 서명되지 않은 오른쪽 Shift 연산자 (>>>) : 긍정적이든 부정적인 것에 관계없이 높은 위치에 0을 삽입하십시오.
(8) 트리플 IF-ELSE 연산자
부울 표현? 값 0 : 값 1 "Bolean 표현"의 결과는 true이고 "value 0"이 계산되고, 그렇지 않으면 "값 1"이 계산됩니다.
(9) 문자열 연산자 +
int x = 0, y = 1, z = 2; system.out.println ( "out :" + x + y + z);
여기서 Java 컴파일러는 먼저 함께 추가하는 대신 X, Y 및 Z를 문자열 양식으로 변환합니다.
"String +"를 사용하는 경우 표현식이 문자열로 시작되면 모든 후속 작업 객체가 문자열로 변환됩니다.
"Plus"부호 (이전 버전의 Java 사용)로 문자열을 연결하려면 첫 번째 요소가 문자열인지 확인하십시오.
(10) 모델링 (캐스트) 연산자
"좁아짐 변환"(더 많은 정보를 수용하고 int에서 단락과 같은 작은 유형으로 변환 할 수있는 데이터 유형)과 같은 작업의 경우 정보 손실의 위험에 직면 할 수 있습니다. 이 시점에서 컴파일러는 우리가 명확한 모양을 만들도록 강요합니다.
"확대 전환"의 경우, 새로운 유형이 원래 유형의 정보를 확실히 수용 할 수 있고 정보 손실을 일으키지 않기 때문에 명시 적으로 형성 될 필요가 없습니다.
부울 값 (Bolleans)은 스타일 처리를 전혀 허용하지 않으며 다른 주요 유형은 함께 형성 될 수 있습니다.
플로트 또는 이중 값을 정수 값으로 형성 한 후, 소수 부분은 항상 캐리없이 "차단"됩니다.
Math.round (11.5)는 얼마입니까? Math.round (-11.5)는 얼마입니까?
Math.round(11.5)==12 Math.round(-11.5)==-11
라운드 메소드는 매개 변수에 가장 가까운 긴 정수를 반환합니다. 매개 변수에 1/2을 추가 한 후 바닥을 찾으십시오.
요약
위의 내용은 Java 운영자와 그 우선 순위를 논의하는이 기사에 관한 것이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
멀티 모드 문자열 일치 알고리즘 원리 및 Java 구현 코드
rxjava 기능 연산자 사용 방법에 대한 자세한 설명
문자열 배열, 문자열 및 Java 형성 간의 전환에 대한 간단한 토론
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!