My answer will be a big surprise considering you're posting this question on a Java board: learn Java first.
The reason is that you'll be a much better OO programmer once you work with Java exclusively for a few months, provided you're really thinking about every little thing and you rack up a good amount of writing code in that time. One thing I found when I learned Java is that it made a lot of OO concepts clear to me that C++ doesn't explicitly call out as a language.
A quick history lesson on C++...it's not actually an "object-oriented" language. If you want to be really pure about it, neither is Java, because true OO languages are only allowed to have objects, and both of these languages have primitive types: int, long, char, etc. So, if we look at these languages on a spectrum from object-oriented programming (OOP) to procedure-oriented programming (POP), I'd say that C++ falls about 1/3 from the POP extreme and Java falls about 1/4 from the OOP extreme. (The joke goes that C++ is more like a "procedure-/object-oriented language", or POOP.)
So, the upshot is, there's a lot more OO you'll learn and solidify programming in Java, and then you can take that knowledge over to C++. For example, C++ allows global variables, Java does not. So if you learn Java first, you'll find out how Java handles situations where you need globally accessible constants (like pi, for example)...you enclose those constants in a class and make the class available to anyone who wants to use it. This is very cool, even though it seems a bit more complex than the C/C++ way, because by forcing those constants into a class you've organized them out of some nebulous, general namespace into a specific one.
Another Java language construct is the interface. Once you program and read enough about Java to understand why an interface is not just an "pure" abstract class (or "pure virtual" as C++ calls it), you'll be able to go back to C++ and use pure virtual classes as you would a Java interface, which will result in better designed code.
Java's event model will also provide insight on how objects can communicate with each other--there is no such standard in C++. And on, and on.
Ultimately, though, I'd say that if you're interested in teaching yourself a bevy of languages, after you learn Java the thing that will truly help you the most is to go to Assembly. Yes, plain old Assembly. That'll teach you all the nuts'n'bolts of how a computer really does what it does. After that, I'd learn C. Because you already know Java's syntax and Assembly's memory management, you'll find learning C and C++ are cake. You can probably pick up both of these languages in a week or two if you're solid in the other two. And at some point
you should study up on regular expressions because just about every language use some variant, and you can even use reg exps in shells and shell scripts if you run linux.
The sky's the limit from there: PHP, Perl, Python, C#, Smalltalk, Lisp, Eiffel, Objective-C (no reason to learn this one nowadays). I think you'll find that once you learn the basics of how a computer works and OO, you'll pick up new languages rapidly.
sev