How to start learning Java?

I currently have 1 year of programming background in C. I think it's time to move on to OOP programming. Should I start learning Java or C++?

  • I have started Java. But, I want to get clear on topics that will learning java be sufficient for the following: 1. Competitive Programming. 2. Job Interviews. 3. Understanding OOP clearly. Will I miss something if I start with java without learning C++? Also, if it's required to do C++, will it be a good idea to do C++ after Java?

  • Answer:

    Er, why not learn both? You already know C, first start with C++. It would be pretty smooth and quick. And then once you have understood what classes are, picking up java will be easy as well.

Kunal Singhal at Quora Visit the source

Was this solution helpful to you?

Other answers

Java will be more than sufficient for all the three objectives. The reasons are as follows:- 1. Competitive Programming:- Classes like BigInteger and BigDecimal help you do operations on HUGE numbers. You can Collection framework which contain all the important data structures and sorting algorithms so that you can focus on the application of algorithms and not creating data structures from scratch.     I agree that you have STL's in C++ for that but you asked if Java will help you in competitive programming and the answer is yes. 3. Learning OOP:- Java isn't a pure OO language. It's just more object-oriented than C++. You can learn all the OOP concepts in Java a little better than that in C++. But, in order to learn the real OOP, you need to work on some big projects. Creating a project in 10 hours doesn't teach you the real OOP. You really need to work on some kick ass projects (such as OSS) which involve thousands of man ours. 2. Job Interviews:- A definite yes. Most of the big organisations use Java for their enterprise softwares. Java helps you write huge systems (Erlang does it as well, but Java has more legacy code base). This gives you an advantage as you will be knowing Java really well.     Java is being in all the fields - networking software, mobile apps, web development, distributed systems, etc. This gives you a huge range but it also means that you need to be an expert in your domain. You cannot hope to master all these subfields - Java is just too big to be mastered completely. But if you can try and become master of one (two, maybe?) domains, you can definitely increase chances. As an additional piece of advice, I would suggest that you learn a scripting language like Python or Ruby as well. Learning them is important because Java is not a language that you would want to use to prototype a project. If you want to create website or write a program to get something done quickly, Java will it so tedious that you will think about giving up. So, while learning Java, please learn python or ruby (I don't much idea about other scripting languages).

Kunal Suri

dont get confused.....be focused start learning CORE JAVA u will get to know about OOP concept. 1.compettitive programming:sure if you will get your concepts cleared in Core java 2.job interviews: there are lot of openings in java rather than in c/c++ go for it.. 3.understanding oop clearly:sure if you will get your concepts cleared in Core java and you are not going to miss anything if you start java without learning C++,stick to one language get thorough knowledge of it then start exploring what all technologies you want to learn.... all the very best for prep

Rahul Shukla

Stick to one language, master it at every level. I would suggest you to stop at C/C++. Mastering C++ is going to take lot of hard work, and the fruits you will bear from learning it are immense in terms of knowledge and monetary benefits. I personally hate or do not recommend Java. Choose what you exactly want to do, and not learn everything that comes your way as that wouldn't ever help you in your interviews. Aim a single domain and read relevant books or programming language based on that.

Deepak Bhasin

Start doing OOP in C. See what constraints you face. Then move to C++ and see what constructs are available there to lift those constraints. Then you can learn Java and better appreciate why it was designed the way it was.

Anonymous

It's good you want to start learning Java. But I would recommend you to learn C++  before moving to Java. Understanding OOPS:- Java is a pure object oriented language. You might get overwhelmed after directly switching to it from C. C++ proves as a good base for OOPS concepts. Switching from C++ to Java is a simple transition and you would be able grasp everything quicker and better. Competitive Programming:- C++ is given preference in algorithmic challenges and online competitions as it is faster than Java and easier to implement. Try to learn STL in C++. Using STL you can write clean and fast code, which is the motive of algorithmic challenges. Job Interviews- Interviewers generally don't want proper codes rather optimized algorithms. They would be satisfied if you able to provide a clean algorithm and answer their follow-up to your solution. However, if they ask you to code knowing C++ STL is enough. No interviewer can ever say no to C++ (However they can stop you from using STL if they want to test your basic DS skills.) All in all, C++ sounds better for you right now. Peace.

Anonymous

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.