Bird
Raised Fist0
Javaprogramming~5 mins

Static vs non-static behavior in Java - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What does the static keyword mean in Java?
The <strong>static</strong> keyword means the member belongs to the class itself, not to any specific object. It can be accessed without creating an object.
Click to reveal answer
beginner
How do non-static members behave differently from static members?
Non-static members belong to individual objects. Each object has its own copy, so changes affect only that object.
Click to reveal answer
intermediate
Can a static method access non-static variables directly? Why or why not?
No, a static method cannot access non-static variables directly because non-static variables belong to objects, and static methods belong to the class without any object context.
Click to reveal answer
intermediate
What happens if you try to use this keyword inside a static method?
You cannot use this inside a static method because this refers to the current object, and static methods do not belong to any object.
Click to reveal answer
beginner
Give a real-life example to explain static vs non-static behavior.
Think of a school: The school name is static because it is the same for all students (objects). Each student has their own name and grades, which are non-static because they differ per student.
Click to reveal answer
Which of the following is true about static variables in Java?
AThey can only be accessed through objects.
BThey belong to each object separately.
CThey belong to the class and are shared by all objects.
DThey cannot be accessed inside static methods.
Can a non-static method access static variables directly?
ANo, it cannot access static variables.
BOnly if the static variable is public.
COnly if the method is called from a static context.
DYes, because static variables belong to the class.
What will happen if you try to access a non-static variable inside a static method without an object?
AIt will work fine.
BIt will cause a compile-time error.
CIt will cause a runtime error.
DIt will print default values.
Which keyword is used to declare a static method in Java?
Astatic
Bfinal
Cpublic
Dvoid
If you want a variable to be unique for each object, how should you declare it?
Anon-static (instance variable)
Bfinal
Cstatic
Dabstract
Explain the difference between static and non-static members in Java with examples.
Think about how variables or methods are shared or unique among objects.
You got /4 concepts.
    Describe why static methods cannot use the 'this' keyword and what that means for accessing variables.
    Consider what 'this' means and when it is available.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which statement correctly describes a static method in Java?
      easy
      A. It belongs to the class and can be called without creating an object.
      B. It belongs to an object and requires an instance to be called.
      C. It can only access non-static variables directly.
      D. It cannot be called from the main method.

      Solution

      1. Step 1: Understand static method ownership

        A static method belongs to the class itself, not to any object instance.
      2. Step 2: Check how static methods are called

        Static methods can be called directly using the class name without creating an object.
      3. Final Answer:

        It belongs to the class and can be called without creating an object. -> Option A
      4. Quick Check:

        Static method = class-level method [OK]
      Hint: Static methods belong to class, call without object [OK]
      Common Mistakes:
      • Thinking static methods need an object to call
      • Confusing static with instance methods
      • Assuming static methods access instance variables directly
      2. Which of the following is the correct way to declare a static variable in Java?
      easy
      A. int count static = 0;
      B. int static count = 0;
      C. count static int = 0;
      D. static int count = 0;

      Solution

      1. Step 1: Recall Java syntax for static variables

        The keyword static comes before the data type in variable declaration.
      2. Step 2: Match the correct syntax

        static int count = 0; uses static int count = 0; which is the correct order.
      3. Final Answer:

        static int count = 0; -> Option D
      4. Quick Check:

        static before type = correct syntax [OK]
      Hint: Put static before the type when declaring variables [OK]
      Common Mistakes:
      • Placing static after the variable name
      • Using invalid order of keywords
      • Confusing static with final keyword
      3. What will be the output of the following Java code?
      class Test {
          static int count = 0;
          int id;
      
          Test() {
              count++;
              id = count;
          }
      
          void display() {
              System.out.println("ID: " + id + ", Count: " + count);
          }
      }
      
      public class Main {
          public static void main(String[] args) {
              Test a = new Test();
              Test b = new Test();
              a.display();
              b.display();
          }
      }
      medium
      A. ID: 0, Count: 2 ID: 0, Count: 2
      B. ID: 1, Count: 1 ID: 2, Count: 2
      C. ID: 1, Count: 2 ID: 2, Count: 2
      D. ID: 1, Count: 0 ID: 2, Count: 0

      Solution

      1. Step 1: Understand static and instance variables in constructor

        Each time a Test object is created, count (static) increments and id (instance) is set to current count.
      2. Step 2: Trace object creation and display calls

        First object: count=1, id=1; Second object: count=2, id=2. Both display show current count=2.
      3. Final Answer:

        ID: 1, Count: 2 ID: 2, Count: 2 -> Option C
      4. Quick Check:

        Static count shared, id unique per object [OK]
      Hint: Static variables shared, instance variables unique per object [OK]
      Common Mistakes:
      • Assuming static variable resets per object
      • Confusing instance variable values
      • Ignoring static variable's shared nature
      4. Identify the error in the following Java code snippet:
      public class Example {
          static int number;
      
          public void setNumber(int number) {
              this.number = number;
          }
      
          public static void main(String[] args) {
              Example ex = new Example();
              ex.setNumber(5);
              System.out.println(Example.number);
          }
      }
      medium
      A. Cannot use 'this' to access static variable inside non-static method.
      B. Static variable 'number' cannot be accessed in main method.
      C. 'this' cannot be used in static context like main method.
      D. No error; code runs and prints 5.

      Solution

      1. Step 1: Analyze use of 'this' keyword in setNumber method

        'this' refers to the current object instance and cannot be used to access static variables.
      2. Step 2: Understand static variable access rules

        Static variables belong to the class, so they should be accessed using the class name or directly without 'this'.
      3. Final Answer:

        Cannot use 'this' to access static variable inside non-static method. -> Option A
      4. Quick Check:

        'this' cannot access static variables [OK]
      Hint: Use class name, not 'this', to access static variables [OK]
      Common Mistakes:
      • Thinking 'this' can access static variables
      • Confusing static and instance variable access
      • Assuming no error in code
      5. You want to count how many objects of a class Book have been created. Which approach correctly uses static and non-static members to achieve this?
      class Book {
          // Fill in the blanks
      }
      hard
      A. Use a non-static int counter and static title; increment counter in main method.
      B. Use a static int counter incremented in the constructor; each object has a non-static title.
      C. Use a static int counter incremented in a static method; title is static too.
      D. Use a non-static int counter incremented in the constructor; title is static.

      Solution

      1. Step 1: Identify what should be shared and what is unique

        The count of objects should be shared by all objects, so it must be static. The title is unique per book, so non-static.
      2. Step 2: Implement counting in constructor

        Increment the static counter inside the constructor to count each new object created.
      3. Final Answer:

        Use a static int counter incremented in the constructor; each object has a non-static title. -> Option B
      4. Quick Check:

        Static counter for all objects, non-static title per object [OK]
      Hint: Count objects with static variable incremented in constructor [OK]
      Common Mistakes:
      • Making counter non-static so it resets per object
      • Making title static so all objects share same title
      • Incrementing counter outside constructor
      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