단순 하지 않 은 자바 연산 자
조작 자 는 하나 이상 의 인 자 를 받 아들 이 고 새 값 을 생 성 합 니 다.일부 조작 부 호 는 조작 수 자체 의 값 을 바 꿀 수 있 습 니 다. 이것 은 '부작용' (새로운 값 이 생기 면서 자신 도 바 뀌 었 기 때 문 입 니 다) 이 라 고 부 릅 니 다. '=', '=' 과 '! =' 을 제외 하고 모든 대상 을 조작 할 수 있 는 다른 조작 부 호 는 '기본 유형' 만 조작 할 수 있 습 니 다.
1. 할당 연산 자 --- "="
할당 이란 오른쪽 값 을 왼쪽 에 복사 하 는 것 을 의미 합 니 다. 오른쪽 값 은 상수, 변수 또는 표현 식 일 수 있 지만 왼쪽 값 은 명확 한 이름 을 가 진 변수 여야 합 니 다. 즉, 등호 오른쪽 값 을 저장 할 수 있 는 물리 적 공간 이 있어 야 합 니 다.그러나 어떤 것 도 상수 에 부여 할 수 없고 상수 가 왼쪽 에 있 으 면 안 된다. 예 를 들 어 0 = a 는 잘못된 것 입 니 다. 할당 값 은 두 가지 상황 으로 나 눌 수 있 습 니 다.
1. 기본 데이터 형식 할당
기본 형식 은 한 대상 을 가리 키 는 인용 이 아니 라 실제 수 치 를 저장 하기 때문에 값 을 부여 할 때 한 곳 의 내용 을 다른 곳 으로 직접 복사 합 니 다.예 를 들 어 a = b, 그러면 b 의 내용 은 a 에 복사 되 고 그 다음 에 a 를 수정 하면 b 는 이런 수정 에 영향 을 주지 않 습 니 다.
2. 대상 의 할당
한 대상 을 조작 할 때 우리 가 진정 으로 조작 하 는 것 은 대상 에 대한 인용 이기 때문에 한 대상 을 다른 대상 에 게 할당 하 는 것 이다. 실제 적 으로 인용 을 한 대상 에서 다른 대상 에 게 할당 하고 실제 적 으로 인용 을 한 곳 에서 다른 곳 으로 복사 하 는 것 이다.대상 에 게 c = d 를 사용 하면 d 만 가리 키 는 대상 을 가리킨다.
아래 의 이 예 를 통 해 이 문 제 를 설명 할 수 있다.
프로그램 출력 결과
1: t1.level: 9, t2.level: 47 2: t1.level: 47, t2.level: 47 3: t1.level: 27, t2.level: 27
이 프로그램 에서 두 개의 Tank 클래스 의 인 스 턴 스 를 만 들 었 고 모든 인 스 턴 스 의 level 에 서로 다른 값 을 부여 한 다음 에 t2 를 t1 에 부여 한 다음 에 t1 을 수정 하 였 으 나 할당 작업 은 하나의 대상 의 인용 이기 때문에 t1 을 수정 하 는 동시에 t2 도 수정 하 였 습 니 다!이것 은 t1 과 t2 가 같은 인용 을 포함 하기 때 문 입 니 다. 그들 은 같은 대상 을 가리 키 고 있 습 니 다.
이런 특수 한 현상 을 통상 적 으로 '별명 현상' 이 라 고 부 르 는데 자바 조작 대상 의 기본 방식 이다.
3. 방법 호출 중인 별명 문제
사실 방법 에서 도 이런 별명 이 생 길 수 있어 요.
class Tank {
int level;
}
public class Assignment {
public static void main(String[] args) {
Tank t1 = new Tank();
Tank t2 = new Tank();
t1.level = 9;
t2.level = 47;
System.out.println("1: t1.level: " + t1.level +
", t2.level: " + t2.level);
t1 = t2;
System.out.println("2: t1.level: " + t1.level +
", t2.level: " + t2.level);
t1.level = 27;
System.out.println("3: t1.level: " + t1.level +
", t2.level: " + t2.level);
}
}
이 프로그램의 실행 결 과 는?
1: x.c: a 2: x.c: z
관계 연산 자
주로 말씀 드 리 겠 습 니 다.equals 방법
일단 프로그램 을 하나 볼 게 요.
노정
순차 출력 결 과 는?
false
true
두 대상 의 내용 은 같 지만 = 와! =비교 대상 의 인용 입 니 다. 두 대상 의 인용 이 다 르 기 때문에 하나의 출력 false 는 하나의 출력 true 입 니 다. 대상 의 값 을 비교 하려 면 equals 방법 을 사용 해 야 합 니 다. 그러나 이 방법 은 기본 형식 데이터 의 비교 에 적합 하지 않 습 니 다. 기본 유형 은 = 과! =비교 해 보 자.
4. 567913. 이 프로그램의 출력 결 과 는 true 입 니 다. 대상 의 인용 이 아 닌 대상 의 값 을 비교 하기 때문에 값 이 같 으 면 true 를 출력 합 니 다.
그러나 모든 equals 방법 이 다 효과 가 있 는 것 은 아니다. 아래 의 예 와 같다.
4. 567913. 이 프로그램의 출력 결 과 는 false 로 놀 랄 수 있 습 니 다. 이것 은 equals 의 기본 행동 이 비교적 인용 되 기 때문에 자신의 새로운 유형 에 equals () 방법 을 덮어 쓰 지 않 으 면 우리 가 원 하 는 행동 을 나 타 낼 수 없습니다.대부분의 자바 라 이브 러 리 는 비교 대상 의 인용 이 아 닌 equals () 방법 을 실현 합 니 다.
3. 비트 연산
비트 연산 자의 세부 사항
<<
빈 자 리 는 0 을 보충 하고, 제 거 된 높 은 자 리 는 버 리 고, 빈 자 리 는 0 을 보충 합 니 다.
>>
자 리 를 옮 긴 바 이 너 리 의 최고 위 치 는 0 이 고 오른쪽으로 옮 긴 후 빈 자 리 를 0 으로 보충 합 니 다.최고 위 는 1, 빈 자 리 는 1.
>>>
이 직 된 바 이 너 리 의 최고 위 치 는 0 이 든 1 이 든 빈 자 리 는 0 으로 보충 합 니 다.
&
2 진 비트 진행 & 연산, 1 & 1 시 결과 가 1 이 고 그렇지 않 으 면 0 입 니 다.
|
이 진 위 는 | 연산 을 진행 합 니 다. 0 | 0 시 결 과 는 0 입 니 다. 그렇지 않 으 면 1 입 니 다.
^
같은 이 진 위 를 ^ 연산 하면 결 과 는 0 입 니 다.1 ^ 1 = 0, 0 ^ 0 = 0 이 다른 바 이 너 리 ^ 연산 결 과 는 1 입 니 다.1^0=1 , 0^1=1
& & (단락 과): 왼쪽 이 가짜 일 때 오른쪽 은 연산 에 참가 하지 않 습 니 다.
& (단 과) 양쪽 모두 연산 결과 가 어떻든 간 에 (| 과 | 도 마찬가지)
자리 옮 김 연산
왼쪽으로 몇 자 리 를 이동 하 는 것 이 바로 이 숫자 에 2 를 곱 하 는 몇 번 의 멱 이다.
오른쪽으로 몇 자 리 를 이동 하 는 것 이 바로 이 수 를 2 로 나 누 는 몇 번 의 멱 이다.
이 위 연산 은 일반적인 연산 보다 간단 하고 편리 하 며, 한계 성 은 2 의 차 멱 만 연산 할 수 있다.
> > > 부호 없 이 오른쪽으로 이동, 높 은 자리 가 무엇이든 0 으로 보충 합 니 다.
비트 연산 의 용도
용도:
1. & 연산 으로 특정한 필드 의 바 이 너 리 마지막 몇 자리 가 무엇 인지 얻 습 니 다.
2. 가운데 한 단락 을 가 져 오 면 그 뒤의 통과 > > > 연산 을 버 립 니 다.
3. 한 수 또는 다른 수 를 두 번 세 어 본 후에 결 과 는 이 수 (암호 화 연산 은 사용 할 수 있 음) 4. 유형 변환
• 자동 형식 변환 (암시 적 형식 변환 이 라 고도 함)
• 강제 형식 변환 (명시 적 형식 변환 이 라 고도 함)
• 유형 변환 의 원리
• 강제 유형 으로 언제 전환 해 야 합 니까?
• 표현 식 데이터 형식 자동 향상
• 모든 byte 형, short 형, char 의 값 이 int 형 으로 올 라 갑 니 다.
• 하나의 조작 수가 log 형 이 라면 계산 결 과 는 log 형 이다.
• 하나의 조작 수가 float 형 이 라면 계산 결 과 는 float 형 입 니 다.
• 하나의 조작 수가 double 형 이 라면 계산 결 과 는 double 형 이다.
• 자동 형식 향상
byte b = 3;
int x = 4;
x = x + b;//b. int 형식 으로 자동 으로 올 라 가 연산 합 니 다.
• 강제 형식 변환
byte b = 3;
b = b + 4;//잘못 을 보고 하 다
b = (byte)(b+4);//강제 형식 변환, b + 4 의 결 과 를 byte 형식 으로 강제로 변환 하고 b 에 값 을 부여 합 니 다.
이 박문 은 바로 중요 한 연산 자 를 골 라 서 여러분 께 말씀 드 리 는 것 입 니 다. 여러분 의 읽 어 주 셔 서 감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.