I'm trying to store the UID of RFID cards as Strings because its a number like "836 637 363 63"
The UID is 4 bytes. The ASCII representation of each byte will be 1 to 3 characters. That is a total of 16 bytes, allowing room for the terminating NULL.
Compare that to what sizeof(String) reports. The size of the String object does NOT include the size of the string that it wraps.
Storing fixed length strings in EEPROM is faster than unwrapping the string from the String and storing that and the length of the wrapped string, AND allows for more rapid stepping through the stored UIDs.
Of course, there is NO reason to store the 4 bytes as a string OR as a String. Complete waste of memory to store up to 16 bytes when 4 will do.
Try again to come up with an example where Strings do something that a string (or other more reasonable data structure) can't do faster/better/cheaper.