آموزش Java به صورت پروژه‌محور: سریع، کاربردی و حرفه‌ای |جلسه دوازدهم:انواع متغیر ها در جاوا
برنامه نویسی جاوا

آموزش Java به صورت پروژه‌محور: سریع، کاربردی و حرفه‌ای |جلسه دوازدهم:انواع متغیر ها در جاوا

یک متغیر در جاوا چیست؟ یک متغیر، حافظه‌ای نام‌گذاری‌شده در اختیار ما قرار می‌دهد که برنامه‌های ما می‌توانند آن را دستکاری کنند. هر متغیر در جاوا دارای یک نوع مشخص است که اندازه و ساختار حافظه متغیر، دامنه مقادیری که می‌توان در آن حافظه ذخیره کرد، و مجموعه عملیاتی که می‌توان روی متغیر انجام داد را تعیین می‌کند.

اعلان و مقداردهی اولیه متغیر

 شما باید تمام متغیرها را قبل از استفاده اعلام (Declare) کنید. متغیرهای جاوا با مشخص‌کردن نوع داده (Data Type) و سپس نام متغیر اعلام می‌شوند. برای اختصاص مقدار، از عملگر انتساب (=) استفاده می‌شود که بعد از آن مقدار قرار می‌گیرد. هر عبارت اعلان یا مقداردهی اولیه باید با یک نقطه‌ویرگول (;) به پایان برسد.

نحو (Syntax)

در ادامه، شکل پایه‌ی یک اعلان متغیر آورده شده است:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
data type variable [ = value][, variable [ = value] ...] ;
data type variable [ = value][, variable [ = value] ...] ;
data type variable [ = value][, variable [ = value] ...] ;

در اینجا، نوع داده یکی از نوع‌های داده‌ای جاوا است و variable نام متغیر می‌باشد. برای اعلام بیش از یک متغیر از نوع مشخص‌شده، می‌توانید از لیستی با جداکننده کاما (,) استفاده کنید.

نمونه‌هایی از اعلان و مقداردهی اولیه معتبر متغیرها

در ادامه، نمونه‌هایی معتبر از اعلان و مقداردهی اولیه متغیرها در جاوا آورده شده‌اند:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte B = 22; // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a'; // the char variable a iis initialized with value 'a'
int a, b, c; // Declares three ints, a, b, and c. int a = 10, b = 10; // Example of initialization byte B = 22; // initializes a byte type variable B. double pi = 3.14159; // declares and assigns a value of PI. char a = 'a'; // the char variable a iis initialized with value 'a'
int a, b, c;         // Declares three ints, a, b, and c.
int a = 10, b = 10;  // Example of initialization
byte B = 22;         // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a';        // the char variable a iis initialized with value 'a'

انواع متغیرها در جاوا

 سه نوع متغیر در جاوا وجود دارد:

  • متغیرهای محلی (Local variables)
  • متغیرهای نمونه (Instance variables)
  • متغیرهای کلاس/ایستا (Class/Static variables)

1. متغیرهای محلی در جاوا

  •  متغیرهای محلی در درون متدها، سازنده‌ها (Constructors) یا بلوک‌ها (Blocks) اعلام می‌شوند.
  • متغیرهای محلی زمانی ایجاد می‌شوند که متد، سازنده یا بلوک وارد شود و پس از خروج از آن‌ها، متغیر از بین می‌رود.
  • نمی‌توان از تعدیل‌کننده‌های دسترسی (Access Modifiers) برای متغیرهای محلی استفاده کرد.
  • متغیرهای محلی فقط درون متد، سازنده یا بلوکی که در آن اعلام شده‌اند قابل مشاهده هستند.
  • متغیرهای محلی در سطح پشته (Stack) پیاده‌سازی می‌شوند.
  • برای متغیرهای محلی، مقدار پیش‌فرض وجود ندارد، بنابراین این متغیرها باید قبل از اولین استفاده، اعلام و مقداردهی اولیه شوند.

