CodeGym /בלוג Java /Random-HE /משתנים סטטיים ב-Java
John Squirrels
רָמָה
San Francisco

משתנים סטטיים ב-Java

פורסם בקבוצה

מהם משתנים סטטיים?

משתנים סטטיים או משתני מחלקה משותפים בין כל המופעים של מחלקה וניתן לגשת אליהם ולשנות אותם מבלי ליצור מופע של המחלקה. בואו נצלול לעומק כדי להבין את השימושים והיישום של משתנים סטטיים ב-Java.

דוגמה למשתנה סטטי ב-Java

אחד השימושים הנפוצים ביותר למשתנים סטטיים הוא שיתוף בין כל המופעים של מחלקה. לדוגמה, משתנה מונה שעוקב אחר מספר המופעים שנוצרו, או משתנה CONSTANT שמחזיק ערך שאינו משתנה לעולם. שקול כיתה המייצגת חשבון בנק. קטע הקוד הבא מראה כיצד ניתן להשתמש במשתנה סטטי nextAccountNumber כדי להקצות מספרי חשבון ייחודיים לכל חשבון חדש:

דוגמא

// BankAccount class definition
class BankAccount {
  // Declare static variable nextAccountNumber
  static int nextAccountNumber = 1001;

  // Declare instance variables for accountNumber and balance.
  int accountNumber;
  double balance;

  // BankAccount constructor that assigns unique account number to each instance
  BankAccount() {
    // Assign the current value of nextAccountNumber to accountNumber.
    accountNumber = nextAccountNumber;

    // Increment nextAccountNumber for the next BankAccount object.
    nextAccountNumber++;
  }

  // Method to get the account number of this BankAccount object.
  int getAccountNumber() {
    return accountNumber;
  }

  // Method to get the balance of this BankAccount object.
  double getBalance() {
    return balance;
  }

  // Method to deposit an amount into this BankAccount object.
  void deposit(double amount) {
    // Increase balance by the amount deposited.
    balance += amount;
  }

  // Method to withdraw an amount from this BankAccount object.
  void withdraw(double amount) {
    // Decrease balance by the amount withdrawn.
    balance -= amount;
  }
}

// Main method definition
class Main {
  static void main(String[] args) {
    // Create three BankAccount objects: account1, account2, and account3.
    BankAccount account1 = new BankAccount();
    BankAccount account2 = new BankAccount();
    BankAccount account3 = new BankAccount();

    // Display the value of the static variable nextAccountNumber after creating each BankAccount object.
    System.out.println("Value of nextAccountNumber after creating account1: " + account1.getAccountNumber());
    System.out.println("Value of nextAccountNumber after creating account2: " + account2.getAccountNumber());
    System.out.println("Value of nextAccountNumber after creating account3: " + account3.getAccountNumber());
  }
}

תְפוּקָה

ערך NextAccountNumber לאחר יצירת חשבון1: 1001 ערך NextAccountNumber לאחר יצירת חשבון2: 1002 ערך NextAccountNumber לאחר יצירת חשבון3: 1003
בדוגמה זו, השיטה הראשית יוצרת שלושה מופעים של המחלקה BankAccount . בנאי BankAccount מקצה את ה- nextAccountNumber לחשבון החדש ומגדיל את המשתנה nextAccountNumber ב-1. שיטת getAccountNumber מחזירה את מספר החשבון של כל חשבון. לאחר מכן, השיטה הראשית מדפיסה את מספר החשבון ואת המשתנה nextAccountNumber עבור כל חשבון. אתה יכול לראות שכל מספר חשבון הוא ייחודי והמשתנה nextAccountNumber גדל באחד עבור כל חשבון חדש שנוצר. ניתן להשתמש במשתנים סטטיים גם כדי ליישם את דפוס העיצוב של Singleton, שבו ניתן ליצור רק מופע אחד של מחלקה. מחלקה יחידה היא מחלקה שיכולה להיות לה רק מופע אחד בכל יישום Java ובו זמנית מספקת נקודת גישה גלובלית למופע זה. קטע הקוד הבא מראה כיצד ניתן להשתמש במופע משתנה סטטי כדי ליישם מחלקה יחידה:

דוגמא

public class Singleton {
    // using static variable in the singleton class
    private static Singleton instance;
    private Singleton() { }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    public void displayMessage() {
        System.out.println("This is a singleton class");
    }

    public static void main(String[] args) {
        Singleton singleton1 = Singleton.getInstance();
        singleton1.displayMessage();

        Singleton singleton2 = Singleton.getInstance();
        singleton2.displayMessage();

        Singleton singleton3 = Singleton.getInstance();
        singleton3.displayMessage();
    }
}

תְפוּקָה

זהו מחלקה יחידנית זו מחלקה יחידנית זו מחלקה יחידנית
בדוגמה זו, השיטה הראשית יוצרת שלושה מופעים של המחלקה Singleton על ידי קריאה למתודה getInstance() . השיטה getInstance() מחזירה את המופע של המחלקה ויוצרת מופע חדש אם אינו קיים. שיטת displayMessage רק מדפיסה הודעה . לאחר מכן השיטה הראשית קוראת לשיטת displayMessage עבור כל מופע. כפי שאתה יכול לראות, למרות שאנו יוצרים שלושה מופעים, רק אובייקט אחד נוצר ומשותף בין כל המופעים. זה מוכיח שרק מופע אחד של המחלקה נוצר ומשותף בין כל המופעים והמשתנה הסטטי 'instance' מתקיים. חשוב לזכור שהערך של משתנה סטטי משותף לכל המופעים של מחלקה, כך ששינויים במשתנה שנעשו על ידי מופע אחד יהיו גלויים לכל שאר המופעים. יש לשקול היטב משתנים סטטיים כדי למנוע התנגשויות ובאגים פוטנציאליים בקוד שלך. לדוגמה, שימוש במשתנה סטטי כדי להחזיק ערך ספציפי למופע של מחלקה, כגון יתרת חשבון, אינו מומלץ. כדי לחזק את מה שלמדת, אנו מציעים לך לצפות בשיעור וידאו מקורס Java שלנו

סיכום

כדי לסכם זאת, משתנה סטטי ב-Java מאפשר שיתוף נתונים בין כל המופעים של מחלקה. ניתן להשתמש בהם למשתנים המשותפים בין כל המופעים, כגון מונים וקבועים או ליישם את דפוס העיצוב של Singleton. עם זאת, חשוב לזכור שהערך של משתנה סטטי משותף בין כל המופעים של מחלקה, כך ששינויים במשתנה שנעשו על ידי מופע אחד יהיו גלויים לכל שאר המופעים.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION