• نوع داده (Data Type): نوع دادهای که متغیر میتواند در خود نگه دارد، مانند int، String، float، char و غیره.
• نام متغیر (Variable Name): نامی که بهطور منحصربهفرد برای شناسایی متغیر در محدودهی خود استفاده میشود.
• مقدار (Value): دادهای که به متغیر اختصاص داده میشود.
در زبان جاوا، سه نوع متغیر وجود دارد:
1. متغیر محلی (Local Variable): متغیری که درون یک متد، سازنده (constructor) یا بلوک کد تعریف میشود و فقط در همان محدوده قابل استفاده است.
2. متغیر نمونه (Instance Variable): متغیری که درون یک کلاس، اما خارج از متدها تعریف میشود و به یک نمونه از کلاس تعلق دارد. این متغیرها هنگام ایجاد شیء از کلاس، در حافظه ذخیره میشوند.
3. متغیر ایستا (Static Variable): متغیری که با استفاده از کلیدواژه static درون کلاس تعریف میشود. این متغیر متعلق به کل کلاس است، نه به یک نمونه خاص، و مقدار آن بین تمام نمونههای کلاس مشترک خواهد بود.
مثال:
int age = 27; // integer variable having value 27
String name = "gfg" // string variable
چگونه متغیرهای جاوا را اعلان کنیم؟
ما میتوانیم متغیرها را در جاوا بهصورتی که در تصویر زیر نشان داده شده است، اعلان کنیم:
از تصویر بهراحتی میتوان دریافت که هنگام اعلان یک متغیر، باید به دو نکته توجه داشت:
• نوع داده (datatype): در جاوا، نوع داده مشخص میکند که یک متغیر چه نوع دادهای را میتواند نگه دارد.
• نام داده (data_name): نامی که به متغیر داده میشود.
به این ترتیب، تنها یک نام میتواند به یک محل حافظه اختصاص داده شود. مقداردهی به آن به دو روش انجام میشود:
1. مقداردهی اولیه متغیر
2. اختصاص مقدار از طریق دریافت ورودی
چگونه متغیرهای جاوا را مقداردهی اولیه کنیم؟
این کار را میتوان با استفاده از سه مؤلفهای که در بالا توضیح داده شد، درک کرد.
مثال:
// Declaring float variable
float simpleInterest;
// Declaring and initializing integer variable
int time = 10, speed = 20;
// Declaring and initializing character variable
char var = 'h';
انواع متغیرهای جاوا
اکنون بیایید انواع مختلف متغیرها را که به شرح زیر هستند، بررسی کنیم:• متغیرهای محلی (Local Variables)
• متغیرهای نمونه (Instance Variables)
• متغیرهای ایستا (Static Variables)

