If this string is used in two places in your code, then if you don't use a constant, then you might accidentally type it differently in those two places: "usd" and "USD" or "US-D" or "Dollars" or whatever. The risk of this happening grows exponentially as a program grows, and is greatest if the code is used in a library.
The thing is that if you don't use a constant, then you can mistype things and the compiler won't tell you about it -- the code will compile fine, but not work correctly. This kind of bug can be very hard to find! If you mistype the name of a constant, then the compiler will tell you about your mistake and make you fix it right away.
Miguel, For that purpose, it is defensive coding. I can think of two other reasons to use a constant:
1) It's clearer. As a reader of the code, I may not know what "CAD" is. If you use a constant, you tell me that it is the canadian dollar. This makes the code much more readable. 2) If those Strings are used in multiple classes, you can refer to the same constant. This is useful if that constant value changes. Then you can change it in one place rather than have to hunt all over the code for it.
On a related note, here's some more unsolicited advice It's a convention to make constants static and in all caps with underscores between words. This highlights the fact that they are constants and not specific to a specific instance of the class. When reading the code, you can say "so that's a constant" without having to look it up.