تیکه پاره های جاوا
💎 کلاس StringBuffer در جاوا 🔆 یک کلاس مشابه String در رابطه با رشته ها کلاس StringBuffer میباشد. کلاس رشته همانطور که پیش تر بررسی کردیم، غیرقابل تغییر(Immutable)، دارای اندازه ثابت و... میباشد در حالی که StringBuffer قابل تغییر میباشد و از لحاظ افزودن دنباله…
بررسی متد های StringBuffer
☕️@pieceJava
☕️@pieceJava
👍2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#یکبار_برای_همیشه :)
❓ چطور خطای Could Not Find or Load Main Class رو برطرف کنیم!؟ 🤷🏻♂️
▶️ Intellij IDEA (00:00) + دلیل خطا
▶️ Eclipse (01:54)
▶️ NetBeans (02:36)
———
#Error
☕️@pieceJava
❓ چطور خطای Could Not Find or Load Main Class رو برطرف کنیم!؟ 🤷🏻♂️
▶️ Intellij IDEA (00:00) + دلیل خطا
▶️ Eclipse (01:54)
▶️ NetBeans (02:36)
———
#Error
☕️@pieceJava
👏3❤2👍2
#چرا
💎 چرا متد های آرایه در جاوا قابل دسترسی نیست!!؟
———
💁🏻♂️ نمیدونم تا حالا دقت کردین یا نه ولی متد و خصوصیات خود آرایه قابل دسترسی نیست! مثلا شما بوسیله length طول آرایه رو بدست میارید ولی هیچوقت نمیتونید به کلاس یا هرکجا که این خصوصیت رو در برمیگیره مراجعه کنید!
———
🔆 آرایه ها یک نوع خاص از ابجکت ها هستند که هیچ تعریفی مانند کلاس ندارند. این یعنی شما نمیتوانید متد ها و خصوصیات یک آرایه را در قالب کلاس ببینید. زیرا آرایه یک بخش از خود زبان است یا به عبارتی یکی از ویژگی های خود زبان میباشد که دارای قواعد نوشتاری(syntax) منحصر به فرد خود است.
〽️ اعضای آرایه:
⭕️ خصوصیت length که طول آرایه رو برمیگرداند. length میتواند 0 یا یک عدد مثبت باشد.
⭕️ متد clone که دقیقا متدی همنام متد clone در کلاس Object را اووراید میکند. خروجی این متد یک آرایه از نوع همان آرایه است. برای مثال اگر آرایه شما نوع []T باشد، خروجی متد Clone یک آرایه از نوع []T میباشد.
⭕️ تمامی اعضای آرایه از کلاس Object به ارث برده شده اند.
#array
———
☕️ @pieceJava
💎 چرا متد های آرایه در جاوا قابل دسترسی نیست!!؟
———
💁🏻♂️ نمیدونم تا حالا دقت کردین یا نه ولی متد و خصوصیات خود آرایه قابل دسترسی نیست! مثلا شما بوسیله length طول آرایه رو بدست میارید ولی هیچوقت نمیتونید به کلاس یا هرکجا که این خصوصیت رو در برمیگیره مراجعه کنید!
———
🔆 آرایه ها یک نوع خاص از ابجکت ها هستند که هیچ تعریفی مانند کلاس ندارند. این یعنی شما نمیتوانید متد ها و خصوصیات یک آرایه را در قالب کلاس ببینید. زیرا آرایه یک بخش از خود زبان است یا به عبارتی یکی از ویژگی های خود زبان میباشد که دارای قواعد نوشتاری(syntax) منحصر به فرد خود است.
〽️ اعضای آرایه:
⭕️ خصوصیت length که طول آرایه رو برمیگرداند. length میتواند 0 یا یک عدد مثبت باشد.
⭕️ متد clone که دقیقا متدی همنام متد clone در کلاس Object را اووراید میکند. خروجی این متد یک آرایه از نوع همان آرایه است. برای مثال اگر آرایه شما نوع []T باشد، خروجی متد Clone یک آرایه از نوع []T میباشد.
⭕️ تمامی اعضای آرایه از کلاس Object به ارث برده شده اند.
#array
———
☕️ @pieceJava
👍6
تیکه پاره های جاوا
💎 کلاس StringBuffer در جاوا 🔆 یک کلاس مشابه String در رابطه با رشته ها کلاس StringBuffer میباشد. کلاس رشته همانطور که پیش تر بررسی کردیم، غیرقابل تغییر(Immutable)، دارای اندازه ثابت و... میباشد در حالی که StringBuffer قابل تغییر میباشد و از لحاظ افزودن دنباله…
💎 کلاس StringBuilder در جاوا
🔆 کلاس StringBuilder در مقایسه با کلاس String یک کلاس Mutable میباشد.
🔗 درباره کلاس های Immutable و Mutable از اینجا بخوانید.
🔗 درباره Immutable بودن رشته ها از اینجا بخوانید.
عملکرد کلاس StringBuilder بسیار مشابه StringBuffer میباشد هرچند در رابطه با همزمانی نسبت بهStringBuffer متفاوت عمل میکند.
⭕️ از اونجا که متد های StringBuilder شباهت زیادی به StringBuffer داره، فقط دو تا از متد های این کلاس رو بررسی میکنیم(از این جهت حتما متد های کلاس StringBuffer رو مطالعه کنید):
🔗 در مورد کلاس StringBuffer از اینجا بخوانید
1️⃣ capacity()
یک ظرفیت برای StringBuilder در نظر میگیرد
2️⃣ trimToSize()
میزان حافظه مصرفی برای دنباله ای از رشته ها را به اندازه سایز رشته کاهش میدهد
مثال:
☕️ @pieceJava
🔆 کلاس StringBuilder در مقایسه با کلاس String یک کلاس Mutable میباشد.
🔗 درباره کلاس های Immutable و Mutable از اینجا بخوانید.
🔗 درباره Immutable بودن رشته ها از اینجا بخوانید.
عملکرد کلاس StringBuilder بسیار مشابه StringBuffer میباشد هرچند در رابطه با همزمانی نسبت بهStringBuffer متفاوت عمل میکند.
⭕️ از اونجا که متد های StringBuilder شباهت زیادی به StringBuffer داره، فقط دو تا از متد های این کلاس رو بررسی میکنیم(از این جهت حتما متد های کلاس StringBuffer رو مطالعه کنید):
🔗 در مورد کلاس StringBuffer از اینجا بخوانید
1️⃣ capacity()
یک ظرفیت برای StringBuilder در نظر میگیرد
2️⃣ trimToSize()
میزان حافظه مصرفی برای دنباله ای از رشته ها را به اندازه سایز رشته کاهش میدهد
مثال:
public class ITHOOLOO {
//Telegram: @pieceJava
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("HELLO WORRRRRRLLLD");
System.out.println(sb.capacity());//prints 34
sb.trimToSize();
System.out.println(sb.capacity());//prints 18
}
}
———☕️ @pieceJava
Telegram
تیکه پاره های جاوا
💎معنی Mutable و Immutable بودن کلاس ها (قابل تغییر و غیر قابل تغییر بودن)
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
❤3
💎 تفاوت String, StringBuilder , StringBuffer
🔆 جاوا برای دنباله ای از کاراکتر ها (رشته ها) سه کلاس فراهم کرده است: String, StringBuffer, StringBuilder.
همانطور که پیش تر گفتیم رشته ها از کلاس String غیر قابل تغییر یا Immutable هستند. در مقابل کلاس StringBuffer و StringBuilder کلاس های قابل تغییر هستند.
تفاوت های زیادی مابین StringBuilder و StringBuffer وجود دارد که در ادامه بخشی از این تفاوت ها را بیان خواهیم کرد.
1️⃣ا StringBuffer سنکرونایز شده و Thread-safe میباشد. این یعنی دو ترد بصورت همزمان نمیتوانند متد های StringBuffer را صدا بزنند. (در غیر اینصورت موقع استفاده همزمان ترد ها ممکن است نتایج اشتباه بوجود بیاید). از این جهت در محیط های چند نخی (multiple threads) میتواند بهتر عمل کند
2️⃣ا StringBuilder سنکرونایز شده و Thread-safe نیست. این یعنی چند ترد بطور همزمان میتوانند از متد های این کلاس استفاده کنند. از این رو در محیط های تک نخی (single threaded) بهتر میتواند عمل کند.
3️⃣ا StringBuffer نسبت به StringBuilder از کارامدی کمتری برخوردار است
🔰 مثال برای مورد 3:
💬 (برای خوانایی بیشتر، تصویر کد رو هم قرار میدم)
———
☕️@pieceJava
🔆 جاوا برای دنباله ای از کاراکتر ها (رشته ها) سه کلاس فراهم کرده است: String, StringBuffer, StringBuilder.
همانطور که پیش تر گفتیم رشته ها از کلاس String غیر قابل تغییر یا Immutable هستند. در مقابل کلاس StringBuffer و StringBuilder کلاس های قابل تغییر هستند.
تفاوت های زیادی مابین StringBuilder و StringBuffer وجود دارد که در ادامه بخشی از این تفاوت ها را بیان خواهیم کرد.
1️⃣ا StringBuffer سنکرونایز شده و Thread-safe میباشد. این یعنی دو ترد بصورت همزمان نمیتوانند متد های StringBuffer را صدا بزنند. (در غیر اینصورت موقع استفاده همزمان ترد ها ممکن است نتایج اشتباه بوجود بیاید). از این جهت در محیط های چند نخی (multiple threads) میتواند بهتر عمل کند
2️⃣ا StringBuilder سنکرونایز شده و Thread-safe نیست. این یعنی چند ترد بطور همزمان میتوانند از متد های این کلاس استفاده کنند. از این رو در محیط های تک نخی (single threaded) بهتر میتواند عمل کند.
3️⃣ا StringBuffer نسبت به StringBuilder از کارامدی کمتری برخوردار است
🔰 مثال برای مورد 3:
💬 (برای خوانایی بیشتر، تصویر کد رو هم قرار میدم)
public class ITHOOLOO{
public static void main(String[] args){
long startTime = System.currentTimeMillis();
StringBuffer sb = new StringBuffer("IT");
for (int i=0; i<10000; i++){
sb.append("HOOLOO");
}
System.out.println("Time taken by StringBuffer: " +
(System.currentTimeMillis() - startTime) + "ms");
startTime = System.currentTimeMillis();
StringBuilder sb2 = new StringBuilder("IT");
for (int i=0; i<10000; i++){
sb2.append("HOOLOO");
}
System.out.println("Time taken by StringBuilder: " +
(System.currentTimeMillis() - startTime) + "ms");
}
}
//OUTPUT:
// Time taken by StringBuffer: 11ms
// Time taken by StringBuilder: 1ms
#StringBuilder #StringBuffer #String———
☕️@pieceJava
👍4
مثال از کارامدی StringBuffer و StringBuilder
💬 لزوما تفاوت زمانی 10ms نیست و میتونه بالا و پایین داشته باشه
💬 البته یادتون باشه که هرکدوم با توجه به محیطی که میخواین بنویسین میتونه کاربردی تر نسبت به اون یکی باشه (مخصوصا محیط های چند نخی)
☕️@pieceJava
💬 لزوما تفاوت زمانی 10ms نیست و میتونه بالا و پایین داشته باشه
💬 البته یادتون باشه که هرکدوم با توجه به محیطی که میخواین بنویسین میتونه کاربردی تر نسبت به اون یکی باشه (مخصوصا محیط های چند نخی)
☕️@pieceJava
👍6
💎 کلیدواژه new و مراحل ایجاد یک شی
🔸 در جاوا کلیدواژه new برای ایجاد شی بکار میرود. همچنین بعد از کلیدواژه new متد سازنده (constructor) نیز فراخوانی و اجرا میشود.
=========
🟨 ایجاد هر شی سه مرحله دارد:
Object myObj = new Object();
1️⃣ Object myObj 2️⃣new 3️⃣Object();
1️⃣ بخش اعلام یا تعریف شی(Declaration). اینکار برای کمپایلر مشخص میکند که myObj برای مراجعه به یک داده از نوع Object میباشد. لزوما نباید هنگام ایجاد شی، آن را مقدار دهی کرد. میتوانید این کار را درخطوط بعدی انجام دهید. در نتیجه خط کد زیر هیچ خطایی نخواهد داشت و صرفا نوع داده مشخص شده است:
Object myObj;
2️⃣ بخش نمونه سازی که شی را بعد از تعریف، ایجاد میکند. یعنی در حافظه یک مقدار به آن اختصاص میدهد. (Instantiation) در این بخش کلیدواژه نیو اضافه میشود.
3️⃣ بخش مقدار دهی اولیه که بعد از کلیدواژه نیو، بوسیله سازنده انجام میشود (Initialization)
Object myObj = new Object();
#new #keywords #Objects #delecaration #decelare #init #initialize #instantiation
———
☕️@pieceJava
🔸 در جاوا کلیدواژه new برای ایجاد شی بکار میرود. همچنین بعد از کلیدواژه new متد سازنده (constructor) نیز فراخوانی و اجرا میشود.
=========
🟨 ایجاد هر شی سه مرحله دارد:
Object myObj = new Object();
1️⃣ Object myObj 2️⃣new 3️⃣Object();
1️⃣ بخش اعلام یا تعریف شی(Declaration). اینکار برای کمپایلر مشخص میکند که myObj برای مراجعه به یک داده از نوع Object میباشد. لزوما نباید هنگام ایجاد شی، آن را مقدار دهی کرد. میتوانید این کار را درخطوط بعدی انجام دهید. در نتیجه خط کد زیر هیچ خطایی نخواهد داشت و صرفا نوع داده مشخص شده است:
Object myObj;
2️⃣ بخش نمونه سازی که شی را بعد از تعریف، ایجاد میکند. یعنی در حافظه یک مقدار به آن اختصاص میدهد. (Instantiation) در این بخش کلیدواژه نیو اضافه میشود.
3️⃣ بخش مقدار دهی اولیه که بعد از کلیدواژه نیو، بوسیله سازنده انجام میشود (Initialization)
Object myObj = new Object();
#new #keywords #Objects #delecaration #decelare #init #initialize #instantiation
———
☕️@pieceJava
👍3❤2
💎 لینکدلیست استفاده کنیم یا اری لیست؟ LinkedList Vs ArrayList
#یکبار_برای_همیشه
🔆 تماما بستگی به این داره که چه کاری رو بخوایم انجام بدیم و در نتیجه میبایست ساختمان داده مناسب را انتخاب کنیم.
📃 جستجو:
جستجو در اری لیست بسیار سریع تر از لینکد لیست میباشد. از اونجا که اری لیست یک ساختار داده بر پایه ایندکس یا اندیس میباشد (Index based DS) زمان کمتری برای جستجو احتیاج دارد. در صورتی که لینکدلیست اینگونه نیست و باید تمامی عناصر را تا خونه مورد نظر پیمایش کند.
📃 حذف و اضافه:
حذف و اضافه در لینکدلیست زمان خیلی کمتری نسبت به اری لیست دارد. پیچیدگی زمانی در لینکدلیست برای این عملیات O(1) و در اری لیست در بدترین حالت (حذف اولین عنصر) زمان O(n) و در بهترین حالت (حذف آخرین عنصر) O(1) است.
💬 دلیلش هم خیلی سادست :) چون ساختار داده لینکد لیست جوریه که هر عنصر یه بخش برای ذخیره داده و یه بخش بعنوان اشاره گر داره که به عنصر بعدی اشاره میکنه. در نتیجه (مثلا) برای حذف چون عناصر لینکدلیست بوسیله آدرس به هم متصل هستن، حذف یکی از عناصر فقط آدرس به عنصر بعدی رو تغییر میده در صورتی که توی اری لیست حذف یک عنصر باعث میشه باقی عناصر به عقب شیفت داده بشن که جاش رو پر کنن و همین زمان بیشتری رو مصرف میکنه.
#LinkedList #ArrayList
———
☕️@pieceJava
#یکبار_برای_همیشه
🔆 تماما بستگی به این داره که چه کاری رو بخوایم انجام بدیم و در نتیجه میبایست ساختمان داده مناسب را انتخاب کنیم.
📃 جستجو:
جستجو در اری لیست بسیار سریع تر از لینکد لیست میباشد. از اونجا که اری لیست یک ساختار داده بر پایه ایندکس یا اندیس میباشد (Index based DS) زمان کمتری برای جستجو احتیاج دارد. در صورتی که لینکدلیست اینگونه نیست و باید تمامی عناصر را تا خونه مورد نظر پیمایش کند.
📃 حذف و اضافه:
حذف و اضافه در لینکدلیست زمان خیلی کمتری نسبت به اری لیست دارد. پیچیدگی زمانی در لینکدلیست برای این عملیات O(1) و در اری لیست در بدترین حالت (حذف اولین عنصر) زمان O(n) و در بهترین حالت (حذف آخرین عنصر) O(1) است.
💬 دلیلش هم خیلی سادست :) چون ساختار داده لینکد لیست جوریه که هر عنصر یه بخش برای ذخیره داده و یه بخش بعنوان اشاره گر داره که به عنصر بعدی اشاره میکنه. در نتیجه (مثلا) برای حذف چون عناصر لینکدلیست بوسیله آدرس به هم متصل هستن، حذف یکی از عناصر فقط آدرس به عنصر بعدی رو تغییر میده در صورتی که توی اری لیست حذف یک عنصر باعث میشه باقی عناصر به عقب شیفت داده بشن که جاش رو پر کنن و همین زمان بیشتری رو مصرف میکنه.
#LinkedList #ArrayList
———
☕️@pieceJava
👍7
💎 استثنای NullPointerException و چگونگی رفع خطا
#یکبار_برای_همیشه
🟨 استثنای NullPointerException یک نوع استثنای در زمان اجراست (RuntimeException). این استثنا زمانی رخ میدهد که بخواهیم از ابجکت (شی، نمونه) ای استفاده کنیم که مقداری برابر null دارد.
🔗 در مورد کلیدواژه null از اینجا بخوانید
🔅در موارد زیر استثنای NullPointerException رخ میدهد:
💬 (برای خوانایی بهتر گوشی رو در حالت افقی قرار بدین و یا از تلگرام دسکتاپ استفاده کنین)
1️⃣ فراخوانی متد از یک ابجکت نال:
💬این مورد خیلی مهمه. فرض کنین یه ارایه با ظرفیت ذخیره 100 دانشجو داره. اونوقت اگه قسمتی از ارایه همچنان پر نشده باشه و به هر دلیلی بخواین ارایه رو پیمایش کنین، باید حواستون به خطای NullPointerException باشه :)
شناسایی NullPointer... بسیار ساده است. به خروجی ایجاد شده بواسطه خطا نگاه کنید و خواهید دید که خطای NullPointerException ایجاد شده دقیقا از چه کلاسی و از چه خطی رخ داده است. بعد از پیدا کردن محل خطا، بررسی کنید که کدام یک از موارد ذکر شده باعث رخ دادن این استثنا شده است.
⁉️ چطور این استثنا رو رفع کنیم؟
در هر کجا که با ابجکت ها سر و کار دارید، سعی کنید شرایط null بودن ابجکت رو هم بررسی کنید و یا در بدنه متد، ورودی ها را کنترل کنید.
🔰 برای مثال:
#null #nullpointerexception #exception #uncheckedexception
☕️@pieceJava
#یکبار_برای_همیشه
🟨 استثنای NullPointerException یک نوع استثنای در زمان اجراست (RuntimeException). این استثنا زمانی رخ میدهد که بخواهیم از ابجکت (شی، نمونه) ای استفاده کنیم که مقداری برابر null دارد.
🔗 در مورد کلیدواژه null از اینجا بخوانید
🔅در موارد زیر استثنای NullPointerException رخ میدهد:
💬 (برای خوانایی بهتر گوشی رو در حالت افقی قرار بدین و یا از تلگرام دسکتاپ استفاده کنین)
1️⃣ فراخوانی متد از یک ابجکت نال:
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
2️⃣ دسترسی یا تغییر مقدار یک فیلد در یک ابجکت نال:public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Test instance = null;
instance.xField = 5;
}
}
class Test{
int xField;
}
3️⃣ تلاش برای دسترسی به یک خانه نال در آرایه:💬این مورد خیلی مهمه. فرض کنین یه ارایه با ظرفیت ذخیره 100 دانشجو داره. اونوقت اگه قسمتی از ارایه همچنان پر نشده باشه و به هر دلیلی بخواین ارایه رو پیمایش کنین، باید حواستون به خطای NullPointerException باشه :)
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Object[] x = null;
System.out.println(x[0]);
}
}
4️⃣ بررسی طول یک آرایه در زمان اجرا درصورتی که مقدار نال داشته باشد:public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Object[] x = null;
System.out.println(x.length);
}
}
5️⃣ زمانی که null پرتاب (thrown) شود.public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
throw null;
}
}
6️⃣ ارسال مقدار نال به یک متد:public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
println(null);
}
private static void println(String s){
System.out.println(s.toLowerCase());
}
}
⁉️ چطور این استثنا رو شناسایی کنیم؟شناسایی NullPointer... بسیار ساده است. به خروجی ایجاد شده بواسطه خطا نگاه کنید و خواهید دید که خطای NullPointerException ایجاد شده دقیقا از چه کلاسی و از چه خطی رخ داده است. بعد از پیدا کردن محل خطا، بررسی کنید که کدام یک از موارد ذکر شده باعث رخ دادن این استثنا شده است.
⁉️ چطور این استثنا رو رفع کنیم؟
در هر کجا که با ابجکت ها سر و کار دارید، سعی کنید شرایط null بودن ابجکت رو هم بررسی کنید و یا در بدنه متد، ورودی ها را کنترل کنید.
🔰 برای مثال:
private static void println(String s){
if(s!=null)
System.out.println(s.toLowerCase());
}
🔰 مثال 2:if(user!=null && user.getUserName() !=null) {
System.out.println("User Name: "+user.getUserName().toLowerCase());
}
if(user!=null && user.getUserName() !=null) {
System.out.println("User ID: "+user.getUserId().toLowerCase());
}
———#null #nullpointerexception #exception #uncheckedexception
☕️@pieceJava
Telegram
تیکه پاره های جاوا
💎بررسی مقدار و کلیدواژه null در جاوا
🔆 یکی از کلمات رزرو شده در جاوا کلمه null میباشد. مقدار null فقط مختص داده های مرجع میباشد. زمانی که یک شی از یک داده مرجع (Reference type) مقدار دهی نشده باشد (به هیچ خانه ای از حافظه اشاره نکند) بصورت پیشفرض مقدار…
🔆 یکی از کلمات رزرو شده در جاوا کلمه null میباشد. مقدار null فقط مختص داده های مرجع میباشد. زمانی که یک شی از یک داده مرجع (Reference type) مقدار دهی نشده باشد (به هیچ خانه ای از حافظه اشاره نکند) بصورت پیشفرض مقدار…
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
#یکبار_برای_همیشه
#الگوها
⁉️دقیقا چطور با حلقه های تو در تو الگو هارو چاپ میکنن؟ چه منطقی پشتشه؟ :)
⭕️ قسمت اول
#star_pattern
———
☕️@pieceJava
#الگوها
⁉️دقیقا چطور با حلقه های تو در تو الگو هارو چاپ میکنن؟ چه منطقی پشتشه؟ :)
⭕️ قسمت اول
#star_pattern
———
☕️@pieceJava
👏3❤1
💎 وارد کردن ایستا (import static )
🔗 پیش از همه در مورد کلیدواژه ایستا (static) از اینجا بخوانید
🔆 وارد کردن ( import) یک پکیج در جاوا به برنامه نویس اجازه استفاده از کلاس های پکیج مورد نظر را میدهد ولی اگر بخواهیم فقط از متد های استاتیک کلاس وارد شده استفاده کنیم، میتوان بجای ایمپورت کردن عادی، کلاس را بصورت ایستا ایمپورت کنیم (import static...)
ایمپورت کردن ایستا کاملا مشابه ایمپورت کردن عادی است. همانطور که در ایمپورت عادی احتیاجی به صدا زدن دوباره اسم پکیج برای استفاده از کلاس نیست، در حالت ایمپورت ایستا، لزومی به صدا زدن اسم کلاس نیست و میتوان بصورت مستقیم از اعضای ایستای کلاس مورد نظر استفاده کرد.
✏️ برای مثال:
⭕️ چه زمانی از این حالت استفاده کنیم؟
💬 اولا بهتره خیلی کم اینکارو انجام بدین! دلیلش هم برمیگرده به خوانایی کد. مثلا اگه همزمان از خاصیت ارث بری هم دارین استفاده میکنین، بهتره به اینصورت ایمپورت نکنین. چون ممکنه در آینده هم خودتون و هم توسعه دهنده ای که با کد شما سر و کار داره، سردرگم بشه :) و نه فقط توی بحث ارث بری بلکه در کل بهتره کم از این خاصیت استفاده بشه.
#import #static
———
☕️@pieceJava
🔗 پیش از همه در مورد کلیدواژه ایستا (static) از اینجا بخوانید
🔆 وارد کردن ( import) یک پکیج در جاوا به برنامه نویس اجازه استفاده از کلاس های پکیج مورد نظر را میدهد ولی اگر بخواهیم فقط از متد های استاتیک کلاس وارد شده استفاده کنیم، میتوان بجای ایمپورت کردن عادی، کلاس را بصورت ایستا ایمپورت کنیم (import static...)
ایمپورت کردن ایستا کاملا مشابه ایمپورت کردن عادی است. همانطور که در ایمپورت عادی احتیاجی به صدا زدن دوباره اسم پکیج برای استفاده از کلاس نیست، در حالت ایمپورت ایستا، لزومی به صدا زدن اسم کلاس نیست و میتوان بصورت مستقیم از اعضای ایستای کلاس مورد نظر استفاده کرد.
✏️ برای مثال:
import static java.lang.System.out;
public class Ithooloo {
//Telegram: @pieceJava
public static void main(String[] args) {
out.println("hello");
}
}
✏️ مثال 2:import static java.lang.Math.*;
public class Ithooloo {
//Telegram: @pieceJava
public static void main(String[] args) {
double number1 = pow(2,3);
double number2 = sqrt(4);
double number3 = PI;
}
}
✏️ مثال 3:import java.time.LocalDate;
import static java.time.LocalDate.*;
public class Ithooloo {
//Telegram: @pieceJava
public static void main(String[] args) {
LocalDate time = now();
}
}
❌مهم!⭕️ چه زمانی از این حالت استفاده کنیم؟
💬 اولا بهتره خیلی کم اینکارو انجام بدین! دلیلش هم برمیگرده به خوانایی کد. مثلا اگه همزمان از خاصیت ارث بری هم دارین استفاده میکنین، بهتره به اینصورت ایمپورت نکنین. چون ممکنه در آینده هم خودتون و هم توسعه دهنده ای که با کد شما سر و کار داره، سردرگم بشه :) و نه فقط توی بحث ارث بری بلکه در کل بهتره کم از این خاصیت استفاده بشه.
#import #static
———
☕️@pieceJava
Telegram
تیکه پاره های جاوا
💎 کلیدواژه static
🔆 یکی از 57 کلیدواژه رزرو شده در جاوا، کلیدواژه استاتیک static میباشد.
💡 از کلیدواژه های رزرو شده برای اسامی متغیر ها و... نمیتوان استفاده کرد.
در اصل کلیدواژه استاتیک برای مدیریت حافظه به کار میرود. در جاوا متغیر ها ، متد ها، بلاک ها…
🔆 یکی از 57 کلیدواژه رزرو شده در جاوا، کلیدواژه استاتیک static میباشد.
💡 از کلیدواژه های رزرو شده برای اسامی متغیر ها و... نمیتوان استفاده کرد.
در اصل کلیدواژه استاتیک برای مدیریت حافظه به کار میرود. در جاوا متغیر ها ، متد ها، بلاک ها…
👍3