DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Newsletter
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Stop Writing Database Migration Scripts: Declarative Schema Sync for Java
  • Searching Kafka Without an Index: Lessons From Building Message Search for Kafdrop
  • ScyllaDB in Enterprise Java: High-Performance NoSQL With Eclipse JNoSQL
  • Member Spotlight: Shai Almong

Trending

  • The Permission Was Valid. The Action Was Not Authorized.
  • Spring AI on Local LLMs
  • Adding Graph Retrieval to a RAG Pipeline With Python
  • Batching Strategies: Throughput vs Latency in Practice

Draft This article hasn't been published, so readers can't see it.

In moderation This article is waiting for review, so readers can't see it yet.

Deleted This article has been deleted, so readers can't see it.

  1. DZone
  2. Coding
  3. Java
  4. What's the Difference Between Java and C++ Constructors?

What's the Difference Between Java and C++ Constructors?

Want to learn more about the difference between Java and C++ constructors? Check out this post to better differentiate between the two and how these methods are called.

By 
Javin Paul
·
Updated Aug. 28, 18 · Analysis
Post on X (opens in a new tab) Share on LinkedIn (opens in a new tab)
21.9K Views

Join the DZone community Save articles, join the discussion, and download Refcards and Trend Reports with a free account.

Join for free Already a member? Log in

If you are a C++ programmer who is now learning Java, you will find a lot of similarities between these two popular object-oriented programming languages. Both of these languages support abstraction, encapsulation, class, object, and other OOP concepts. But, there are some subtle differences as well. Both Java and C++ have a constructor, and they work the same way in Java as they do in C++. But, the way they are called is different.

For example, in Java, a constructor must be called by using the  new() operator. There is no other way to explicitly call the constructor while creating an object, but in C++, you can do it without a new operator. This is also a good interview question for programmers who know both Java and C++.

Now, switching context between C++ and Java is not easy, especially during the interview, but that's also a perfect way to test how much experience the candidate has. An experienced C++ programmer that has worked in Java for a couple of years should know the difference of the top of their head.

If you are from a C++ background and looking for a good book to learn Java, then check out Core Java, Volume 1 by Cay S. Horstmann. Horstmann puts C++ into perspective when introducing new concepts in Java. So, you will find a comparison of Generics in Java with templates in C++, which helps to understand the concept rather quickly.

Difference between C++ and Java Constructor object

Difference Between C++ and Java Constructor

As I said, both C++ and Java support the constructor, but the way they are invoked is different. You cannot invoke a Java constructor without the new() operator. They are called implicitly by the JVM when you use the  new() operator, but you can call the constructor without the new operator in C++.

In fact, this is one of the most common mistakes C++ programmers make while doing Java programming; the following will work fine in C++ but not in Java :

Course scala("Scala", 2, 300);


This is where 2 is the duration in a week and 300 is the course fee in USD.

In Java, it should look like:

Course scala = new Course("Scala", 2, 300);


Also, Java objects are always constructed in the heap, even if you create it inside a method or block.

Here are some more obvious differences between C++ and Java:

  • C++ supports pointer arithmetic, but Java doesn't.
  • C++ supports multiple inheritances, but Java doesn't. Are you curious about why? See here.
  • C++ doesn't have a garbage collector, and memory management is the developer's responsibility; Java has GC.
  • C++ is not platform independent, but Java is. Are you curious as to why? Click here for more!

Difference between Java and C++ constructor

C++ vs. Java Constructor

There is one more significant difference between C++ and Java in relation to the constructor. And, the destruction of the object is that C++ has both constructor and destructor, but Java only has a constructor.

There is no destructor in Java. Once an object becomes eligible for garbage collection, i.e. once its job is done and there is no live reference pointing to it, the garbage collector reclaims the memory from an object. The garbage collector is part of the JVM.

To confuse things a little bit, Java does provide a finalize() method, which is often mistaken by C++ developers as the destructor, which is incorrect. finalize() method doesn't reclaim memory; it's not even guaranteed to be called by the JVM when the Garbage collector reclaims memory.

Its specification says that it may be called just before an object is garbage collected and gives the object one last chance to clean up the resource it is holding. Though it's not advised to call the finalize method or to do some cleanup, it's not guaranteed. To learn more, check out Joshua Bloch's advice about finalizing in his book Effective Java.

In addition to information on using finalize, the following was found by Google itself :

Java vs C++ constructor difference

If you depend on finalize()  for freeing up system resources, e.g. database connection, file handles, etc., you will most likely end up with a resource leak in your program.

That's all on the difference between C++ and Java constructors. They work similarly and both are used to create an object and initialize them, but the slight difference comes in how they can be called. You can invoke a constructor in C++ without using the new keyword, which is not possible in Java. So, if you are coming into Java from a C++ background, make sure you always use a new keyword with the constructor in Java.

Further Reading

Java Fundamentals, Part 1 and 2

The Complete Java MasterClass

Java Interview Guide: 200+ questions

Thanks for reading this article so far. If you like this article, then please share with your friends and colleagues. If you have any questions or feedback, please drop a comment.

All the best with your Java learning!

Java (programming language)

Opinions expressed by DZone contributors are their own.

Related

  • Stop Writing Database Migration Scripts: Declarative Schema Sync for Java
  • Searching Kafka Without an Index: Lessons From Building Message Search for Kafdrop
  • ScyllaDB in Enterprise Java: High-Performance NoSQL With Eclipse JNoSQL
  • Member Spotlight: Shai Almong

Partner Resources

×

Comments

Loading comments

The comments didn't load

Please try again in a moment.

Likes

Loading

The next likes didn't load. Please try again.

The likes didn't load

Please try again in a moment.

See who liked this

Log in or join DZone for free to see who liked this article.

Log in Join for free
  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook