Instance variables are declared in a class but outside any method or constructor. They are created when an object is instantiated and store that object's unique state. Instance variables can be accessed from any method, constructor or block of the class using the object reference. They have default values of 0, false or null which can be assigned during declaration or in the constructor. Local variables are declared within a method, constructor or block and are only visible within that block. They have no default value so must be initialized before use.