بیایید ویژگیهای هر نوع متغیری که در اینجا فهرست شده است را بهتفصیل بررسی کنیم.
۱. متغیرهای محلی (Local Variables)
متغیری که درون یک بلوک، متد یا سازنده (constructor) تعریف شود، متغیر محلی نام دارد.• متغیر محلی در زمان اعلان ایجاد شده و پس از خروج از بلوک یا بازگشت از تابع، از بین میرود.
• دامنه (Scope) این متغیرها فقط درون بلوکی است که در آن تعریف شدهاند، یعنی تنها در همان محدوده قابل دسترسی هستند.
• قبل از استفاده از متغیر محلی در محدوده تعریفشده، مقداردهی اولیه آن الزامی است.
مثال ۱:
// Java Program to show the use of local variables
import java.io.*;
class GFG {
public static void main(String[] args)
{
// Declared a Local Variable
int var = 10;
// This variable is local to this main method only
System.out.println("Local Variable: " + var);
}
}
خروجی
Local Variable: 10
مثال2:
// Java Program to show the use of
// Local Variables
import java.io.*;
public class GFG {
public static void main(String[] args)
{
// x is a local variable
int x = 10;
// message is also a local
// variable
String message = "Hello, world!";
System.out.println("x = " + x);
System.out.println("message = " + message);
if (x > 5) {
// result is a
// local variable
String result = "x is greater than 5";
System.out.println(result);
}
// Uncommenting the line below will result in a
// compile-time error System.out.println(result);
for (int i = 0; i < 3; i++) {
String loopMessage
= "Iteration "
+ i; // loopMessage is a local variable
System.out.println(loopMessage);
}
// Uncommenting the line below will result in a
// compile-time error
// System.out.println(loopMessage);
}
}
خروجی
x = 10
message = Hello, world!
x is greater than 5
Iteration 0
Iteration 1
Iteration 2
۲. متغیرهای نمونه (Instance Variables)
متغیرهای نمونه متغیرهای غیراستاتیک هستند که در داخل یک کلاس و خارج از هر متد، سازنده (constructor) یا بلوک تعریف میشوند.• چون متغیرهای نمونه در کلاس تعریف میشوند، این متغیرها زمانی ایجاد میشوند که یک شیء از کلاس ساخته شود و زمانی که شیء از بین میرود، این متغیرها نیز از بین میروند.
• برخلاف متغیرهای محلی، میتوانیم برای متغیرهای نمونه از مشخصههای دسترسی (access specifiers) استفاده کنیم. اگر هیچ مشخصه دسترسی تعیین نشود، از مشخصه دسترسی پیشفرض استفاده میشود.
• مقداردهی اولیه به متغیر نمونه الزامی نیست. مقدار پیشفرض آن بستگی به نوع داده متغیر دارد. برای مثال، برای نوع String مقدار پیشفرض null است، برای float مقدار پیشفرض 0.0f است، برای int مقدار پیشفرض 0 است، برای کلاسهای پوششی (Wrapper classes) مانند Integer مقدار پیشفرض null است و غیره.
• دامنه (Scope) متغیرهای نمونه در سرتاسر کلاس است، به جز در زمینههای استاتیک.
• متغیرهای نمونه تنها از طریق ایجاد اشیاء قابل دسترسی هستند.
• ما متغیرهای نمونه را با استفاده از سازندهها هنگام ایجاد شیء مقداردهی اولیه میکنیم. همچنین میتوانیم از بلوکهای نمونه (instance blocks) برای مقداردهی اولیه به متغیرهای نمونه استفاده کنیم.
مثال:
// Java Program to show the use of
// Instance Variables
import java.io.*;
class GFG {
// Declared Instance Variable
public String geek;
public int i;
public Integer I;
public GFG()
{
// Default Constructor
// initializing Instance Variable
this.geek = "Shubham Jain";
}
// Main Method
public static void main(String[] args)
{
// Object Creation
GFG name = new GFG();
// Displaying O/P
System.out.println("Geek name is: " + name.geek);
System.out.println("Default value for int is "+ name.i);
// toString() called internally
System.out.println("Default value for Integer is "+ name.I);
}
}
خروجی
Geek name is: Shubham Jain
Default value for int is 0
Default value for Integer is null
۳. متغیرهای استاتیک (Static Variables)
متغیرهای استاتیک که به آنها متغیرهای کلاسی نیز گفته میشود،این متغیرها بهطور مشابه با متغیرهای نمونه تعریف میشوند. تفاوت این است که متغیرهای استاتیک با استفاده از کلمه کلیدی static در داخل یک کلاس و خارج از هر متد، سازنده (constructor) یا بلوک تعریف میشوند.
• برخلاف متغیرهای نمونه، فقط یک نسخه از هر متغیر استاتیک برای هر کلاس وجود دارد، صرفنظر از اینکه چه تعداد شیء از آن کلاس ایجاد کنیم.
• متغیرهای استاتیک در ابتدای اجرای برنامه ایجاد میشوند و بهطور خودکار زمانی که اجرای برنامه تمام میشود، از بین میروند.
• مقداردهی اولیه به متغیر استاتیک الزامی نیست. مقدار پیشفرض آن بستگی به نوع داده متغیر دارد. برای String مقدار پیشفرض null است، برای float مقدار پیشفرض 0.0f است، برای int مقدار پیشفرض 0 است، برای کلاسهای پوششی مانند Integer مقدار پیشفرض null است و غیره.
• اگر متغیر استاتیک را مانند یک متغیر نمونه (از طریق یک شیء) دسترسی پیدا کنیم، کامپایلر یک پیغام هشدار نمایش خواهد داد که مانع از اجرای برنامه نمیشود. کامپایلر بهطور خودکار نام شیء را با نام کلاس جایگزین خواهد کرد.
• اگر متغیر استاتیک را بدون نام کلاس دسترسی پیدا کنیم، کامپایلر بهطور خودکار نام کلاس را اضافه خواهد کرد. اما برای دسترسی به متغیر استاتیک یک کلاس دیگر، باید نام کلاس را ذکر کنیم، زیرا دو کلاس مختلف ممکن است متغیر استاتیکی با نام مشابه داشته باشند.
• متغیرهای استاتیک نمیتوانند بهطور محلی داخل یک متد نمونه (instance method) اعلان شوند.
• میتوان از بلوکهای استاتیک برای مقداردهی اولیه به متغیرهای استاتیک استفاده کرد.
مثال:
// Java Program to show the use of
// Static variables
import java.io.*;
class GFG {
// Declared static variable
public static String geek = "Shubham Jain";
public static void main(String[] args)
{
// geek variable can be accessed without object
// creation Displaying O/P GFG.geek --> using the
// static variable
System.out.println("Geek Name is : " + GFG.geek);
// static int c = 0;
// above line, when uncommented,
// will throw an error as static variables cannot be
// declared locally.
}
}
خروجی
Geek Name is : Shubham Jain
متغیرهای نمونه (Instance Variables) vs. متغیرهای استاتیک (Static Variables)
اکنون بیایید تفاوتهای بین متغیرهای نمونه و متغیرهای استاتیک را بررسی کنیم:
• هر شیء یک نسخه خاص از متغیر نمونه دارد، در حالی که تنها یک نسخه از هر متغیر استاتیک برای هر کلاس وجود دارد، صرفنظر از اینکه چه تعداد شیء از آن کلاس ساخته شود. بنابراین، متغیرهای استاتیک برای مدیریت حافظه مناسب هستند.
• تغییرات اعمالشده در یک متغیر نمونه با استفاده از یک شیء، در سایر اشیاء بازتاب نخواهد داشت، زیرا هر شیء نسخه خاص خود را از متغیر نمونه دارد. اما در مورد متغیرهای استاتیک، تغییرات در سایر اشیاء نیز بازتاب خواهد یافت، زیرا متغیرهای استاتیک برای تمام اشیاء یک کلاس مشترک هستند.
• ما میتوانیم متغیرهای نمونه را از طریق ارجاع به شیء دسترسی پیدا کنیم، در حالی که متغیرهای استاتیک میتوانند مستقیماً با استفاده از نام کلاس دسترسی پیدا کنند.
• متغیرهای نمونه زمانی ایجاد میشوند که شیء با استفاده از کلمه کلیدی new ساخته میشود و زمانی که شیء از بین میرود، این متغیرها نیز از بین میروند. در حالی که متغیرهای استاتیک زمانی ایجاد میشوند که برنامه شروع به اجرا میکند و زمانی که برنامه خاتمه مییابد، از بین میروند.
سینتکس: متغیرهای استاتیک و نمونه
class GFG{
// Static variable
static int a;
// Instance variable
int b;
}
سؤالات متداول – متغیرها در جاوا
متغیرها در جاوا چیستند؟
متغیرها در جاوا، محفظههایی هستند که میتوانند مقادیر داده را درون خود ذخیره کنند.۳ نوع متغیر در جاوا چیست؟
سه نوع متغیر در جاوا عبارتند از:1. متغیرهای محلی
2. متغیرهای استاتیک
3. متغیرهای نمونه
چگونه متغیرها را در جاوا اعلام کنیم؟ مثالها
ما میتوانیم متغیرها را در جاوا با استفاده از سینتکس زیر اعلام کنیم:data_type variable_name;
مثال:
// Integer datatype with var1 name
int var1;
ورود و ثبت نام برای ارسال نظر وارد شوید