مثال 1: حوزه‌ی محلی متغیر با مقداردهی اولیه

 در اینجا، age یک متغیر محلی است. این متغیر در داخل متد pupAge() تعریف شده و حوزه (Scope) آن فقط به همین متد محدود است.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public class Test {
public void pupAge() {
int age = 0;
age = age + 7;
System.out.println("Puppy age is : " + age);
}
public static void main(String args[]) {
Test test = new Test();
test.pupAge();
}
}
public class Test { public void pupAge() { int age = 0; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]) { Test test = new Test(); test.pupAge(); } }
public class Test {
   public void pupAge() {
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

خروجی

سن توله سگ: ۷

مثال ۲: حوزه‌ی محلی متغیر بدون مقداردهی اولیه

 در مثال زیر، از متغیر age بدون مقداردهی اولیه استفاده شده است، بنابراین در زمان کامپایل با خطا مواجه خواهد شد.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public class Test {
public void pupAge() {
int age;
age = age + 7;
System.out.println("Puppy age is : " + age);
}
public static void main(String args[]) {
Test test = new Test();
test.pupAge();
}
}
public class Test { public void pupAge() { int age; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]) { Test test = new Test(); test.pupAge(); } }
public class Test {
   public void pupAge() {
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

خروجی

Test.java:4:variable number might not have been initialized  
age = age + 7;  
         ^  
1 error

۲. متغیرهای نمونه (Instance Variables) در جاوا

متغیرهای نمونه درون یک کلاس اعلام می‌شوند، اما خارج از هر متد، سازنده یا بلوک هستند.

زمانی که فضایی برای یک شی (Object) در حافظه هیپ (Heap) تخصیص داده می‌شود، یک جایگاه برای مقدار هر متغیر نمونه ایجاد می‌گردد.

متغیرهای نمونه زمانی ایجاد می‌شوند که یک شی با استفاده از کلیدواژه new ساخته شود و زمانی که آن شی از بین برود، این متغیرها نیز از بین می‌روند.

متغیرهای نمونه مقادیری را نگه‌ می‌دارند که باید توسط بیش از یک متد، سازنده یا بلوک مورد ارجاع قرار گیرند، یا بخش‌های ضروری از وضعیت (State) یک شی هستند که باید در سراسر کلاس وجود داشته باشند.

متغیرهای نمونه را می‌توان در سطح کلاس، قبل یا بعد از استفاده، اعلام کرد.

می‌توان از تعدیل‌کننده‌های دسترسی (Access Modifiers) برای متغیرهای نمونه استفاده کرد.

متغیرهای نمونه برای همه متدها، سازنده‌ها و بلوک‌های کلاس قابل مشاهده هستند. به‌طور معمول، توصیه می‌شود این متغیرها را خصوصی (private) تعریف کنیم. با این حال، می‌توان با استفاده از تعدیل‌کننده‌های دسترسی، آن‌ها را برای زیرکلاس‌ها نیز قابل مشاهده کرد.

متغیرهای نمونه دارای مقدار پیش‌فرض هستند. برای اعداد، مقدار پیش‌فرض 0 است، برای نوع Boolean مقدار پیش‌فرض false، و برای ارجاعات شی (Object references) مقدار پیش‌فرض null است. مقادیر می‌توانند در زمان اعلام یا درون سازنده مقداردهی شوند.

متغیرهای نمونه را می‌توان به‌صورت مستقیم با فراخوانی نام متغیر در درون کلاس استفاده کرد. با این حال، درون متدهای ایستا (static) (در صورتی که متغیرهای نمونه در دسترس باشند)، باید از نام کامل‌شده استفاده شود. یعنی به صورت: ObjectReference.VariableName

مثال از متغیرهای نمونه در جاوا باز کردن کامپایلر

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import java.io.*;
public class Employee {
// this instance variable is visible for any child class.
public String name;
// salary variable is visible in Employee class only.
private double salary;
// The name variable is assigned in the constructor.
public Employee (String empName) {
name = empName;
}
// The salary variable is assigned a value.
public void setSalary(double empSal) {
salary = empSal;
}
// This method prints the employee details.
public void printEmp() {
System.out.println("name : " + name );
System.out.println("salary :" + salary);
}
public static void main(String args[]) {
Employee empOne = new Employee("Ransika");
empOne.setSalary(1000);
empOne.printEmp();
}
}
import java.io.*; public class Employee { // this instance variable is visible for any child class. public String name; // salary variable is visible in Employee class only. private double salary; // The name variable is assigned in the constructor. public Employee (String empName) { name = empName; } // The salary variable is assigned a value. public void setSalary(double empSal) { salary = empSal; } // This method prints the employee details. public void printEmp() { System.out.println("name : " + name ); System.out.println("salary :" + salary); } public static void main(String args[]) { Employee empOne = new Employee("Ransika"); empOne.setSalary(1000); empOne.printEmp(); } }
import java.io.*;

public class Employee {

   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor.
   public Employee (String empName) {
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal) {
      salary = empSal;
   }

   // This method prints the employee details.
   public void printEmp() {
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]) {
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

خروجی

name  : Ransika  
salary :1000.0

۳. متغیرهای کلاس/ایستا (Class/Static Variables) در جاوا

متغیرهای کلاس که به‌عنوان متغیرهای ایستا (Static) نیز شناخته می‌شوند، با استفاده از کلیدواژه static در یک کلاس اعلام می‌شوند، اما خارج از هر متد، سازنده یا بلوک قرار دارند.

از هر متغیر کلاس تنها یک نسخه در هر کلاس وجود دارد، صرف‌نظر از اینکه چند شی از آن کلاس ساخته شود.

متغیرهای ایستا به‌ندرت استفاده می‌شوند، مگر اینکه به‌عنوان ثابت (Constant) اعلام شوند. ثابت‌ها، متغیرهایی هستند که به‌صورت public/private، final و static تعریف می‌شوند. متغیرهای ثابت هرگز مقدار اولیه خود را تغییر نمی‌دهند.

متغیرهای ایستا در حافظه‌ی ایستا (Static Memory) ذخیره می‌شوند. استفاده از متغیرهای ایستا به‌جز زمانی که به‌صورت ثابت (final) تعریف شوند و به‌صورت عمومی (public) یا خصوصی (private) مورد استفاده قرار گیرند، نادر است.

متغیرهای ایستا هنگام شروع برنامه ایجاد می‌شوند و هنگام توقف برنامه از بین می‌روند.

محدوده‌ی دید (Visibility) آن‌ها مشابه متغیرهای نمونه است. با این حال، بیشتر متغیرهای ایستا به‌صورت public اعلام می‌شوند، چون باید برای کاربران کلاس در دسترس باشند.

مقادیر پیش‌فرض متغیرهای ایستا همانند متغیرهای نمونه است: برای اعداد مقدار پیش‌فرض 0 است، برای Boolean مقدار پیش‌فرض false و برای ارجاعات شی مقدار پیش‌فرض null می‌باشد. مقادیر می‌توانند در زمان اعلام یا درون سازنده مقداردهی شوند. همچنین می‌توان مقادیر را در بلوک‌های ویژه‌ی مقداردهی ایستای static initializer blocks نیز تعیین کرد.

برای دسترسی به متغیرهای ایستا، می‌توان با استفاده از نام کلاس و نام متغیر آن‌ها را فراخوانی کرد: ClassName.VariableName

زمانی که متغیرهای کلاس به‌صورت public static final اعلام می‌شوند، نام متغیرها (ثابت‌ها) باید تماماً با حروف بزرگ (uppercase) نوشته شود. اگر متغیرهای ایستا public و final نباشند، الگوی نام‌گذاری آن‌ها مشابه متغیرهای نمونه و محلی خواهد بود.

مثال از متغیرهای کلاس/ایستا در جاوا

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import java.io.*;
public class Employee {
// salary variable is a private static variable
private static double salary;
// DEPARTMENT is a constant
public static final String DEPARTMENT = "Development ";
public static void main(String args[]) {
salary = 1000;
System.out.println(DEPARTMENT + "average salary:" + salary);
}
}
import java.io.*; public class Employee { // salary variable is a private static variable private static double salary; // DEPARTMENT is a constant public static final String DEPARTMENT = "Development "; public static void main(String args[]) { salary = 1000; System.out.println(DEPARTMENT + "average salary:" + salary); } }
import java.io.*;

public class Employee {

   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]) {
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}

خروجی

حقوق متوسط بخش توسعه: 1000

نکته − اگر متغیرها از یک کلاس خارجی فراخوانی شوند، ثابت (Constant) باید به‌صورت Employee.DEPARTMENT فراخوانی شود.

مرحله بعد چیست؟

 شما در این فصل از تعدیل‌کننده‌های دسترسی (مانند public و private) استفاده کرده‌اید. فصل بعد، تعدیل‌کننده‌های دسترسی و غیر دسترسی (Access Modifiers و Non-Access Modifiers) را به‌صورت دقیق توضیح خواهد داد.

PHP از دستورات echo و print برای نمایش خروجی در مرورگر یا کنسول PHP استفاده می‌کند. هر دو ساختارهای زبان...
شناسه‌ها در ++C نام‌های منحصربه‌فردی هستند که برای شناسایی متغیرها، توابع، کلاس‌ها، آرایه‌ها و سایر آیتم‌های تعریف‌شده توسط کاربر در...
++C
کلمات کلیدی در C++ کلمات رزرو شده‌ای هستند که برای کامپایلر معنا و مفهوم خاصی دارند. این کلمات نمی‌توانند برای...
++C
ثابت‌ها به مقادیر ثابتی اشاره دارند که برنامه نباید آن‌ها را تغییر دهد و به آن‌ها لیترال (Literal) گفته می‌شود. ثابت‌ها می‌توانند...
C++ Programming Language
توکن‌های C++ کوچک‌ترین واحدهای مستقل در یک برنامه هستند که توسط کامپایلر شناسایی و پردازش می‌شوند. این توکن‌ها با هم...
C++ Programming Language
حذف فضای نام (Namespace) شما می‌توانید به‌صورت صریح از پیشوند std:: برای اشیاء و توابع کتابخانه استاندارد استفاده کنید، به‌جای اینکه از...
C++ Programming Language
1

پشتیبانی واتساپ هوش فعال