[Edit: This post is wrong. C does initialize static storage to 0. But it also (which I didn't know) fills out partially-specified arrays with 0. So there's no problem with the documentation.]
The documentation at http://www.arduino.cc/en/Reference/String for "char *" type strings claims that this is a valid string initialization:
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
It further claims that the compiler will add the (almost always desired) \0 character to the end.
I think this is subtly wrong. If Str2 is a static (e.g. global) variable, then the 8th position would be cleared to 0 - just like any static variable - and it wouldn't matter that you didn't initialize it. So in this case, it looks like the compiler added the \0 to the initialization array.
But if Str2 were declared as a function local variable, I think the 8th position would be stack garbage.
At least, that's the case in C. Maybe C++ is different, but it still seems like a shady thing to teach programmers to depend on.
Consider this declaration:
char Str7[7] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
Should the compiler add a \0 to this? Obviously not.