C++ is indeed "OO on C". It was followed very quickly by Objective-C which came out of Steve Jobs' NeXT adventure, but it is a complete niche player.
Java was an attempt at a "new" OO Language, but its really about 90% C++, and its mainly missing multiple-inheritance, which drives us OO nuts up the wall.
People always have a *very* hard time distinguishing the language from the library support around it. The main thing that really distinguishes Java is that it has standardized its UI and communications libraries as part of the standard and made them at least somewhat platform independent. The "cross-platform" UI is based on an amalgamation of several X-Server (Unix) widget libraries, and as a result, its really sucky on Windows and Mac. Don't be fooled: its pretty worthless if you want a "native" look and feel.
This mistaken tying of the language to the environment is the *only* basis for saying that "Microsoft owns C++". In fact, in the last several releases of Visual Studio, C++ has been a poor stepchild, much to the chagrin of most of Microsoft's development groups. They added a completely new library to replace MFC (CLR) a few years ago and finally added C++ support for it in VS2005, and while its highly "proprietary" its really no moreso than MFC has been for the last 15 years (yes, its that old).
C++ has numerous "standard" interfaces, but as with Java, they tend to be Unix like. Those of us who do this for a living know that if you actually want your users to want your product, you have Windows and Mac code lines that hopefully have the UI somewhat abstracted, but...good luck with that.
Java's "performance" issues are a red herring. Many systems compile it completely and App Servers from IBM, Weblogic, Oracle, etc. have more than adequate performance for very high transaction rate applications. If you were to use it for games, I'd strongly suggest you do get a Java compiler (oodles of them to choose from from Sun, Borland, Oracle, IBM, etc.).
C# is Microsoft's proprietary version of Java. As such, it uses their proprietary CLR library, and "Java applications" are not portable into it except for close similarity of language syntax. Don't bother with C# unless you're dealing with legacy apps now that use it: with full support for CLR in C++, some of us are betting that C# might die an ugly if delayed death.
Game programming: yes, go with C++. Good perf, strong UI libs in existence (in fact, I'd say go with the game programming tools rather than trying to build your own physics and rendering engines!).
General programming: C++ again, but if you want to start simple,
VB will do, but it will teach you some very nasty programming habits (if statements with out "end ifs" sacrelige!

(I know you can quibble with this one Q: don't bother!))
Web programming: Java Server Pages. Yes, some folks like PHP, and the installed base makes it more useful for "home" use, but if you want a job, you have to have JSP/J2EE/AppServer knowledge. Avoid ASP.Net unless you're really gonna stay in MS-land. It totally bit the big one until 2.0, and even that is idiocyncratic as all heck. Its a programmer's full employment act though!
Hacking: Okay, I'll second the motion on Perl, but I still think you need to have a seriously bent mind to think its "easy to use". It reminds me of
APL. Scripting is the main use. Its got some weird applications, but don't bother to learn it until you *need* it.
AI: Lisp. Lisp. Lisp. Franz if you can afford it, GNU CommonLISP if you can't. But Lisp.
Language maven,

Buffy