Understand the meaning of "instanceof", this is done at runtime first of all. Reference matters for the compiler only so that it could recognize that left side (of instanceof operator) refernce variable is on the same hierarchy the right hand side class or interface name is.
Your b (Integer reference variable) that refers to null means refers to nothing, alone. So instanceof test always fails in such case. If you make your reference variable b to refer to an Integer object, your instanceof test will result true.
And the rule of thumb, instanceof operator always returns false incase the left side is null.