menusearch
javapro.ir

♨️ جلسه دوازدهم - کلمه کلیدی static

جستجو
پنج شنبه ۱ آذر ۱۴۰۳ | ۱۲:۹:۵۵
۱۳۹۵/۸/۱ شنبه
(9)
(0)
♨️ جلسه دوازدهم - کلمه کلیدی static
♨️ جلسه دوازدهم -  کلمه کلیدی static

فهرست جلسات دوره مقدماتی جاوا

مقدمه اول | جاوا چیست؟

مقدمه دوم | تاریخچه جاوا

مقدمه سوم | ویژگی‌های زبان جاوا

جلسه اول | راهنمای دانلود و نصب JDK

جلسه دوم | اجرای یک برنامه جاوا در Notepad

جلسه سوم | راهنمای دانلود و نصب Eclipse

جلسه چهارم | ساخت اولین برنامه جاوا در Eclipse

جلسه پنجم | متغیر ها در جاوا

جلسه ششم | تغییر فونت محیط Eclipse

جلسه هفتم | عملگر‌های پایه ای جاوا

جلسه هشتم | دستورات شرطی

جلسه نهم | اشیا و کلاس ها

جلسه دهم | ورودی گرفتن

جلسه یازدهم | حلقه‌های کنترلی

جلسه دوازدهم | کلمه کلیدی static

جلسه سیزدهم | کلاس Math

جلسه چهاردهم | کلاس String

جلسه پانزدهم | آرایه‌های یک بعدی

جلسه شانزدهم | کنترل سطح دسرسی (Modifiers)

جلسه هفدهم | متدها در جاوا

جلسه هجدهم | کلمه کلیدی this

جلسه نوزدهم | کلاس‌های داخلی

جلسه بیستم | ارث بری در جاوا

جلسه بیست و یکم | کلمه کلیدی final

جلسه بیست و دوم | Overriding در جاوا

جلسه بیست و سوم | Polymorphism( چند ریختی)

جلسه بیست و چهارم | چندریختی را بهتر یادبگیرید

جلسه بیست و پنجم | Abstraction( انتزاع)

جلسه بیست و ششم | Encapsulation(کپسوله سازی)

جلسه بیست و هفتم | اینترفیس (Interface)

جلسه بیست و هشتم | کلاس Random

جلسه بیست و نهم | Exceptions (استثناها)

جلسه سی ام | کار با فایل در جاوا(Files and I/O)

جلسه سی و یکم | کلاس InputStreamReader

جلسه سی و دوم | کلاس OutputStreamWriter

جلسه سی و سوم | کلاس BufferedReader

جلسه سی و چهارم | کلاس BufferedWriter

جلسه سی و پنجم | Serialization در جاوا

جلسه سی و ششم | چندنخی(Multithreading)

جلسه سی و هفتم | آرایه دو بعدی در جاوا

جلسه سی و هشتم | کلاس ArrayList در جاوا

جلسه سی و نهم | Non Access Modifier در جاوا

 

 

دوره رایگان مقدماتی زبان جاوا


💡 کلمه کلیدی static برای مدیریت حافظه استفاده می‌شود.


💡 کلمه کلیدی استاتیک در جاوا می‌تواند برای متغیرها و متدهایی که متعلق به یک کلاس هستند (متغیر های نمونه و متد هایی که در بدنه کلاس تعریف می‌شوند) استفاده شود.پس متغیر های محلی نمی‌توانند استاتیک باشند.


💠 خب چطور یک متغیر را static اعلام کنیم؟

اعلام یک متغیر از نوع استاتیک   
متغیر استاتیک تنها یک حافظه از کلاس را می‌گیرد یعنی مقدارش برای همه اشیای ساخته شده از کلاس یکسان است. برای روشن تر شدن این مطلب فرض کنید یک کلاس سگ داریم و ویژگی نام سگ استاتیک است اگر ما 10 سگ از این کلاس سگ بسازیم و نام "جسی" را روی یک سگ بگذاریم نام همهی 10 سگ جسی خواهد شد زیرا متغیر نام استاتیک یا یکتا بوده و برای همه اشیای یک کلاس یکی است، در زیر برای درک بهتر تفاوت دسرسی اشیای ساخته شده از یک کلاس به متغیر استاتیک و غیر استاتیک آماده است:

