The correct answer is "depends on what you want to do". But of course that doesn't *really* give you what you're looking for, so I'll throw in a few things that each are good at. To start with, both of them are good "cross-platform" languages. Meaning, they're not specific to only Windows or only Mac, Linux, Unix, or whatever.
C++: Look, if your objective is to become a low-level hardcore software engineer, you'll need this. You'll be able to write programs, libraries, device drivers, etc. that do some really powerful stuff very fast. You'll be expected to manage memory and control the machine directly, so it's easy to spend a lot of time creating broken software if you don't really know what you're doing. What will be very difficult to do is write (within a reasonable amount of time and effort) end-user applications for Windows, Mac, Mobile, Web. There are simply better languages and IDEs for those. But, even if you do those later on, C++ is a great place to start. But it is very difficult to get good at it.
Java: Very similar syntax to C++, so if you started with C++ it will be fairly easy to learn versus jumping right into Java. But either way, Java is purely object oriented so once you understand OO concepts, it'll just start clicking in your mind and you'll be able to translate your ideas into applications you can build fairly quickly, or at least more quickly than C++. Java is also great for applications that run on servers, powerful applications that will run on the web (server or client-side). And here's a neat bonus growing considerably (ie, jobs, projects, money) over the past year or so: If you want to do application (ie, "app") development for Android-based smartphones, Java is the ticket.
So in the end, I could write pages and pages about this, but you probably just want a quick answer to jump off, so there ya go.
Good luck!