이 장에서는 요약할 내용이 많지 않지만 세부 사항에 주의를 기울여야 하며 그 중 일부는 잊어버리기 쉽습니다.
3장
목차:
3.1 더 간단한 인쇄 문
3.2 Java 연산자 사용
3.3 우선순위
3.4 할당
3.5 산술 연산자
3.6 자동 증가 및 감소
3.
3.8 논리 연산자
3.9 직접 상수
3.10 비트 연산자
3.11 시프트 연산자
3.12 삼항 연산자 if-else
3.13 문자열 연산자 + 및 +=
3.14 연산자 사용 시 흔히 발생하는 실수
3.15 유형 변환 연산자
3.16 Java에는 sizeof가 없습니다
3.17 연산자 요약
3.18 요약
3.2 Java 연산자 사용
=", "==" 및 "== "모든 개체에 대해 작업을 수행할 수 있는 기능.
3.4 할당
객체가 c=d를 사용하는 경우 c와 d는 모두 원래 d만 가리킨 객체를 가리킵니다.
t1 = t2(별칭 현상)일 때 t1과 t2가 동일한 참조를 포함하고 동일한 객체를 가리키기 때문에 t1을 수정하면 t2도 변경됩니다.
두 객체를 서로 독립적으로 유지하려면 다음과 같이 하면 됩니다. t1.level = t2.level;
3.6 자동 증가 및 감소
a = 15,++a、--a: System.out.printf("~output:" + a++); //~ output:15a = 15,a++、a--: System.out.printf("~output:" + ++a); // ~ output:16
3.7 관계 연산자
위의 두 Integer 객체는 내용은 같지만 참조가 다르며, ==와 != 객체의 참조를 비교합니다(기본형은 직접 값을 비교하고, 인용 없음). 객체 내용을 비교하려면 equals() 메서드를 사용하세요.
참고: equals() 메서드의 기본 동작은 참조를 비교하는 것이므로 새 클래스에서 equals() 메서드를 재정의해야 합니다. 그렇지 않으면 원하는 효과가 발생하지 않습니다. 대부분의 Java 클래스 라이브러리는 객체의 내용을 비교할 수 있도록 equals() 메서드를 재정의합니다. 예는 다음과 같습니다.
3.9 직접 상수
16진수: 접두사 0x, 8진수: 접두사 0, 2진수에는 직접 상수를 표현하지 않습니다.
지수 계산 방법: 1.39e-43f는 1.39 * 10-43을 의미합니다. e는 "10의 거듭제곱"을 의미합니다.
3.10 비트 연산자
비트 연산자의 피연산자는 이진수 "비트"(비트)이므로 TV 셋톱박스에 내장되도록 되어 있습니다. -레벨 작업은 계속 유지됩니다. 그러나 연산자는 거의 사용되지 않습니다.
& 및 |또는 ^XOR ~not, 부울 유형이 단일 비트 값으로 처리되는 경우 논리 NOT과의 혼동을 피하기 위해 비비트(~)를 수행할 수 없습니다. 비트 연산자는 논리 연산자와 유사하지만 단락 효과가 없습니다.
3.11 Shift 연산자
피연산자는 이진 "비트"이며 정수 유형(부울 유형 아님)을 처리하는 데만 사용할 수 있습니다.
음수는 먼저 2의 보수로 변환되어야 하며 그 이후에는 연산이 도입되지 않습니다.
왼쪽으로 이동(의 상위 비트에 있는 n 0은 버려지고, 가장 낮은 비트에 있는 n 0이 추가됩니다)<<:
11의 이진 형식은 1011 11< ;<2는 101100이므로 11<<2 = 44는 정수 11*2n
오른쪽 시프트(낮은 비트의 n 숫자가 밖으로 이동되고 n 0이 추가됨)와 동일합니다. 상위 비트)>>:
11의 이진 형식은 1011이고 11>>2 이후의 이진 형식은 0010이므로 11>>2 = 2 는 정수 11/2와 같습니다. n
부호 없는 오른쪽 시프트 연산자 >> ) 얻은 결과가 정확하지 않을 수 있습니다. 먼저 int 유형으로 변환된 다음 오른쪽으로 이동한 다음 잘려 원래 유형에 할당됩니다. 이 경우 예는 다음과 같습니다.
어셈블리 수준에서 비트 연산의 실행 속도는 매우 빠르므로 인터뷰 중에 다음과 같이 질문할 수 있습니다. Java에서 2 곱하기 8을 계산하는 가장 효율적인 방법은 무엇입니까? 답: 2 <<
이속도 증가는 의미가 없으며
코드도 직관적이지 않습니다.
3.16 Java에는
크기가 없습니다. Java에는 sizeof() 연산자가 필요하지 않습니다. 모든 데이터 유형이 모든 시스템에서 동일한 크기를 가지며 "이식" 문제를 고려할 필요가 없기 때문입니다. 요약: 너무 쉽고 자주 사용하는 지식 포인트는 노트에 나오지 않습니다. 다 나오면 책을 다시 읽어보는 것이 좋을 것 같습니다. 오늘 어떤 소프트웨어에서 이런 불만을 봤습니다
보자마자 바로 두번째가 생각났습니다 자바 장 프로그래밍 아이디어. 지식 포인트: 변수가 클래스의 멤버로 사용될 때 Java는 기본 유형 멤버 변수가 초기화되었는지 확인하기 위해 기본값이 제공되는지 확인합니다(초기 값은 그렇지 않을 수 있음). 무엇을 원하는지 직접 초기화하는 것이 가장 좋습니다.) 기본 초기화 방법은 특정 클래스에 속하지 않는 필드 변수에 적용되지 않습니다. 초기화하는 것을 잊은 경우 Java는 컴파일 중에 오류를 반환합니다. 스택: 범용 RAM(랜덤 액세스 레지스터)에 위치하며, Java 컴파일러는 스택 포인터에 저장된 모든 데이터의 크기 및 수명 주기 를 알아야 합니다. "는 아래로 이동하고, 위로 이동하면 메모리가 해제됩니다. 이는 기본 데이터 유형과 참조가 저장되는 속도 레지스터에 이어 두 번째입니다. 로컬 변수는 런타임 중에 스택에 할당됩니다. 볼륨이 크고 수명 주기가 짧습니다. 가상 머신이 각 로컬 변수를 초기화하면 오버헤드가 많이 발생하지만 변수는 그렇지 않습니다. 기본값으로 초기화되어 사용하기에 안전하지 않습니다.
위 내용은 Java 프로그래밍 사고 요약 노트 3장에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!