🔵 دسرسی اشیای ساخته شده از یک کلاس به متغیر غیراستاتیک:

متغیر استاتیک در جاوا

 
 🔵 دسرسی اشیای ساخته شده از یک کلاس به متغیر استاتیک:

متغیر static در جاوا

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

 

    در مثال زیر متغیر و متد استاتیک یک کلاس را در متد main بدون شی ساختن و بکار بردن مستقیم نام کلاس صدا زده ایم.

 

package tutorial;
public class Cat {
   static String n;
   int age;
   static void eat() {
       System.out.println("cat Eating");
   }
   void sleep () {
       System.out.println("cat sleep ing");
   }
   public static void main(String[] args) {

       n = "pishy";
       eat();
       System.out.println(n);

   }

}


خروجی:

 

cat Eating
pishy

 

✔ همان طور که مشاهده می‌کنید چون متد ()eat و متغیر n استاتیک هستند دیگر برای صدا زدنشون نیاز به ساختن شی نیست.
✔ حالا در پایین می‌خواهیم از متد () sleep استفاده کنیم چون استاتیک نیست باید با استفاده از شی ساخته شده از کلاس آن را صدا زد:

 

package tutorial;
public class Cat {
   static String n;
   int age;
   static void eat() {
       System.out.println("cat Eating");
   }
   void sleep () {
       System.out.println("cat sleep ing");
   }
   public static void main(String[] args) {
  Cat cat=new Cat();
      cat. sleep ();
      cat.age=6;
       n = "pishy";
       eat();
       System.out.println("name= "+n+", "+"age= "+cat.age);

   }

}


خروجی:

 

cat sleep ing
cat Eating
name= pishy, age= 6


و در مثال زیر چون از متغیر محلی همنام با متغیر نمونه n در متد main داریم دیگه واجب میشه که برای صدا زدن متغیر استاتیک از نام کلاس و نقطه(.) و اسم متغیر استفاده کنیم:

 

package tutorial;
public class Cat {
   static String n;
   int age;
   static void eat() {
       System.out.println("cat Eating");
   }
   void sleep () {
       System.out.println("cat sleep ing");
   }
   public static void main(String[] args) {
  Cat cat=new Cat();
      cat. sleep ();
      cat.age=6;
       n = "pishy";
        String n="bobo";
   
       eat();
       System.out.println("name= "+n);
       System.out.println("name= "+Cat.n);
   }

}


خروجی:

 

cat sleep ing
cat Eating
name= bobo
name= pishy

 

توضیحات:

n = "pishy";
        String n="bobo";

 

System.out.println("name= "+n);
       System.out.println("name= "+Cat.n);

 

    ✔ همان طور که گفتیم اگر همزمان یک متغیر محلی همنام با متغیر نمونه استاتیک وجود داشت ناچار هستیم از نام کلاس برای صدا زدن متغیر استفاده کنیم.

 

     مزایای متغیرهای استاتیک: در صرفه جویی حافظه برنامه شما موثر است.

 

     در دو مثال زیر تفاوت متغیر استاتیک و غیر استاتیک را درک خواهیم کرد:


وقتی متغیر غیر استاتیک باشد:

 

package javalike ;

class Counter {
   int count = 0;

   Counter() {
       count++;
       System.out.println(count);
   }

   public static void main(String args[]) {

       Counter c1 = new Counter();
       Counter c2 = new Counter();
       Counter c3 = new Counter();

   }
}


خروجی:

 

1
1
1


