Bird
Raised Fist0
Javaprogramming~5 mins

Primitive vs reference storage in Java - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is a primitive type in Java?
A primitive type in Java is a basic data type that stores simple values directly in memory, such as int, double, boolean, and char.
Click to reveal answer
beginner
How does Java store reference types differently from primitive types?
Java stores reference types as addresses (references) pointing to objects in the heap memory, not the actual object data itself.
Click to reveal answer
beginner
What happens when you assign one primitive variable to another?
The value of the primitive variable is copied directly, so both variables hold independent copies of the data.
Click to reveal answer
beginner
What happens when you assign one reference variable to another?
The reference (address) is copied, so both variables point to the same object in memory.
Click to reveal answer
intermediate
Why is understanding primitive vs reference storage important?
It helps avoid bugs by knowing when changes affect original data or just copies, and how memory is managed in Java.
Click to reveal answer
Which of these is a primitive type in Java?
Aint
BString
CArrayList
DObject
When you assign one reference variable to another, what happens?
AA new object is created
BThe reference is copied, both point to the same object
CThe object data is copied
DThe reference variable becomes null
Which memory area stores primitive variables in Java?
AStack
BMethod Area
CHeap
DPermanent Generation
If you change the value of a primitive variable copied from another, what happens to the original?
AIt throws an error
BIt changes too
CIt becomes null
DIt remains unchanged
Which of these is true about reference types?
AThey cannot be assigned to other variables
BThey store actual data directly
CThey store memory addresses pointing to objects
DThey are always immutable
Explain the difference between primitive and reference storage in Java.
Think about how variables hold data versus addresses.
You got /5 concepts.
    Describe what happens in memory when you assign one reference variable to another in Java.
    Focus on what the variables actually hold.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which of the following correctly describes how primitive types are stored in Java?
      easy
      A. They store values as strings internally.
      B. They store the actual value directly in the variable.
      C. They store the memory address of the variable.
      D. They store a reference to an object in memory.

      Solution

      1. Step 1: Understand primitive storage

        Primitive types like int, double, and boolean store the actual data value directly in the variable's memory location.
      2. Step 2: Compare with reference types

        Reference types store addresses pointing to objects, not the actual data value.
      3. Final Answer:

        They store the actual value directly in the variable. -> Option B
      4. Quick Check:

        Primitive = actual value [OK]
      Hint: Primitives hold values; references hold addresses [OK]
      Common Mistakes:
      • Thinking primitives store memory addresses
      • Confusing reference storage with primitive storage
      • Assuming primitives store objects
      2. Which of the following is the correct way to declare a reference variable for a String in Java?
      easy
      A. int s = new String();
      B. boolean s = new String();
      C. String s = 10;
      D. String s = new String();

      Solution

      1. Step 1: Check variable type and assignment

        String is a reference type, so it can be assigned with new String() to create a new object.
      2. Step 2: Verify type compatibility

        int and boolean are primitive types and cannot be assigned a String object.
      3. Final Answer:

        String s = new String(); -> Option D
      4. Quick Check:

        Reference declaration matches object creation [OK]
      Hint: Reference types use 'new' with matching type [OK]
      Common Mistakes:
      • Assigning objects to primitive types
      • Using incompatible types in declaration
      • Missing 'new' keyword for object creation
      3. What will be the output of the following code?
      int a = 5;
      int b = a;
      b = 10;
      System.out.println(a);
      medium
      A. 5
      B. 10
      C. 0
      D. Compilation error

      Solution

      1. Step 1: Understand primitive assignment

        Variable b copies the value of a (which is 5). Changing b to 10 does not affect a.
      2. Step 2: Print value of a

        Since a was not changed, printing a outputs 5.
      3. Final Answer:

        5 -> Option A
      4. Quick Check:

        Primitive copy keeps original value [OK]
      Hint: Changing copied primitive doesn't affect original [OK]
      Common Mistakes:
      • Assuming a changes when b changes
      • Confusing reference behavior with primitive
      • Expecting compilation error
      4. Consider the code below. What is the error and how to fix it?
      String s1 = "hello";
      String s2 = s1;
      s2 = "world";
      System.out.println(s1);
      medium
      A. Output is 'world' because s2 changes s1.
      B. Error: Strings cannot be assigned like this.
      C. No error; output is 'hello'.
      D. Compilation error due to missing new keyword.

      Solution

      1. Step 1: Analyze reference assignment

        s2 points to the same String object as s1 initially, but assigning s2 = "world" makes s2 point to a new String object.
      2. Step 2: Check effect on s1

        s1 still points to "hello" because Strings are immutable and s2 reassignment does not affect s1.
      3. Final Answer:

        No error; output is 'hello'. -> Option C
      4. Quick Check:

        Reference reassignment doesn't change original object [OK]
      Hint: Reassigning reference doesn't change original object [OK]
      Common Mistakes:
      • Thinking s1 changes when s2 changes
      • Expecting compilation error for String assignment
      • Confusing mutable and immutable objects
      5. Given the following code, what will be the output?
      class Box {
        int value;
        Box(int v) { value = v; }
      }
      
      Box b1 = new Box(5);
      Box b2 = b1;
      b2.value = 10;
      System.out.println(b1.value);
      hard
      A. 10
      B. 5
      C. Compilation error
      D. NullPointerException

      Solution

      1. Step 1: Understand reference assignment for objects

        b2 is assigned the reference of b1, so both point to the same Box object.
      2. Step 2: Modify object through b2

        Changing b2.value to 10 changes the single Box object's value.
      3. Step 3: Print b1.value

        Since b1 points to the same object, b1.value is now 10.
      4. Final Answer:

        10 -> Option A
      5. Quick Check:

        Reference change affects original object [OK]
      Hint: Object references share same data; change affects all [OK]
      Common Mistakes:
      • Assuming b1.value stays 5 after b2 changes it
      • Confusing primitive and reference behavior
      • Expecting compilation or runtime errors
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard