allocated on stack in value Types
allocated on heap in referenceTypes
a value type variable contains the data itself
reference type variable contains the address of memory location where data is actually stored.
when you copy a value type variable to another one, the actual data is copied and each variable can be independently manipulated.
when copying a reference type variable to another variable, only the memory address is copied. Both variables will still point to thesame memory location, which means, if you change one variable, the value will be changed for the other variable too.
integer, float, boolean, double etc are value types
string and object are reference types. classes and interfaces are reference types.
struct is value type