✔ ما در این مثال متغیر نمونه count را غیر استاتیک تعریف کردیم و درون سازنده کلاس دستور افزایش یکی یکی این متغیر را پیاده سازی کردیم که با هربار شی ساختن این متغیر مقدارش افزایش پیدا کند اما چون با هر بار شی ساختن یک کپی از ویژگی ها و رفتار های غیر استاتیک کلاس برای شی ایجاد می‌شود، پس با هربار شی ساختن یک count با مقدار صفر برای شی درنظر گرفته می‌شود که در سازنده کلاس وقتی count++ می‌شود مقدارش یکی اضاف و به 1 تغییر داده می‌شود و سپس در خروجی نمایش داده می‌شود.


وقتی متغیر استاتیک باشد:

 

package javalike ;

class Counter {
   static int count = 0;

   Counter() {
       count++;
       System.out.println(count);
   }

   public static void main(String args[]) {

       Counter c1 = new Counter();
       Counter c2 = new Counter();
       Counter c3 = new Counter();

   }
}


خروجی:

 

1
2
3


✔ ما در این مثال متغیر نمونه count را استاتیک تعریف کردیم و درون سازنده کلاس دستور افزایش یکی یکی این متغیر را پیاده سازی کردیم که با هربار شی ساختن این متغیر مقدارش افزایش پیدا کند،چون متغیر استاتیک هست تنها یک حافظه به متغیر اختصاص داده می‌شود و همه اشیای ساخته شده از کلاس به این یک متغیر دسرسی دارند و اگر با یک شی مقدار این متغیر را تغییر دهیم مقدار متغیر برای سایر اشیا نیز تغییر میکند. و در اینجا وقتی c1 ساخته می‌شود مقدار count برابر 1و با ساخته شدن c2 مقدار count برابر 2 و در نهایت با ساخته شدن شی c3 مقدار count برابر 3 می‌شود.

 

✔ متد ها نیز می‌توانند مانند متغیر ها استاتیک باشند اگر در ابتدای متد از کلمه کلیدی static استفاده کنیم.


✔ مانند متغیر ها اگر متد استاتیک باشد برای استفاده و صدا زدن متد نیاز به شی ساختن از کلاس نیست.


✔ متدهای استاتیک برای دسرسی به متغیر های استاتیک و دستکاری انها به کار می‌رود.

 

package tutorial;
public class Cat {
   static String name;
   int age;

   static void setName(String n) {
       name=n;
       
   }

   public Cat(){
       
       name="miuuuu";
   }
public void show(){
   
   System.out.println("name="+name);
}

   public static void main(String[] args) {


Cat c1=new Cat();

Cat.setName("pishi");
c1.show();


   }

}


خروجی:

 

name=pishi


توضیحات:

 

static String name;
   int age;


✔ تعریف دو متغیر یکی از نوع رشته و استاتیک و دیگری از نوع عدد صحیح و غیر استاتیک

 

static void setName(String n) {
       name=n;
       
   }


✔ این متد که از نوع void و استاتیک است، یک رشته(String) می‌گیرد و متغیر رشته name که استاتیک هم است مقدار دهی میکند.

 

  public Cat(){
       
       name="miuuuu";
   }


     سازنده کلاس گربه که وقتی هر شی از این کلاس ساخته شد متغیر name را مقداردهی اولیه می‌کند.

 

public void show(){
   
   System.out.println("name="+name);
}


  //این متد مقدار متغیر name را در خروجی چاپ میکند.

 

public static void main(String[] args) {


Cat c1=new Cat();

Cat.setName("pishi");
c1.show();


   }


✔ برای اجرای برنامه نیاز به متد main داریم که درآن یک شی از کلاس Cat ساخته ایم و در خط بعد چون متد setName استاتیک هست نیازی نیست با شی آن را صدا بزنیم فقط کافیست با نام کلاس ،نقطه(.) و نام متد آن را فراخوانی کنیم.


✔ درپایان با متد show مقدار متغیر را در خروجی چاپ میکنیم.

 

💡 یک نکته در مورد متدهای استاتیک:


متد های استاتیک نمی‌توانند در بدنه خود متغیر های غیر استاتیک را دستکاری کنند!!!


         

...ادامه این جلسه آموزشیرا می‌توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.

 


