tgoop.com/javapro_ir/4080
Create:
Last Update:
Last Update:
📘 درک متغیرهای محلی (Local) و سراسری (Global) در زبان Java
در زبان Java، متغیرها بسته به محل تعریفشان، دارای محدوده (scope) متفاوتی هستند. متغیرهای محلی فقط در همان محدودهای که تعریف شدهاند قابل استفاده هستند، در حالی که متغیرهای سراسری (که در Java بهصورت *فیلدهای کلاس* تعریف میشوند) میتوانند در کل کلاس مورد استفاده قرار گیرند.
🔹 متغیر محلی (Local Variable):
متغیرهای محلی درون متدها، حلقهها یا بلوکهای شرطی تعریف میشوند و فقط در همان بلوک قابل دسترسی هستند. این متغیرها خارج از آن محدوده وجود ندارند و پس از خروج از بلوک از بین میروند.
🔸 مثال ساده:
public class Example {
public void printMessage() {
String message = "Hello from inside the method!"; // local variable
System.out.println(message);
}
}
🟢 توضیح:
متغیر message فقط در متد printMessage قابل استفاده است. خارج از این متد، این متغیر وجود ندارد.
🔸 مثال پیشرفتهتر:
public class Calculator {
public void calculateSum(int[] numbers) {
int total = 0; // local variable in method
for (int i = 0; i < numbers.length; i++) {
int current = numbers[i]; // local variable in loop
if (current % 2 == 0) {
int bonus = 2; // local variable in if block
total += current + bonus;
System.out.println("Even number with bonus: " + (current + bonus));
} else {
System.out.println("Odd number: " + current);
}
}
System.out.println("Final total: " + total);
}
}
🟢 توضیح:
* متغیر total فقط در متد calculateSum قابل استفاده است.
* متغیر current در هر دور از حلقه for تعریف میشود و فقط درون همان حلقه قابل دسترسی است.
* متغیر bonus تنها زمانی تعریف و قابل استفاده است که شرط if برقرار باشد، و خارج از بلوک if وجود ندارد.
این طراحی باعث میشود متغیرها در کوتاهترین دامنه ممکن تعریف شوند که کد را امنتر و خواناتر میکند.
🔹 متغیر سراسری (Global Variable یا Class Field):
در Java مفهوم متغیر سراسری به شکل سنتی وجود ندارد، اما میتوان متغیرهایی را در سطح کلاس تعریف کرد که توسط تمام متدهای همان کلاس قابل استفاده باشند. این متغیرها به عنوان *فیلدهای کلاس* شناخته میشوند.
🔸 مثال ساده:
public class BankAccount {
private double balance = 0.0; // global variable (field)
public void deposit(double amount) {
balance += amount;
System.out.println("Balance after deposit: " + balance);
}
public void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
System.out.println("Balance after withdrawal: " + balance);
} else {
System.out.println("Insufficient balance!");
}
}
}
🟢 توضیح:
* متغیر balance در سطح کلاس تعریف شده و در تمام متدهای deposit و withdraw در دسترس است.
* مقدار این متغیر حتی پس از پایان یک متد نیز حفظ میشود چون به شیء تعلق دارد.
🔸 مثال پیشرفتهتر:
public class OrderManager {
private int totalOrders = 0; // global variable (field)
private double totalRevenue = 0.0; // global variable (field)
public void addOrder(double amount) {
totalOrders++;
totalRevenue += amount;
System.out.println("Order added. Total orders: " + totalOrders);
System.out.println("Total revenue: $" + totalRevenue);
}
public void resetOrders() {
totalOrders = 0;
totalRevenue = 0.0;
System.out.println("All orders have been reset.");
}
public void printSummary() {
System.out.println("Order Summary:");
System.out.println("Orders: " + totalOrders + ", Revenue: $" + totalRevenue);
}
}
🟢 توضیح:
* متغیرهای totalOrders و totalRevenue به کل شیء تعلق دارند و در هر متدی از کلاس قابل استفادهاند.
* متد addOrder این متغیرها را بهروزرسانی میکند، متد resetOrders آنها را ریست میکند، و متد printSummary آنها را چاپ میکند.
* این سبک طراحی برای نگهداری اطلاعات پایدار بین چند متد مناسب است.
BY آموزش برنامه نویسی جاوا | Java
Share with your friend now:
tgoop.com/javapro_ir/4080