Skip to main content

Rules for Static Variables in Java

 

Rules for Static Variables in Java:

  1. Class-Level Association:

    • Static variables are shared among all instances of a class.
    • They are stored in the class area of memory, not in the heap.
    • Only one copy of a static variable exists, regardless of the number of instances of the class.
    java
    class Example { static int count = 0; }
  2. Declaration:

    • Declared with the static keyword, usually outside of methods, constructors, or blocks.
    • Typically used for constants or shared properties among all objects.
    java
    class Example { static int sharedVar; }
  3. Access:

    • Can be accessed directly using the class name (preferred):
      java
      Example.sharedVar = 10;
    • Alternatively, can be accessed via an object instance, but it's discouraged for clarity:
      java
      Example obj = new Example(); obj.sharedVar = 10; // Works, but not recommended
  4. Initialization:

    • Static variables are initialized only once, at the time of class loading.
    • Default values are provided if not explicitly initialized:
      • int, long, short, byte0
      • float, double0.0
      • char'\u0000'
      • booleanfalse
      • Object references → null
    java
    class Example { static int number; // Default value: 0 }
  5. Memory Management:

    • Static variables are loaded into memory once and are not tied to any object lifecycle.
    • They remain in memory until the class is unloaded.
  6. Access from Static and Instance Contexts:

    • Static Context (e.g., Static Methods):
      • Static variables can be accessed directly without creating an object.
    • Instance Context (e.g., Instance Methods):
      • Static variables can also be accessed from instance methods.
    java
    class Example { static int staticVar = 5; public static void staticMethod() { System.out.println(staticVar); // Accessible directly } public void instanceMethod() { System.out.println(staticVar); // Also accessible here } }
  7. Modifiers:

    • Can be combined with other modifiers like final, public, private, or protected.
    • If static and final, it becomes a constant and must be initialized at the time of declaration.
    java
    class Example { public static final int CONSTANT = 100; // Static constant }
  8. Initialization Block:

    • Static variables can be initialized in a static initialization block, which is executed when the class is loaded.
    java
    class Example { static int value; static { value = 42; // Static initialization block } }
  9. Shadowing:

    • A static variable can be shadowed by a local variable or method parameter with the same name.
    • Use the class name to explicitly refer to the static variable.
    java
    class Example { static int count = 10; public void display(int count) { System.out.println(count); // Local variable System.out.println(Example.count); // Static variable } }
  10. Static Variables and Inheritance:

    • Static variables are inherited but not overridden.
    • Subclasses share the same static variable as the parent class.
    java
    class Parent { static int num = 10; } class Child extends Parent { // Access Parent.num directly }

Best Practices for Static Variables:

  1. Use sparingly: Overusing static variables can make code harder to manage and test due to shared state.
  2. Constants: Combine static with final for constants and use uppercase naming:
    java
    public static final double PI = 3.14159;
  3. Class-specific Data: Use static variables only for data that is truly class-level, like counters, constants, or configuration values.
  4. Avoid accessing via instances: Always access static variables through the class name for clarity.
  5. Thread Safety: Be cautious when using static variables in multithreaded environments to avoid concurrency issues.

Comments

Popular posts from this blog

Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript)

🎥 Setup Browser, Context, Page & Run Config Test Scripts with package.json & playwright.config.js Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript) 1. Install Playwright You can install Playwright using the following command: npm init playwright@latest 2. Create a Basic Test Script Understand the core Playwright architecture: Element Description browser Controls the browser instance (like Chrome, Firefox, etc.) context Acts like a separate browser profile (cookies, localStorage are isolated) page A single browser tab where interaction happens 3. Run the Test npx playwright test example.spec.js Ways to Run TypeScript Tests Way Command Notes 🟢 Via npx npx playwright test Uses built-in TypeScript support 🟢 With s...

Playwright Test Structure in Details -Session-02

🎥 Playwright: test.only, Hooks & Grouping with test.describe Explained Let’s go step-by-step , showing how to build from a single test , to using beforeEach / afterEach , and then organizing things with test.describe . ✅ Step 1: Basic Single Test with test.only import { test, expect } from '@playwright/test' ; test. only ( '🚀 Basic test - check title' , async ({ page }) => { await page. goto ( 'https://example.com' ); await expect (page). toHaveTitle ( /Example Domain/ ); }); test.only ensures only this test runs — great for debugging. ✅ Step 2: Add beforeEach and afterEach import { test, expect } from '@playwright/test' ; test. beforeEach ( async ({ page }) => { console . log ( '🔄 Setting up before each test' ); await page. goto ( 'https://example.com' ); }); test. afterEach ( async ({ page }, testInfo) => { console . log ( `📦 Finished test: ${testInfo.title} `); }); test. only ( ...

How to Maximize a Browser window using Playwright Java

  Playwright itself does not have a direct maximize () method like some other browser automation tools, but you can achieve the effect by setting the viewport to the screen size of your display. Below are ways to handle Maximize a browser in Playwright Java  Ø   Setting the viewport to the screen size  o    setViewportSize(1920, 1080): This sets the browser window to a full HD resolution, effectively maximizing it. o    setHeadless(false): Ensures the browser runs in a visible mode so you can see the window being maximized.  Code Snapshot  Playwright playwright = Playwright. create ()   ;   Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));     // Create a new browser context   BrowserContext context = browser.newContext(new Browser.NewContextOptions()          .setViewportSize(1920, 1080));     ...