Of course Uint8 would use 8 bytes and Uint16 would use 16 bytes. That's why they are named so. Hence, you will definitely conserve RAM (which would hardly matter as RAMs now have capacities in GBs). But there is another problem. In shorter types, type promotion takes place, which may slow down the program.
I suspect that eklavya sharma 2 meant 8 bits and 16 bits, not 8 and 16 bytes.
There may also be alignment issues. If you declare, for instance,
1 2 3 4 5
The compiler may want to align the int32s on 4-byte word boundaries. If that's the case, the compiler will insert pad bytes before (or after) b and d, and you will end up wasting the space you were trying to save.
You should only be concerned about memory size of basic types if you are using them in very large quantities.
Using a short instead of an int just to [maybe] save 2 bytes of memory is pointless. Even if you have an array of 10000 elements, saving 2 bytes per element is only 20K memory saved, which isn't a whole lot by modern standards.