>  기사  >  Java  >  Java 프로그래밍 사고 요약 노트 3장에 대한 자세한 설명

Java 프로그래밍 사고 요약 노트 3장에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-24 14:32:391086검색

이 장에서는 요약할 내용이 많지 않지만 세부 사항에 주의를 기울여야 하며 그 중 일부는 잊어버리기 쉽습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.