I Used to be a c++ programmer and now i'm starting to learn java all by my self so i need a help in how to get starting begging with compiler and IDE tools and the basic diffrants between c++ and java
Thanks

Look at the first stickied post. It is stickied there for a reason. It will provide everything you are asking , from compilers to tutorials.

I Used to be a c++ programmer and now i'm starting to learn java all by my self so i need a help in how to get starting begging with compiler and IDE tools and the basic diffrants between c++ and java
Thanks

Since you used to be a programmer, I'd suggest for you to get used to using IDE's such as--

NetBeans 6.1 (or higher)

--there are others (I think JUnit is one) but this is a very good one that will help you familiarize yourself with the language easily.


A Note about Java vs C++.

The biggest differences are--

Java has "reference-variables" that act as references AND pointers.

Java's Erasure types (Generics) are not as lenient as C++'s Templates.

Java has incredibly extensive libraries. Learning the syntax is easy, but learning the variety of API's can take you quite some time.

In Java, you pass by reference, not value. Also no method that returns a reference can be treated as an lvalue.

There is no misdirection operator in Java. You use the dot (. ) operator for member-access in all scenarios. For example--

// C++ style

int p[] = {1, 3, 2, 4}, size = 4;

//assuming Sort is a class and Merge is an inner class
Sort::Merge *merge = new Sort::Merge; // :: member access for inner class Merge

merge->mergeSort(p, 0, size - 1); // -> misdirection for method mergeSort in inner class Merge

// Java style

int p[] = {1, 3, 2, 4};

Sort s = new Sort(); // paranethesis always required when instantiating an object, even if
                              // the object has no other defined Constructor

Sort.Merge merge = s.new Merge(); // pointers/references not declared differently
                                                     // dot operator instead of ::
                                                     // Reference-qualifier needed for inner class construct
                                                     // Java only uses heap, no stack so all new objects
                                                     // are declared new for references/pointers

merge.mergeSort(p, 0, p.length - 1); // . operator used for java "pointers"

There are more differences, but these should help you get started with understanding the differences.

Oh by the way, Java's generics are a bit more restrictive than Templates. You cant use primitive types (even if they are constant integral types) for Generics. You can only use Objects.

If you have the absolute need to declare a constant pointer, or a solid reference to a particular address and still want to be able to change the value, you can use the final modifier.

Be warned that also, Java has no real const (read-only) modifier, as opposed to C/C++.

Comments
Perfect Answer

Thanks alot Alex you clearified so many things to me
Thanks

This article has been dead for over six months. Start a new discussion instead.