c vs java top 30 differences between c
이 심층 자습서에서는 두 객체 지향 프로그래밍 언어 C ++ 대 Java 간의 주요 차이점을 설명합니다.
C ++와 Java는 모두 객체 지향 프로그래밍 언어입니다. 그러나 두 언어는 여러면에서 서로 다릅니다.
C ++는 C에서 파생되었으며 절차 적 및 객체 지향 프로그래밍 언어의 기능을 모두 가지고 있습니다. C ++는 애플리케이션 및 시스템 개발을 위해 설계되었습니다.
Java는 본질적으로 매우 안전하고 이식성이 뛰어난 가상 머신을 기반으로합니다. 기존 플랫폼의 추상화를 지원하기 위해 포괄적 인 라이브러리로 그룹화됩니다.
Java는 주로 응용 프로그램 프로그래밍을 위해 설계되었으며 나중에 네트워크 컴퓨팅으로 개발 된 인쇄 시스템 용 인터프리터 기능이 있습니다.
추천 읽기 => 모두를위한 C ++ 교육 가이드
학습 내용 :
C ++ 대 Java의 주요 차이점
이제 C ++ 대 Java 간의 주요 차이점에 대해 논의하겠습니다.
지도 시간.
# 1) 플랫폼 독립
C ++ | 자바 | ||
---|---|---|---|
7 | 도서관 인터페이스 | 네이티브 시스템 라이브러리에 대한 직접 호출을 허용합니다. | Java Native 인터페이스 및 Java Native Access를 통해서만 호출합니다. |
C ++는 플랫폼 종속 언어입니다. C ++로 작성된 소스 코드는 모든 플랫폼에서 컴파일되어야합니다. | Java는 플랫폼에 독립적입니다. 바이트 코드로 컴파일되면 모든 플랫폼에서 실행할 수 있습니다. |
# 2) 컴파일러와 인터프리터
C ++ | 자바 |
---|---|
C ++는 컴파일 된 언어입니다. 작성된 소스 프로그램 C ++에서는 출력을 생성하기 위해 실행될 수있는 객체 코드로 컴파일됩니다. | 자바는 컴파일되고 해석되는 언어입니다. Java 소스 코드의 컴파일 된 출력은 플랫폼에 독립적 인 바이트 코드입니다. |
# 3) 이식성
C ++ | 자바 |
---|---|
C ++ 코드는 이식 할 수 없습니다. 각 플랫폼에 대해 컴파일해야합니다. | 그러나 Java는 코드를 바이트 코드로 변환합니다. 이 바이트 코드는 이식 가능하며 모든 플랫폼에서 실행할 수 있습니다. |
# 4) 메모리 관리
C ++ | 자바 |
---|---|
C ++의 메모리 관리는 수동입니다. new / delete 연산자를 사용하여 메모리를 수동으로 할당 / 할당 해제해야합니다. | Java에서 메모리 관리는 시스템 제어입니다. |
# 5) 다중 상속
C ++ | 자바 |
---|---|
C ++는 단일 및 다중 상속을 포함하여 다양한 유형의 상속을 지원합니다. 다중 상속으로 인해 문제가 발생하더라도 C ++는 virtual 키워드를 사용하여 문제를 해결합니다. | Java는 단일 상속 만 지원합니다. Java의 인터페이스를 사용하여 다중 상속의 효과를 얻을 수 있습니다. |
# 6) 과부하
C ++ | 자바 |
---|---|
C ++에서 메서드와 연산자는 오버로드 될 수 있습니다. 이것은 정적 다형성입니다. | Java에서는 메서드 오버로딩 만 허용됩니다. 연산자 오버로딩을 허용하지 않습니다. |
# 7) 가상 키워드
C ++ | 자바 |
---|---|
동적 다형성의 일부로 C ++에서 가상 키워드는 파생 클래스에서 재정의 될 수있는 함수를 나타내는 함수와 함께 사용됩니다. 이렇게하면 다형성을 얻을 수 있습니다. | Java에서는 virtual 키워드가 없습니다. 그러나 Java에서는 기본적으로 모든 비 정적 메서드를 재정의 할 수 있습니다. 또는 간단히 말해서 Java의 모든 비 정적 메서드는 기본적으로 가상입니다. |
# 8) 포인터
C ++ | 자바 |
---|---|
C ++는 포인터에 관한 것입니다. 이전 튜토리얼에서 보았 듯이 C ++는 포인터를 강력하게 지원하며 포인터를 사용하여 많은 유용한 프로그래밍을 할 수 있습니다. | Java는 포인터를 제한적으로 지원합니다. 처음에 Java에는 포인터가 전혀 없었지만 이후 버전에서는 포인터에 대한 제한된 지원을 제공하기 시작했습니다. Java에서 포인터를 C ++에서 사용할 수있는 것만 큼 여유롭게 사용할 수는 없습니다. |
# 9) 문서 주석
C ++ | 자바 |
---|---|
C ++는 문서 주석을 지원하지 않습니다. | Java에는 문서 주석 (/ **… * /)에 대한 기본 지원이 있습니다. 이렇게하면 Java 소스 파일이 자체 문서를 가질 수 있습니다. |
# 10) 스레드 지원
C ++ | 자바 |
---|---|
C ++에는 내장 스레드 지원이 없습니다. 대부분 타사 스레딩 라이브러리에 의존합니다. | Java는 'thread'클래스로 내장 된 스레드 지원입니다. 스레드 클래스를 상속 한 다음 run 메서드를 재정의 할 수 있습니다. |
더 많은 차이점…
# 11) 루트 계층
C ++는 절차 적이며 객체 지향 프로그래밍 언어입니다. 따라서 특정 루트 계층 구조를 따르지 않습니다.
Java는 순수한 객체 지향 프로그래밍 언어이며 단일 루트 계층 구조를 가지고 있습니다.
# 12) 소스 코드 및 클래스 관계
C ++에서 소스 코드와 파일 이름은 모두 관계가 없습니다. 이것은 우리가 C ++ 프로그램에 많은 클래스를 가질 수 있고 파일 이름은 무엇이든 될 수 있음을 의미합니다. 클래스 이름과 같을 필요는 없습니다.
Java에서는 소스 코드 클래스와 파일 이름 사이에 밀접한 관계가 있습니다. 소스 코드와 파일 이름을 포함하는 클래스는 동일해야합니다.
예를 들어 , Java에 salary라는 클래스가있는 경우이 클래스 코드를 포함하는 파일 이름은 'salary.java'여야합니다.
# 13) 개념
C ++ 프로그램의 개념은 한 번 작성되었으며 C ++는 플랫폼 독립적이지 않기 때문에 어디서나 컴파일됩니다.
반대로 Java 프로그램의 경우 Java 컴파일러에서 생성 된 바이트 코드가 플랫폼에 독립적이며 모든 시스템에서 실행될 수 있으므로 한 번 작성되고 어디서나 실행됩니다.
# 14) 다른 언어와의 호환성
C ++는 C를 기반으로합니다. C ++ 언어는 대부분의 다른 고급 언어와 호환됩니다.
Java는 다른 언어와 호환되지 않습니다. Java는 C 및 C ++에서 영감을 얻었으므로 구문은 이러한 언어와 유사합니다.
#열 다섯) 프로그래밍 언어 유형
C ++는 절차 적 및 객체 지향 프로그래밍 언어입니다. 따라서 C ++에는 절차 언어와 관련된 기능과 객체 지향 프로그래밍 언어의 기능이 있습니다.
Java는 완전한 객체 지향 프로그래밍 언어입니다.
# 16) 도서관 인터페이스
C ++는 네이티브 시스템 라이브러리에 대한 직접 호출을 허용합니다. 따라서 시스템 수준 프로그래밍에 더 적합합니다.
Java는 기본 라이브러리에 대한 직접적인 호출 지원이 없습니다. Java Native Interface 또는 Java Native Access를 통해 라이브러리를 호출 할 수 있습니다.
# 17) 차별화 된 기능
절차 적 언어 및 객체 지향 언어와 관련된 기능은 C ++의 차별화 된 기능입니다.
C ++ 바이너리 트리 구현
자동 가비지 수집은 Java의 차별화 된 기능입니다. 한편 Java는 소멸자를 지원하지 않습니다.
# 18) 유형 의미
C ++의 유형 의미에 관한 한 기본 유형과 객체 유형은 일관됩니다.
그러나 Java의 경우 기본 유형과 객체 유형간에 일관성이 없습니다.
# 19) 입력 메커니즘
C ++는‘>>’및‘와 함께 cin 및 cout을 사용합니다.<<’ operators respectively to read in and write the data.
Java에서 System 클래스는 입출력에 사용됩니다. 입력을 읽기 위해 한 번에 한 바이트 씩 읽는 System.in을 사용합니다. System.out 구성은 출력을 작성하는 데 사용됩니다.
#이십) 액세스 제어 및 개체 보호
C ++에는 액세스를 제어하는 액세스 지정자와 보호를 보장하는 강력한 캡슐화가있는 개체에 대한 유연한 모델이 있습니다.
자바는 캡슐화가 약한 비교적 번거로운 객체 모델을 가지고 있습니다.
#이십 일) Goto 문
C ++는 goto 문을 지원하지만 프로그램에서 사용하는 결과를 방지하기 위해 사용을 최소화해야합니다.
Java는 goto 문에 대한 지원을 제공하지 않습니다.
# 22) 범위 해결 연산자
범위 확인 연산자는 전역 변수에 액세스하고 클래스 외부의 메서드를 정의하는 데 사용됩니다.
C ++는 전역 변수에 액세스하는 데 사용하는 범위 확인 연산자를 지원합니다. 또한 클래스 외부에서 함수를 정의하고 범위 확인 연산자를 사용하여 액세스 할 수 있습니다.
반대로 Java는 범위 확인 연산자를 지원하지 않습니다. Java는 또한 외부에서 함수를 정의하는 것을 허용하지 않습니다. 메인 기능을 포함하여 프로그램과 관련된 모든 것은 클래스 안에 있어야합니다.
# 2. 3) 시도 / 캐치 블록
C ++에서는 코드에서 예외가 발생할 수 있음을 알고 있더라도 try / catch 블록을 제외 할 수 있습니다.
그러나 Java에서 코드에서 예외가 발생한다고 확신하는 경우 try / catch 블록 아래에이 코드를 포함해야합니다. Java에서는 소멸자를 지원하지 않으므로 예외가 다릅니다.
# 24) 런타임 오류 감지
C ++에서 런타임 오류 감지는 프로그래머의 책임입니다.
Java에서 런타임 오류 감지는 시스템에 의해 제어됩니다.
# 25) 언어 지원
하드웨어와의 근접성 및 시스템 리소스에 액세스 할 수있는 라이브러리로 인해 C ++로 개발 된 데이터베이스, 엔터프라이즈, 게임 등 다양한 응용 프로그램이 있지만 C ++는 시스템 프로그래밍에 더 적합합니다.
# 26) 데이터 및 기능
C ++에는 전역 범위와 네임 스페이스 범위가 있습니다. 따라서 데이터와 함수는 클래스 외부에도 존재할 수 있습니다.
Java에서는 모든 데이터와 함수가 클래스에 있어야합니다. 전역 범위는 없지만 패키지 범위는있을 수 있습니다.
# 27) 구조 및 연합
구조 및 공용체는 데이터 유형이 다른 멤버를 가질 수있는 데이터 구조입니다. C ++는 구조체와 공용체를 모두 지원합니다.
그러나 Java는 구조 또는 공용체를 지원하지 않습니다.
# 28) 개체 관리
C ++에서 개체는 수동으로 관리됩니다. 개체의 생성 및 소멸은 각각 new 및 delete 연산자를 사용하여 수동으로 수행됩니다. 또한 클래스 객체에 생성자와 소멸자를 사용합니다.
Java는 생성자를 지원하지만 소멸자를 지원하지 않습니다. Java는 또한 개체를 수집하고 제거하기 위해 자동 가비지 수집에 크게 의존합니다.
# 29) 매개 변수 전달
값에 의한 전달과 참조에 의한 전달은 프로그래밍에 사용되는 두 가지 중요한 매개 변수 전달 기술입니다. C ++는 이러한 기술을 모두 지원합니다.
그러나 Java는 매개 변수 전달의 Value 기법에 의한 전달 만 지원합니다.
#삼0) 하드웨어
C ++는 하드웨어에 가깝고 하드웨어 리소스를 조작 할 수있는 많은 라이브러리가 있습니다. 하드웨어에 가깝기 때문에 C ++는 종종 시스템 프로그래밍, 게임 응용 프로그램, 운영 체제 및 컴파일러에 사용됩니다.
Java는 대부분 응용 프로그램 개발 언어이며 하드웨어에 가깝지 않습니다.
표 형식 : C ++ 대 Java
아래는 이미 논의한 C ++와 Java 간의 비교를 표로 나타낸 것입니다.
하지 마라. | 비교 매개 변수 | C ++ | 자바 |
---|---|---|---|
1 | 플랫폼 독립성 | C ++는 플랫폼에 따라 다릅니다. | Java는 플랫폼에 독립적입니다. |
두 | 컴파일러 및 통역사 | C ++는 컴파일 된 언어입니다. | 자바는 컴파일되고 해석되는 언어입니다. |
삼 | 소스 코드 및 클래스 관계 | 클래스 이름 및 파일 이름과 엄격한 관계가 없습니다. | 클래스 이름과 파일 이름 사이에 엄격한 관계를 적용합니다. |
4 | 개념 | 어디서나 컴파일 한 번 작성하십시오. | 언제 어디서나 한 번 실행하십시오. |
5 | 다른 언어와의 호환성 | 객체 지향 기능을 제외하고 C와 호환됩니다. | 구문은 C / C ++에서 가져옵니다. 다른 언어와의 역 호환성이 없습니다. |
6 | 프로그래밍 언어 유형 | 절차 및 객체 지향. | 객체 지향. |
8 | 루트 계층 | 루트 계층이 없습니다. | 단일 루트 계층을 따릅니다. |
9 | 차별화 된 기능 | 절차 적 및 객체 지향 기능을 지원합니다. | 소멸자가 없습니다. 자동 가비지 수집. |
10 | 휴대 성 | C ++ 코드는 이식 할 수 없습니다. | Java는 이식 가능합니다. |
열한 | 유형 의미 | 기본 유형과 객체 유형간에 일치합니다. | 일관성이 없습니다. |
12 | 입력 메커니즘 | Cin 및 Cout은 I / O에 사용됩니다. | System.in 및 System.out.println |
13 | 액세스 제어 및 개체 보호 | 유연한 개체 모델 및 일관된 보호. | 개체 모델이 번거롭고 캡슐화가 약합니다. |
14 | 메모리 관리 | 안내서 | 시스템 제어. |
열 다섯 | 다중 상속 | 선물 | 결석 |
16 | Goto 문 | Goto 문을 지원합니다. | goto 문을 지원하지 않습니다. |
17 | 범위 해결 연산자 | 선물 | 결석 |
18 | 시도 / 캐치 블록 | try / catch 블록을 제외 할 수 있습니다. | 코드가 예외를 발생시켜야하는 경우 제외 할 수 없습니다. |
19 | 과부하 | 연산자 및 메서드 오버로딩을 지원합니다. | 연산자 오버로딩을 지원하지 않습니다. |
이십 | 가상 키워드 | 재정의를 용이하게하는 가상 키워드를 지원합니다. | 가상 키워드가 없으며 모든 비 정적 메서드는 기본적으로 가상이며 재정의 할 수 있습니다. |
이십 일 | 런타임 오류 감지 | 프로그래머에게 맡겼습니다. | 시스템 책임 |
22 | 언어 지원 | 주로 시스템 프로그래밍에 사용됩니다. | 주로 애플리케이션 프로그래밍에 사용됩니다. |
2. 3 | 데이터 및 기능 | 데이터와 함수는 클래스 외부에 존재합니다. 전역 및 네임 스페이스 범위가 지원됩니다. | 데이터와 함수는 클래스 내부에만 존재하며 패키지 범위를 사용할 수 있습니다. |
24 | 포인터 | 포인터를 지원합니다. | 포인터에 대한 제한된 지원 만 있습니다. |
25 | 구조 및 연합 | 지원 | 지원되지 않음 |
26 | 개체 관리 | 신규 및 삭제를 통한 수동 개체 관리. | 가비지 컬렉션을 사용한 자동 개체 관리. |
27 | 매개 변수 전달 | 값으로 호출 및 참조로 호출을 지원합니다. | 값별 호출 만 지원합니다. |
28 | 스레드 지원 | 스레드 지원은 그다지 강력하지 않으며 타사에 의존합니다. | 매우 강력한 스레드 지원. |
29 | 하드웨어 | 하드웨어에 더 가깝습니다. | 하드웨어와 상호 작용하지 않습니다. |
30 | 문서 주석 | 문서 주석을 지원하지 않습니다. | Java 소스 코드에 대한 문서를 작성하는 문서 주석 (/ **… * /)을 지원합니다. |
지금까지 C ++와 Java의 주요 차이점을 자세히 살펴 보았습니다. 다음 섹션에서는 프로그래밍 세계에서 C ++ 및 Java와 관련하여 자주 묻는 질문에 대한 답변을 제공합니다.
C ++ 및 Java에서 자주 묻는 질문
Q # 1) C ++ 또는 Java가 더 나은 것은 무엇입니까?
대답: 글쎄, 우리는 어느 것이 더 낫다고 말할 수 없습니다. C ++와 Java는 모두 장단점이 있습니다. C ++는 대부분 시스템 프로그래밍에 좋지만 Java로는 할 수 없습니다. 그러나 Java는 웹, 데스크톱 등과 같은 응용 프로그램에서 탁월합니다.
실제로 C ++는 시스템 프로그래밍에서 엔터프라이즈, 게임에 이르기까지 모든 것을 할 수 있습니다. 자바는 웹이나 기업에서 더 많은 일을 할 수 있습니다. Java가 개발하도록 남겨 둘 수없는 특정 저수준 프로그래밍 응용 프로그램이나 게임 등과 같은 응용 프로그램이 있습니다.
따라서 그것은 전적으로 우리가 개발하는 응용 프로그램에 달려 있습니다. 가장 좋은 방법은 두 언어의 장단점을 미리 평가하고 개발중인 응용 프로그램에 대한 고유성을 확인한 다음 어느 것이 가장 좋은지 결론을 내리는 것입니다.
Q # 2) C ++가 Java보다 강력합니까?
대답: 다시 말하지만 이것은 까다로운 질문입니다! 구문이나 언어 학습이 얼마나 쉬운 지에 관해서는 Java가 점수를 매 깁니다. 시스템 프로그래밍 및 / 또는 기타 저수준 응용 프로그램의 경우 C ++가 더 강력합니다.
어떤 사람들은 자동 GC 수집, 포인터, 다중 상속이 없으면 Java를 더 강력하게 만든다고 주장 할 수 있습니다.
하지만 속도면에서 C ++는 강력합니다. 또한 상태를 저장해야하는 게임과 같은 응용 프로그램에서 자동 가비지 수집은 작업을 망칠 수 있습니다. 따라서 여기서 C ++는 분명히 강력합니다.
Q # 3) C 나 C ++를 몰라도 Java를 배울 수 있습니까?
대답: 네, 물론입니다!
프로그래밍의 기초와 객체 지향 프로그래밍 개념을 알게되면 Java 학습을 시작할 수 있습니다.
Q # 4) C ++는 Java와 비슷합니까?
대답: 어떤면에서는 예,하지만 어떤면에서는 아닙니다.
예를 들어 C ++와 Java는 모두 객체 지향 프로그래밍 언어입니다. 애플리케이션 개발에 사용할 수 있습니다. 구문이 비슷합니다.
그러나 메모리 관리, 상속, 다형성 등과 같은 다른 경우에는 C ++와 Java가 완전히 다릅니다. 마찬가지로, 원시 데이터 유형, 객체 처리, 포인터 등에 관해서는 두 언어가 모두 다릅니다.
Q # 5) Java는 C ++로 작성 되었습니까?
대답: Java는 Sun과 IBM의 Java Virtual Machine (JVM)이라는 의미에서 C ++로 작성되었습니다. Java 라이브러리는 Java에 있습니다. 다른 JVM은 C로 작성됩니다.
결론
C ++와 Java는 모두 객체 지향 프로그래밍 언어입니다. 또한 C ++는 절차 적 언어이기도합니다. 두 언어가 서로 완전히 다른 상속, 다형성, 포인터, 메모리 관리 등과 같은 일부 기능이 있습니다.
C ++에는 하드웨어와의 근접성, 더 나은 개체 관리, 속도, 성능 등과 같은 몇 가지 특성이있어 Java보다 더 강력 해져 개발자가 저수준 프로그래밍, 고속 게임 응용 프로그램, 시스템 프로그래밍에 C ++를 사용하도록 동기를 부여합니다. 등
비슷한 방식으로 Java의 더 쉬운 구문, 자동 가비지 수집, 포인터 부족, 템플릿 등으로 인해 Java는 웹 기반 응용 프로그램에서 가장 선호되는 제품입니다.
=> 전체 C ++ 자습서 목록을 보려면 여기를 방문하십시오. .