Const memory will still store ts value both in Flash and in SRAM. For arrays PROGMEM can be used and for strings F() to remove the copy to SRAM.
Normal (non const) memory will be stored in SRAM. And if it is initialized with a value, that value is stored in Flash.
However, uint8_t will always occupy 1 byte, and uint16_t always two bytes.
You can read more about the different types of memory and F here.
You can read more about program here.
Update:
Test with const:
const uint8_t Amount1 = 4;
const uint8_t Amount2 = 4;
const uint8_t Amount3 = 4;
const uint8_t Amount4 = 4;
const uint8_t Amount5 = 4;
const uint8_t Amount6 = 4;
const uint8_t Amount7 = 4;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print(Amount1);
Serial.print(Amount2);
Serial.print(Amount3);
Serial.print(Amount4);
Serial.print(Amount5);
Serial.print(Amount6);
Serial.print(Amount7);
}
Result: 1758 bytes of program storage space, 184 bytes of dynamic memory.
Same without word 'const:
Result: 1758 bytes of program storage space, 184 bytes of dynamic memory.
No difference
using #define Amount1..7 4
Result: 1702 bytes of program storage space, 184 bytes of dynamic memory.
Conclusion: to save Flash space, use #define instead of (const) uint8_t.
However, also see Jot's experiment, it seems that code optimalization is smarter than my conclusion.