این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)

آموزش آسان و ساده زبان برنامه نویسی جاوا
لینک دانلود

 

 


 

instagram
نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

2 نظر
Sharareh Khan Mirza
جمعه یکم تیر ۰۳
پاسخ
()
()
Sharareh Khan Mirza
Aliiii
سینا
دوشنبه ششم آبان ۹۸
پاسخ
(1)
()
سینا
تيتر نمودار متغيير استاتيک و غير استاتيک اشتباه است
پاسخ مدیر سایت
سلام.اصطلاح شد.از اطلاع رسانی شما سپاسگزارم
پاسخ مدیر سایت
هدر سایت
بلک فرایدی آکادمی جاواپرو،50% تخفیف روی تمامی دوره های جاوا تا 10 آذر 1403
مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو  [کلیک کنید]
آموزش پروژه محور اسپرینگ بوت(Spring Boot)-سیستم دانشگاه
ثبت نام در دوره آموزش Spring security
دوره معماری میکروسرویس ها (Microservices) با استفاده از Spring Boot و Spring Cloud
دوره پرتاب | آموزش پیش نیازهای برنامه نویسی
دوره آموزش مبانی زبان برنامه نویسی جاوا
دوره آموزش مفاهیم پیشرفته زبان برنامه نویسی جاوا
مقدمه ای از زبان برنامه نویسی جاوا(java)
آموزش زبان برنامه نویسی جاوا
آموزش گرافیک در زبان برنامه نویسی جاوا
آموزش مدیریت چیدمان گرافیکی در زبان جاوا
آموزش ساخت بازی دوبعدی در زبان جاوا
Collection ها در زبان برنامه نویسی جاوا
آموزش پروژه محور ساخت برنامه مدیریت بانک با JavaFX
نمونه پروژه های رایگان زبان جاوا
آموزش دیتابیس در زبان برنامه نویسی جاوا
نمونه مثال پایه ای زبان برنامه نویسی جاوا
نمونه مثال String در زبان برنامه نویسی جاوا
آموزش جامع برنامه نویسی JavaFX
آموزش ساخت برنامه آزمون تستی در JavaFX
آموزش برنامه نویسی سوکت در جاوا
آموزش ساخت برنامه دفترچه تلفن با JavaFX
آموزش ساخت ربات ساده تلگرام با زبان جاوا
آموزش ساخت برنامه ماشین حساب با JavaFX
آموزش ساخت برنامه ساده مدیریت ایمیل ها با JavaFX
دوره آموزش Spring Boot
سفارش انجام پروژه زبان برنامه نویسی جاوا(JAVA)
سفارش انجام پروژه برنامه نویسی متلب(MATLAB) با قیمت منصفانه و تحویل به موقع
سفارش انجام پروژه زبان برنامه نویسی سی شارپ (#C)
سفارش انجام پروژه زبان برنامه نویسی سی(C)
سفارش انجام پروژه زبان برنامه نویسی پایتون(Python)
سفارش انجام پروژه زبان برنامه نویسی PHP (پی اچ پی)
سفارش انجام پروژه زبان برنامه نویسی اسمبلی(Assembly)
سفارش انجام پروژه زبان برنامه نویسی جاوا اسکریپت (Javascript)
سفارش انجام پروژه هوش مصنوعی
سفارش انجام پروژه طراحی الگوریتم
سفارش انجام پروژه ساختمان داده ها
سفارش انجام پروژه مهندسی نرم افزار
سفارش انجام پروژه شبکه های کامپیوتری
سفارش انجام پروژه پایگاه داده: دیتابیس (database)
 سفارش انجام پروژه سیستم عامل
سفارش انجام پروژه پاورپوینت(PowerPoint)
سفارش انجام پروژه اکسل (Excel)
سفارش انجام تحقیق و تهیه مقاله
سوالات متداول برنامه نویسی
جدیدترین مطالب
گفتگو را شروع کنید
مشاوره ،تدریس خصوصی و سفارش انجام انواع پروژه های برنامه نویسی