برنامه نویسی

درک رشته ها ، حافظه شی ، استاتیک در مقابل غیر استاتیک و کلمه کلیدی “این” در روز 7 جاوا …

جاوا یک زبان برنامه نویسی قدرتمند است که ویژگی های مختلفی را در اختیار توسعه دهندگان قرار می دهد تا داده ها و حافظه را به طور کارآمد کنترل کنند. در این وبلاگ ، رشته ها ، مکان های حافظه شی ، متغیرهای استاتیک در مقابل غیر استاتیک و this کلمه کلیدی ، به طور خاص با تمرکز روی جاوا 7.


1. رشته در جاوا چیست؟

بوها String در جاوا دنباله ای غیرقابل تغییر از شخصیت ها است. برخلاف انواع داده های ابتدایی ، رشته ها اشیاء موجود در جاوا هستند ، به این معنی که آنها نمونه ای از String کلاس.

چگونه یک رشته ایجاد کنیم؟

جاوا روش های مختلفی برای ایجاد یک رشته ارائه می دهد:

  1. استفاده از رشته تحت اللفظی (ذخیره شده در استخر رشته)
String str1 = "Hello Java";
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. با استفاده از new کلمه کلیدی (ذخیره شده در حافظه پشته)
String str2 = new String("Hello Java");
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

هر دو روش یک رشته ایجاد می کنند ، اما روش اول آن را در استخر رشته، که به بهینه سازی حافظه کمک می کند.


2. چاپ محل حافظه شیء

در جاوا ، اشیاء در حافظه پشته ذخیره می شوند و ما می توانیم مرجع حافظه آنها را با استفاده از System.identityHashCode() روش

public class MemoryExample {
    public static void main(String[] args) {
        String str1 = new String("Java");
        String str2 = "Java";

        System.out.println(System.identityHashCode(str1)); // Heap memory
        System.out.println(System.identityHashCode(str2)); // String Pool memory
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اینجا str1 در حافظه پشته ذخیره می شود ، در حالی که str2 در استخر رشته ذخیره می شود.


3. اعلام یک رشته بدون اختصاص یک مقدار

جاوا به ما اجازه می دهد بدون اختصاص یک مقدار متغیر رشته را اعلام کنیم:

String str; // Declaration without assignment
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

با این حال ، اگر سعی می کنید چاپ کنید str قبل از آغاز اولیه ، جاوا خطای تلفیقی را پرتاب می کند. بنابراین ، همیشه آن را قبل از استفاده اولیه کنید:

str = "Hello";
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


4. چه زمانی استفاده می شود static و چه موقع از غیر استاتیک استفاده کنیم؟

متغیرها و روشهای استاتیک:

  • متعلق به کلاس است به جای یک نمونه
  • در همه موارد به اشتراک گذاشته شده است از کلاس
  • بدون ایجاد یک شی قابل دسترسی استبشر

مثال:

class Example {
    static int counter = 0;

    static void showCounter() {
        System.out.println("Counter: " + counter);
    }
}

public class Main {
    public static void main(String[] args) {
        Example.counter = 10;
        Example.showCounter(); // Accessing without creating an object
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

متغیرها و روشهای غیر استاتیک:

  • متعلق به اشیاء فردی استبشر
  • برای دسترسی به آنها به یک شی نیاز دارید.

مثال:

class Example {
    int number = 5; // Non-static variable

    void display() {
        System.out.println("Number: " + number);
    }
}

public class Main {
    public static void main(String[] args) {
        Example obj = new Example();
        obj.display(); // Requires object creation
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چه زمانی استفاده کنید static؟

  • هنگامی که یک متغیر یا روش باید در تمام موارد به اشتراک گذاشته شود.
  • هنگامی که یک روش به متغیرهای نمونه بستگی ندارد.

چه موقع از غیر استاتیک استفاده کنیم؟

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

5. چیست this کلمه کلیدی در جاوا؟

در this کلمه کلیدی به نمونه فعلی از کلاس این کمک می کند تا در هنگام داشتن نام یکسان ، بین متغیرهای نمونه و پارامترهای روش به تمایز کمک کند.

مثال بدون this (مسئله ابهام)

class Student {
    String name;

    void setName(String name) {
        name = name; // Here, both refer to the method parameter, so the instance variable remains unchanged
    }

    void display() {
        System.out.println("Student Name: " + name);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در مثال بالا ، name = name; متغیر نمونه را به روز نمی کند زیرا هر دو به پارامتر روش مراجعه می کنند.

مثال با this (نسخه اصلاح شده)

class Student {
    String name;

    void setName(String name) {
        this.name = name; // Now, this.name refers to the instance variable
    }

    void display() {
        System.out.println("Student Name: " + this.name);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


6. چه زمانی استفاده می شود this و چرا؟

مورد استفاده چرا استفاده کنید this؟
برای تمایز بین متغیرهای نمونه و محلی از درگیری های نام متغیر جلوگیری می کند
برای تماس با سازنده دیگر در همان کلاس تکثیر کد را کاهش می دهد
برای عبور از شیء فعلی به عنوان یک استدلال هنگام عبور از مرجع شیء کمک می کند

با استفاده از this برای تماس با سازنده دیگر

class Student {
    String name;

    Student() {
        this("Unknown"); // Calls the parameterized constructor
    }

    Student(String name) {
        this.name = name;
    }

    void display() {
        System.out.println("Student Name: " + name);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


پایان

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


💡 چه چیزی بعدی؟برای وبلاگ بعدی ما در مورد جاوا با ما همراه باشید! **

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا