C++과 자바의 차이점은 무엇입니까?
출처: Hackernoon 프로그래밍 언어 C++와 Java는 오늘날 가장 인기 있는 언어 중 하나입니다. C++과 Java의 주요 차이점을 살펴보겠습니다. Java는 범용 프로그래밍 언어입니다. 객체지향 언어에 속합니다. Java 창시자는 WORA 원칙인 "한 번 작성하면 어디서나 실행 가능"을 구현하기를 원했습니다. 이는 Java로 작성된 애플리케이션을 개발할 때 JRE(Java Runtime Environment)가 설치되어 있는 한 모든 플랫폼에서 실행될 수 있음을 의미합니다. 프로그램은 Java로 작성된 코드를 바이트코드로 컴파일하여 실행됩니다. 이 형식은 JVM, 즉 Java Virtual Machine을 사용하여 실행됩니다. 따라서 JVM은 JRE(Java Runtime Environment)의 일부입니다. 가상 머신은 플랫폼 독립적입니다. Java에는 GC(Garbage Collector)라는 메모리 관리 메커니즘도 있습니다. 개발자는 객체를 생성하고 JRE는 객체가 중지될 때 가비지 수집기를 사용하여 메모리를 정리합니다. Java 언어의 구문은 다른 C 계열 언어의 구문과 유사합니다. 다음은 그 기능 중 일부입니다:-
대소문자 구분 - Java의 사용자와 사용자 ID는 서로 다른 엔터티입니다.
-
메소드 이름 . 메소드 이름이 한 단어로 구성된 경우 소문자로 시작해야 합니다. 예: firstMethodName() .
-
UpperCamelCase는 클래스 이름을 지정하는 데 사용됩니다. 이름이 한 단어로 구성된 경우 대문자로 시작해야 합니다. 예: FirstClassName .
-
프로그램 파일의 이름은 대소문자 구분을 고려하여 클래스 이름과 정확히 일치해야 합니다. 예를 들어 클래스 이름이 FirstClassName 인 경우 파일 이름은 FirstClassName.java 여야 합니다 .
-
식별자는 항상 문자(AZ, az), $ 또는 밑줄 _로 시작합니다.
C++ 언어란 무엇입니까?
C++는 컴파일되고 강력한 형식의 범용 프로그래밍 언어입니다. 절차적, 일반적, 기능적 등 다양한 프로그래밍 패러다임을 지원합니다. 객체 지향 프로그래밍 지원에 대부분의 관심이 집중됩니다. 기본적으로 C++는 컴퓨터에 수행할 작업을 알려주는 명령 집합입니다. 이러한 명령어 세트를 일반적으로 소스 코드 또는 간단히 코드라고 합니다. 명령은 "함수" 또는 "키워드"입니다. 키워드(C/C++ 예약어)는 언어의 기본 구성 요소입니다. 함수는 더 단순한 함수의 관점에서 작성되었기 때문에 복잡한 빌딩 블록입니다. C++ 및 Java 함수의 구조는 책의 내용과 유사합니다. 목차는 책의 장을 표시할 수 있으며, 책의 각 장은 단락으로 구성된 자체 목차를 가질 수 있습니다. 각 단락에는 자체 하위 단락이 있을 수 있습니다. C++에서는 사용할 수 있는 많은 공통 함수와 예약어를 제공하지만 언어를 사용하려면 여전히 함수를 직접 작성해야 합니다.C++와 Java의 주요 차이점
Java와 C++는 모두 객체 지향 프로그래밍 언어이지만 유사점은 이것이 끝입니다. 그들 사이에는 더 많은 차이점이 있습니다. 물론 프로젝트 개발을 위한 언어 중 하나를 선택하거나 기타 특정 사례를 선택할 때 C++과 Java 사이에는 중요한 차이가 있습니다. 주목해야 할 기준은 다음과 같습니다.도서관
자바 또는 C++? 어느 도서관이 더 크거나 더 좋나요? Java에는 더 많은 라이브러리가 있습니다. 하지만 어떤 것을 사용하고 어떤 것을 사용하지 않을지 어떻게 알 수 있나요? 다음은 그 중 일부에 대한 간략한 설명입니다.- 랭, 유틸리티, nio, io, net.
- Java에는 GUI 프레임워크 작업을 위한 라이브러리인 javax.swing(오래된 java.awt의 다소 오래된 확장)도 있습니다.
- java.sound 등을 사용하여 음악을 재생하고 MIDI 파일을 생성할 수도 있습니다.
입력 메커니즘
Java는 주로 해석되므로 플랫폼 독립적입니다. C++는 객체 코드를 생성합니다. 동일한 코드가 다른 플랫폼에서 실행될 수 없습니다.스레드 지원
Java에는 스레드에 대한 지원이 내장되어 있습니다. Java에는 새 스레드를 생성하고 시작 메서드를 재정의하기 위해 상속된 스레드 클래스가 있습니다. C++에는 기본 스레딩 지원이 없습니다. 이러한 목적을 위해 표준화되지 않은 타사 라이브러리가 사용됩니다.지원방법
Java에는 메소드 오버로딩이 있지만 연산자 오버로딩은 없습니다. String클래스는 문자열을 연결하기 위해 + 및 += 연산자를 사용하지 않고 Stringexpressions는 자동 변환 유형을 사용하지만 이는 내장된 특별한 경우입니다. C++에서는 메서드 오버로딩과 연산자 오버로딩을 모두 지원합니다.메모리 관리
Java는 자동 힙 할당 해제 제어를 지원하지만 소멸자는 지원하지 않습니다. C++에서는 개체가 소멸되면 소멸자 지원이 자동으로 활성화됩니다.다중 상속
Java는 적어도 C++와 같은 방식은 아니지만 다중 상속을 제공하지 않습니다. 다중 상속은 클래스가 둘 이상의 클래스에서 상속할 수 있는 C++의 기능입니다.결론
이것이 Java와 C++의 전체적인 차이점입니다. Java 언어는 상업 프로젝트에 이상적입니다. 적어도 은행 및 기타 금융 기관에서는 기존 프로젝트를 유지하고 리팩토링하는 것이 항상 관련성을 유지하기 때문에 대기업에서 큰 수요가 있습니다. 크로스 플랫폼 개발을 매우 잘 처리하고 이를 사용하여 모든 플랫폼용 시스템을 만들 수 있습니다. 그러나 C++에는 메서드 오버로딩과 연산자 오버로딩 지원, 소멸자 지원 등 Java에 비해 다른 장점도 있습니다.Java의 개인 생성자
출처: Dev.to Java의 생성자는 클래스 이름이나 파일 이름과 동일한 이름을 갖는 특수한 유형의 메소드입니다. 객체를 호출하면 항상 내부 생성자가 호출됩니다. 주로 객체의 상태나 클래스의 변수 값을 초기화하는 데 사용됩니다. 이제 개인 생성자가 무엇인지 살펴 보겠습니다. Java를 사용하면 사용법에 따라 메소드를 변경할 수 있습니다. 그렇다면 다른 메소드처럼 생성자를 비공개로 만들 수 있을까요? 그렇다면 개인 생성자의 용도는 무엇입니까? 답변: 예, 개인 액세스 지정자를 사용하여 Java에서 생성자를 개인 생성자로 선언할 수 있습니다. 하지만 생성자를 비공개로 선언하면 클래스의 개체를 만들 수 없다는 점을 기억하세요. 대신 Singleton 디자인 패턴에서 이 전용 생성자를 사용할 수 있습니다. 개인 생성자에 대한 규칙:- 클래스가 하위 클래스가 되는 것을 허용하지 않습니다.
- 클래스 외부에서 객체를 생성하는 것을 허용하지 않습니다.
- 클래스에 전용 생성자가 있는 경우 클래스를 확장하려고 하면 컴파일 타임 오류가 발생합니다.
- 다른 클래스에서는 비공개 생성자에 액세스할 수 없습니다.
- 클래스에 모든 상수 메서드가 있는 경우 개인 생성자를 사용할 수 있습니다.
- 모든 메소드가 정적이면 개인 생성자를 사용할 수 있습니다.
- 객체가 초기화되지 않은 경우 공용 함수를 사용하여 개인 생성자를 호출할 수 있습니다.
- 객체가 이미 초기화된 경우에만 이 객체의 인스턴스를 반환할 수 있습니다.
public class PrivateConstructorDemo
{
//creating an instance variable of the class Tester
private static PrivateConstructorDemo pcd;
//creating a private constructor
private PrivateConstructorDemo()
{
}
//creating a static method named getInstance()
public static PrivateConstructorDemo getInstance()
{
if(pcd == null)
{
//creating a constructor of the class
pcd = new PrivateConstructorDemo();
}
return pcd;
}
//main() method
public static void main(String args[])
{
PrivateConstructorDemo pcd = PrivateConstructorDemo.getInstance();
PrivateConstructorDemo pcd1 = PrivateConstructorDemo.getInstance();
//invokes the getInstance() method and prints the corresponding result
System.out.println(pcd.equals(pcd1));
}
}
결론:
진실
이제 개인 생성자의 사용 사례를 살펴보겠습니다. 개인 생성자를 사용하는 주요 목적은 객체 생성을 제한하는 것입니다. Private 생성자는 Singleton 디자인 패턴을 구현하는 데에도 사용됩니다. 개인 생성자를 사용하는 옵션은 다음과 같습니다.
- 정적 멤버 전용 클래스와 함께 사용할 수 있습니다.
- 정적 유틸리티 또는 상수 클래스와 함께 사용할 수 있습니다.
- 싱글톤 클래스를 만드는 데에도 사용할 수 있습니다.
- 팩토리 메소드를 이용한 생성 등 이름 지정에 사용할 수 있습니다.
- 또한 서브클래싱을 방지하는 데에도 사용됩니다.
- 여기에는 팩토리 메서드가 포함됩니다.
GO TO FULL VERSION