Everyone prefer to learn different way, I favor books.
If you are just starting of (I'll presume you are new to programming in general) start with
Head First Java-O'Reilly Media.
Great and fun to read book that will get you started with basics.
Next go thru these videos:
Course | Programming Methodology - YouTube - Check video descriptions for everything you will need to follow them.
Upon finishing the videos I urge you to read
Effective Java by Joshua Bloch followed by
Java Concurrency in Practice and if you got time
Java Generics and Collections (O'Reilly).
For your next question, I don't think there is any point to learn C# or similar language if you already know Java (tho it would be a very easy thing to do thanks to how similar these two languages are). I'd say learn C next.
It will give you great understanding of how computers actually work and will therefore allow you to think on entirely new level. Also if you decide to learn C++ later you can easily do so since they are very much alike. After all C++ is an enhancement to the C language.
You will probably end up learn C++ sooner or later but seriously, start with C. It is closer to the machine (you'll learn more) but at the same time MUCH easier to learn than most other languages (C is a tiny language).
If you choose to learn C, here are some books I highly recommend (for a beginner):
C How to Program, 6/e followed by
The C Programming Language by Brian Kernighan and Dennis Ritchie, very old book but still adequate (in fact best book on C till date). Polish your C with
C Programming: A Modern Approach
If you later decide to learn C++, take a look at these books:
Book Reviews - C and C++ Books and References - Cprogramming.com
P.S.
You should consider Python too.
Extremely easy to learn and write, flexible, purely awesome and can do pretty much anything that Java and C++ can but with much shorter development time.