>  기사  >  Java  >  자바와 C++의 차이점은 무엇입니까?

자바와 C++의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2021-03-24 15:25:1746268검색

차이: Java는 논리 표현식에서 부울이 아닌 값을 부울 값으로 사용할 수 없지만 C++에서는 가능합니다. C++에는 Java가 지원하지 않는 연산자 오버로딩 메커니즘이 도입되었습니다. C++에는 goto가 있지만 Java에는 goto가 없습니다. C++에는 다중 상속이 있고 Java에는 단일 상속만 있지만 Java는 인터페이스를 통해 다중 상속을 구현할 수 있습니다.

자바와 C++의 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, C++17&&java8 버전, Dell G3 컴퓨터.

C++과 Java의 차이점:

Java는 C++를 기반으로 하지만 그에 비해 Java는 더 순수한 객체 지향 프로그래밍 언어입니다. Java에서는 모든 것이 객체로 처리됩니다.

1. C++에서 객체를 생성한 후에는 삭제 메서드를 호출하여 사용 후 삭제해야 합니다. Java에는 모든 새 객체를 모니터링하고 더 이상 참조되지 않는 객체를 식별한 다음 메모리 공간을 해제하는 가비지 수집 메커니즘이 있습니다. .

2. 범위(C, C++ 및 Java의 범위는 중괄호 위치에 따라 결정됨):
그러나 다음 코드는 C 및 C++에서 유효하며 Java에서는 컴파일러가 변수가 다음과 같다고 보고합니다. 한정된. C와 C++에서는 더 큰 범위의 변수를 숨기지만 Java에서는 이를 허용하지 않습니다.

{
    int x = 12;
    {
        int x = 96;
    }
}

3. 기본 멤버의 기본값

변수가 클래스의 멤버로 사용될 때 Java는 해당 기본 유형의 멤버 변수가 초기화되도록 기본값만 제공하지만 C++에는 이것이 없습니다. 기능. 지역 변수의 경우 C++ 컴파일러가 경고를 표시하고 Java는 이를 오류로 처리합니다.

4. Java는 논리 표현식에서 부울이 아닌 값을 부울 값으로 사용할 수 없지만 C++에서는 가능합니다.

C++에서는 표현식의 값이 0이면 false이고 0이 아니면 true입니다.

예:

if(1){
}

5. Shift 연산자

Java에는 양수 또는 음수에 관계없이 "0 확장자"를 사용하는 새로운 "부호 없는" 오른쪽 시프트 연산자(>>>)가 있습니다. 높은 비트에서는 0입니다. C 및 C++에서는 사용할 수 없습니다.

6. C++에는 Java에서 지원되지 않는 연산자 오버로드 메커니즘이 도입되었지만 C#에서는 자체 오버로드된 연산자를 구현할 수 있습니다.

7. Java를 사용하면 부울 유형을 제외한 모든 기본 데이터 유형을 다른 기본 데이터 유형으로 변환할 수 있습니다. [추천 관련 동영상 튜토리얼: Java 동영상 튜토리얼]

8. Java에는 Sizeof()가 없습니다. CC++에서 sizeof() 연산자는 데이터 항목에 할당된 바이트 수를 알려줄 수 있습니다. C++의 다양한 데이터 유형은 컴퓨터마다 크기가 다를 수 있기 때문입니다. 그러나 Java의 모든 데이터 유형은 모든 시스템에서 동일한 크기입니다. (예를 들어 C++의 int는 16비트 시스템에서는 16비트, 32비트 이상에서는 32비트, long은 32비트 이하에서는 32비트, 64비트에서는 64비트입니다.)

9 C++에는 goto가 있고 Java에는 goto가 없습니다. .

Java는 유사한 점프 메커니즘인 태그를 제공합니다. 사용법 레이블:

label1:
outer-iteration{
        inner-iteration{
    break;(1)
    continue;(2)
    continue label1;(3)
break label1;(4)

}
}
  • (1)에서 break는 내부 반복을 중단하고 외부 반복으로 돌아갑니다

  • (2), continue는 실행 지점을 내부 반복의 시작으로 다시 이동합니다.

  • (3), label1을 터미널 내부 반복과 외부 반복을 동시에 계속하고 label1로 직접 이동한 다음 외부 반복부터 시작하여 반복을 계속합니다.

  • (4) break label1도 모든 반복을 중단하고 label1로 돌아가지만 반복에 다시 들어가지는 않습니다. 즉, 두 번의 반복이 완전히 종료됩니다.

10. C++의 소멸자는 객체가 삭제되기 전에 객체가 차지한 리소스를 해제할 수 있는 기회를 제공하지만 Java는 "소멸자" 또는 유사한 개념을 제공하지 않습니다. [권장 관련 비디오 튜토리얼: C++ 비디오 튜토리얼]

C++에서는 객체가 확실히 파괴됩니다(프로그램에 결함이 없는 경우).

Java에서는 객체가 항상 가비지 수집되지는 않습니다. (가비지 수집은 "파괴"와 동일하지 않음)

11. 이름 마스킹

Java 기본 클래스에 여러 번 오버로드된 메서드 이름이 있는 경우 내보낸 클래스에서 메서드 이름을 재정의하면 해당 버전이 마스크되지 않습니다. 기본 클래스에서. C++에서 서브클래스에 새로운 오버로드된 메서드를 도입하려면 기본 클래스 메서드를 보호해야 합니다.

12. C++에는 다중 상속이 있지만 Java에는 단일 상속만 있습니다. Java는 인터페이스를 통해 다중 상속을 구현할 수 있습니다.

13. Java는 반해석 및 반컴파일되며 C++보다 느리게 실행됩니다.

14. Java에는 Struct 또는 Union이 없습니다.

15. Java의 제네릭은 기본 데이터 유형의 사용을 허용하지 않습니다.

16. 배열

  • C++에서는 배열을 정의하면 저장 공간이 할당되어 사용할 수 있습니다. (정의 시 배열 크기 지정)

  • Java에서는 배열 정의 시 int arr[]은 배열 변수를 문자 그대로 정의만 하고 배열을 사용할 수 없습니다. 새로운 배열 이후에만 배열이 생성되고 저장 공간이 할당되어 사용할 수 있게 됩니다. (정의할 때 배열 크기를 지정하고 생성할 때 배열 크기를 지정하는 것은 불법입니다.)

17. C++에는 포인터가 있지만 Java에는 없습니다.

18 첨부된 내용은 32비트 시스템과 64비트 시스템에서 C++의 주요 길이를 비교한 것입니다.

자바와 C++의 차이점은 무엇입니까?

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 자바와 C++의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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