تیکه پاره های جاوا
#چرا 💎چرا رشته ها غیر قابل تغییر یا Immutable هستند؟ در مورد Immutable و Mutable بودن کلاس ها از اینجا بخوانید. فرض کنید رشته ای بصورت زیر داریم: String str = "Hello"; حال بوسیله متد concat یک رشته را به رشته فعلی اضافه میکنیم: str.concat(" World"); و در…
مثال از مفهوم غیر قابل تغییر بودن رشته ها
@pieceJava
@pieceJava
👍4
💎 کلاس Object در جاوا
هر کلاس جاوا بصورت مستقیم یا غیر مستقیم از کلاس Object ارث بری میکند. این به این معناست که هر کلاسی میتواند متد های کلاس Object را که به نحوی private یا final نیستند، اورراید کند.
⭕️متد HashCode مقدار هش کد را برای شی بازگشت میدهد.
⭕️متد equals برابری دو شی را بررسی میکند 🔗 (درباره مقایسه ابجکت ها(اشیا) و هش کد از اینجا بخوانید)
⭕️متد clone یک کپی از شی مورد نظر ایجاد میکند. البته برای clone کردن، کلاس مورد نظر باید اینترفیس Cloneable را پیاده سازی و از این کلاس متد clone() را تعریف کند.
⭕️متد toString رشته ای را در مورد شی ایجاد شده بازگشت میدهد. این رشته میتواند اطلاعات شی یا هرچیز دیگری باشد. برای مثال بصورت پیشفرض متد toString رشته @هش کد را بازگشت میدهد.
⭕️متد finalize متدی است که بصورت خودکار توسط گاربیج کالکشن قبل از حذف و از بین بردن شی صدا زده میشود. برای مثال زمانی که یک شی از هیچ یک از منابع استفاده نکند و هیچ شیی به آن مراجعه نکند، بصورت خودکار توسط گاربیج کالکشن برای ازاد سازی و مدیریت حافظه، حذف خواهد شد.
هر کلاس جاوا بصورت مستقیم یا غیر مستقیم از کلاس Object ارث بری میکند. این به این معناست که هر کلاسی میتواند متد های کلاس Object را که به نحوی private یا final نیستند، اورراید کند.
⭕️متد HashCode مقدار هش کد را برای شی بازگشت میدهد.
⭕️متد equals برابری دو شی را بررسی میکند 🔗 (درباره مقایسه ابجکت ها(اشیا) و هش کد از اینجا بخوانید)
⭕️متد clone یک کپی از شی مورد نظر ایجاد میکند. البته برای clone کردن، کلاس مورد نظر باید اینترفیس Cloneable را پیاده سازی و از این کلاس متد clone() را تعریف کند.
⭕️متد toString رشته ای را در مورد شی ایجاد شده بازگشت میدهد. این رشته میتواند اطلاعات شی یا هرچیز دیگری باشد. برای مثال بصورت پیشفرض متد toString رشته @هش کد را بازگشت میدهد.
⭕️متد finalize متدی است که بصورت خودکار توسط گاربیج کالکشن قبل از حذف و از بین بردن شی صدا زده میشود. برای مثال زمانی که یک شی از هیچ یک از منابع استفاده نکند و هیچ شیی به آن مراجعه نکند، بصورت خودکار توسط گاربیج کالکشن برای ازاد سازی و مدیریت حافظه، حذف خواهد شد.
Telegram
تیکه پاره های جاوا
💎 مقایسه اشیا (ابجکت ها) در جاوا
🔆 توی جاوا هر کلاس بصورت پیشفرض از کلاس Object ارث بری میکند. کلاس Object شامل متد هایی مثل hashCode, equals, toString و... میشود که کاربرد گسترده ای در رابطه با کار با ابجکت ها دارند. به همین منظور برای مقایسه ابجکت ها از…
🔆 توی جاوا هر کلاس بصورت پیشفرض از کلاس Object ارث بری میکند. کلاس Object شامل متد هایی مثل hashCode, equals, toString و... میشود که کاربرد گسترده ای در رابطه با کار با ابجکت ها دارند. به همین منظور برای مقایسه ابجکت ها از…
👍5
تیکه پاره های جاوا
Photo
💎 کلاس Wrapper ها و مفهوم Unboxing و Auto-Boxing
🔆در جاوا کلاس wrapper (به فارسی کلاس پوشاننده یا کلاس بسته بندی کننده) به کلاس هایی گفته میشود که هشت داده ی نوع پیشین را به شی تبدیل میکند. لیست کلاس wrapper ها در تصویر بالا قابل مشاهده است.
🔰برای مثال برای تبدیل داده int به Integer از متد زیر استفاده میشود:
int x = 475;
Integer number = Integer.valueOf(x);
🛑 به این شیوه از تبدیل autoBoxing گفته میشود.
در این مورد برای تبدیلدوباره شی ایجاد شده به داده نوع پیشین از متد IntValue استفاده میشود:
int y =number.intValue();
🛑 به این شیوه از تبدیل شی به داده نوع پیشین، unboxing گفته میشود
💡البته در نسخه های اخیر جاوا نیازی به استفاده از این متد ها برای تبدیل نیست. این تغییر مقدار بصورت خودکار توسط کمپایلر انجام میشود:
Integer number = 475; //auto-boxing
int y = number; //unboxing
⁉️ چرا از کلاس wrapper ها استفاده کنیم؟
⭕️ بعضی از ساختار ها بجای داده های نوع پیشین با اشیا سروکار دارند. برای مثال کالکشن ها مانند اری لیست، لینک لیست و ... در نتیجه برای استفاده لازم است که داده های نوع پیشین را بوسیله ی کلاس wrapper ها به شی تبدیل کنید:
ArrayList<Integer> list = new ArrayList<>();
⭕️ از انجا که این داده ها به شی تبدیل میشوند، میتوان مقدار ذخیره ی آن را برابر null قرار داد.
Integer number = null;
⭕️یکی از متد های پرکاربرد در این کلاس ها متد ...parse میباشد. متد parse... برای تبدیل رشته به داده دیگر کاربرد دارد.
برای مثال:
int x = Integer.parseInt("475");//Converts String to integer
double y = Double.parseDouble("12.3");
💡 البته از لحاظ کارآمدی داده های نوع پیشین بیشتر کارآمد خواهند بود. پیشنهاد میشود که فقط در صورت لزوم از کلاس Wrapper ها به جای داده های نوع پیشین استفاده کنید.
#Wrapper #Integer #parseInt #parse #unboxing #AutoBoxing
@pieceJava
🔆در جاوا کلاس wrapper (به فارسی کلاس پوشاننده یا کلاس بسته بندی کننده) به کلاس هایی گفته میشود که هشت داده ی نوع پیشین را به شی تبدیل میکند. لیست کلاس wrapper ها در تصویر بالا قابل مشاهده است.
🔰برای مثال برای تبدیل داده int به Integer از متد زیر استفاده میشود:
int x = 475;
Integer number = Integer.valueOf(x);
🛑 به این شیوه از تبدیل autoBoxing گفته میشود.
در این مورد برای تبدیلدوباره شی ایجاد شده به داده نوع پیشین از متد IntValue استفاده میشود:
int y =number.intValue();
🛑 به این شیوه از تبدیل شی به داده نوع پیشین، unboxing گفته میشود
💡البته در نسخه های اخیر جاوا نیازی به استفاده از این متد ها برای تبدیل نیست. این تغییر مقدار بصورت خودکار توسط کمپایلر انجام میشود:
Integer number = 475; //auto-boxing
int y = number; //unboxing
⁉️ چرا از کلاس wrapper ها استفاده کنیم؟
⭕️ بعضی از ساختار ها بجای داده های نوع پیشین با اشیا سروکار دارند. برای مثال کالکشن ها مانند اری لیست، لینک لیست و ... در نتیجه برای استفاده لازم است که داده های نوع پیشین را بوسیله ی کلاس wrapper ها به شی تبدیل کنید:
ArrayList<Integer> list = new ArrayList<>();
⭕️ از انجا که این داده ها به شی تبدیل میشوند، میتوان مقدار ذخیره ی آن را برابر null قرار داد.
Integer number = null;
⭕️یکی از متد های پرکاربرد در این کلاس ها متد ...parse میباشد. متد parse... برای تبدیل رشته به داده دیگر کاربرد دارد.
برای مثال:
int x = Integer.parseInt("475");//Converts String to integer
double y = Double.parseDouble("12.3");
💡 البته از لحاظ کارآمدی داده های نوع پیشین بیشتر کارآمد خواهند بود. پیشنهاد میشود که فقط در صورت لزوم از کلاس Wrapper ها به جای داده های نوع پیشین استفاده کنید.
#Wrapper #Integer #parseInt #parse #unboxing #AutoBoxing
@pieceJava
👍6
💎 کلیدواژه static
🔆 یکی از 57 کلیدواژه رزرو شده در جاوا، کلیدواژه استاتیک static میباشد.
💡 از کلیدواژه های رزرو شده برای اسامی متغیر ها و... نمیتوان استفاده کرد.
در اصل کلیدواژه استاتیک برای مدیریت حافظه به کار میرود. در جاوا متغیر ها ، متد ها، بلاک ها ( {} ) و کلاس های تو در تو میتوانند بعنوان استاتیک در نظر گرفته شوند. هرگاه یک متغیر یا یک متد استاتیک در نظر گرفته شود، در واقع فقط یک نمونه از آن میان نمونه (ابجکت) های آن کلاس مشترک میباشد.
🔅 بلاک استاتیک (static block)
معمولا از این نوع بلاک برای مقدار دهی اولیه داده های استاتیک استفاده میشود. در واقع هر زمانی که کلاس داخل حافظه بارگذاری شد، خطوط داخل بلاک هم اجرا میشوند نکته حائز اهمیت آن است که بلاک های استاتیک پیش از سازنده ها (کنستراکتور) اجرا میشوند:
(برای خوانایی بهتر کد ها، گوشی خود را در حالت افقی قرار دهید و یا در ادامه از تصاویر زیر پست استفاده کنید)
زمانی که یک متغیر استاتیک ایجاد میکنید، فقط یک کپی از آن ایجاد و میان باقی نمونه(ابجکت، شی، اشیا) های کلاس به اشتراک گذاشته میشود. با توجه به این تعریف، به این نوع متغیر ها متغیر های سراسری (global variables) نیز گفته میشود. زیرا میان نمونه ها مشترک هستند. متغیر های استاتیک فقط در سطح کلاس میتوانند تعریف شوند.
🔰 برای مثال:
🔅 متد استاتیک
این متد ها چند ویژگی خاص دارند:
⭕️ متد های استاتیک وابسته به نمونه های ایجاد شده از کلاس نیستند. در واقع متعلق به خود کلاس هستند. این یعنی بدون ایجاد نمونه از کلاس میتوانید از آنها استفاده کنید.
⭕️ متد های استاتیک فقط میتوانند به داده های استاتیک و دیگر متد های استاتیک دسترسی داشته باشند.
👈 بهمین خاطر معمولا متد هایی که پیش از متد main برای استفاده در این متد تعریف میکنید حتما باید استاتیک تعریف شوند. زیرا در غیر این صورت باید یک نمونه از خود کلاس در متد main تعریف کنید.
مثال:
#static #keywords
از اینجا بخوانید:
👈 کلیدواژه final
👈 تفاوت Constructor و Static Factory Method
@pieceJava
🔆 یکی از 57 کلیدواژه رزرو شده در جاوا، کلیدواژه استاتیک static میباشد.
💡 از کلیدواژه های رزرو شده برای اسامی متغیر ها و... نمیتوان استفاده کرد.
در اصل کلیدواژه استاتیک برای مدیریت حافظه به کار میرود. در جاوا متغیر ها ، متد ها، بلاک ها ( {} ) و کلاس های تو در تو میتوانند بعنوان استاتیک در نظر گرفته شوند. هرگاه یک متغیر یا یک متد استاتیک در نظر گرفته شود، در واقع فقط یک نمونه از آن میان نمونه (ابجکت) های آن کلاس مشترک میباشد.
🔅 بلاک استاتیک (static block)
معمولا از این نوع بلاک برای مقدار دهی اولیه داده های استاتیک استفاده میشود. در واقع هر زمانی که کلاس داخل حافظه بارگذاری شد، خطوط داخل بلاک هم اجرا میشوند نکته حائز اهمیت آن است که بلاک های استاتیک پیش از سازنده ها (کنستراکتور) اجرا میشوند:
(برای خوانایی بهتر کد ها، گوشی خود را در حالت افقی قرار دهید و یا در ادامه از تصاویر زیر پست استفاده کنید)
public class PieceJava {
//Telegram: @PieceJava
public static void main(String[] args) {
new staticSample();
// OUTPUT: Inside static block
// Inside constructor
}
}
class staticSample{
static int x;
static {
System.out.println("Inside static block");
x=x*6;
}
public staticSample(){
System.out.println("Inside constructor");
}
}
🔅 متغیر استاتیکزمانی که یک متغیر استاتیک ایجاد میکنید، فقط یک کپی از آن ایجاد و میان باقی نمونه(ابجکت، شی، اشیا) های کلاس به اشتراک گذاشته میشود. با توجه به این تعریف، به این نوع متغیر ها متغیر های سراسری (global variables) نیز گفته میشود. زیرا میان نمونه ها مشترک هستند. متغیر های استاتیک فقط در سطح کلاس میتوانند تعریف شوند.
🔰 برای مثال:
public class PieceJava {
public static void main(String[] args) {
staticSample sample = new staticSample();
staticSample sample2 = new staticSample();
sample.setNumber(4);
System.out.println(sample2.getNumber()); // prints 4
}
}
class staticSample{
private static int number;
public void setNumber(int number){
this.number = number;
}
public int getNumber(){
return number;
}
}
در این مورد مقدار متغیر را در ابجکت sample مقدار دهی کردیم و در ادامه مقدار ذخیره شده را از ابجکت sample2 چاپ کردیم. این به این معناست که مقدار متغیر میان نمونه های ایجاد شده، ثابت میباشد.🔅 متد استاتیک
این متد ها چند ویژگی خاص دارند:
⭕️ متد های استاتیک وابسته به نمونه های ایجاد شده از کلاس نیستند. در واقع متعلق به خود کلاس هستند. این یعنی بدون ایجاد نمونه از کلاس میتوانید از آنها استفاده کنید.
⭕️ متد های استاتیک فقط میتوانند به داده های استاتیک و دیگر متد های استاتیک دسترسی داشته باشند.
👈 بهمین خاطر معمولا متد هایی که پیش از متد main برای استفاده در این متد تعریف میکنید حتما باید استاتیک تعریف شوند. زیرا در غیر این صورت باید یک نمونه از خود کلاس در متد main تعریف کنید.
مثال:
public class PieceJava {
//Telegram: @PieceJava
public static void main(String[] args) {
staticSample.print();
//OUTPUT: Inside static method
}
}
class staticSample{
public static void print(){
System.out.println("Inside static method");
}
}
——#static #keywords
از اینجا بخوانید:
👈 کلیدواژه final
👈 تفاوت Constructor و Static Factory Method
@pieceJava
Telegram
کانال تیکه پاره های جاوا
💎 کلیدواژه final
🔆کلیدواژه فاینال برای محدود کردن کاربرد یک متغیر، متود یا یک کلاس به کار میرود که البته در هر کدام از این موارد، کاربرد متفاوت است.
⭕️ اگر یک متغیر را فاینال تعریف کنیم، به این معناست که پس از مقدار دهی اولیه، مقدار متغیر دچار تغییرات…
🔆کلیدواژه فاینال برای محدود کردن کاربرد یک متغیر، متود یا یک کلاس به کار میرود که البته در هر کدام از این موارد، کاربرد متفاوت است.
⭕️ اگر یک متغیر را فاینال تعریف کنیم، به این معناست که پس از مقدار دهی اولیه، مقدار متغیر دچار تغییرات…
👍5❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#ساختمان_داده
نحوه پیمایش پیش ترتیب در ساختار درختی و پیاده سازی به زبان جاوا
Pre order traversal
#dsa
@piecejava
نحوه پیمایش پیش ترتیب در ساختار درختی و پیاده سازی به زبان جاوا
Pre order traversal
#dsa
@piecejava
👍8
💎 سطوح دسترسی در جاوا
🔆 سطوح دسترسی (access modifiers) برای تعیین کردن میزان دسترسی یک کلاس به فیلد ها یا متد های یک کلاس کاربرد دارد.
🔅 در جاوا چهار نوع سطح دسترسی داریم:
⭕️ سطح دسترسی default: این سطح دسترسی فقط به پکیج شامل کلاس محدود میشود و باقی کلاس ها از باقی پکیج ها نمیتوانند به فیلد ها و متد های با سطح دیفالت، دسترسی داشته باشند. در واقع سطح دیفالت برای حالتی گفته میشود که هیچ سطح دسترسی برای فیلد یا متد تعریف نکنید.
⭕️ سطح دسترسی protected: اعضای کلاس با این سطح دسترسی فقط از طریق پکیج شامل کلاس قابل دسترسی هستند و در باقی پکیج ها فقط از طریق زیرکلاس هایش قابل دسترسی هستند. در غیر این صورت قابل دسترسی نیستند.
⭕️ سطح دسترسی private: این سطح دسترسی فقط به خود کلاس محدود میشود. یعنی اعضای کلاس با این سطح دسترسی فقط از داخل خود کلاس قابل دسترسی هستند.
⭕️ سطح دسترسی public: این سطح دسترسی به این معناست که اعضای کلاس از هر جایی قابل دسترسی هستند.
❌ منظور از اعضا، متد(متد ها) یا فیلدی (فیلد ها) است که دارای سطح(سطوح) دسترسی پابلیک/پرایوت/دیفالت و یا پروتکتد میباشد (میباشند).
#access_modifiers #سطح_دسترسی #public #private #protected #default
———
☕️ @PieceJava
🔆 سطوح دسترسی (access modifiers) برای تعیین کردن میزان دسترسی یک کلاس به فیلد ها یا متد های یک کلاس کاربرد دارد.
🔅 در جاوا چهار نوع سطح دسترسی داریم:
⭕️ سطح دسترسی default: این سطح دسترسی فقط به پکیج شامل کلاس محدود میشود و باقی کلاس ها از باقی پکیج ها نمیتوانند به فیلد ها و متد های با سطح دیفالت، دسترسی داشته باشند. در واقع سطح دیفالت برای حالتی گفته میشود که هیچ سطح دسترسی برای فیلد یا متد تعریف نکنید.
⭕️ سطح دسترسی protected: اعضای کلاس با این سطح دسترسی فقط از طریق پکیج شامل کلاس قابل دسترسی هستند و در باقی پکیج ها فقط از طریق زیرکلاس هایش قابل دسترسی هستند. در غیر این صورت قابل دسترسی نیستند.
⭕️ سطح دسترسی private: این سطح دسترسی فقط به خود کلاس محدود میشود. یعنی اعضای کلاس با این سطح دسترسی فقط از داخل خود کلاس قابل دسترسی هستند.
⭕️ سطح دسترسی public: این سطح دسترسی به این معناست که اعضای کلاس از هر جایی قابل دسترسی هستند.
❌ منظور از اعضا، متد(متد ها) یا فیلدی (فیلد ها) است که دارای سطح(سطوح) دسترسی پابلیک/پرایوت/دیفالت و یا پروتکتد میباشد (میباشند).
#access_modifiers #سطح_دسترسی #public #private #protected #default
———
☕️ @PieceJava
👍10
💎 بررسی پارامتر String[] args در جاوا
🔆 آرایه args شامل ورودی های خط فرمان (command-line arguments) میشود. در واقع پیش از اجرای برنامه، از طریق پنجره کنسول میتوانید یکسری ورودی ها برای برنامه در نظر بگیرید. این ورودی ها در آرایه args ذخیره میشوند تا در حین اجرای برنامه مورد استفاده قرار گیرند. در واقع این به شما اجازه خواهد داد که بتوانید رفتار برنامه رو در ازای ورودی های متفاوت بررسی کنید.
❌ طول آرایه args از پیش قابل تعیین نیست
❌ هیچ الزامی بر استفاده از اسم args نیست. میتوانید این اسم رو به هرچیز دلخواه تغییر دهید:
1️⃣ برای کمپایل و اجرا پنجره cmd را باز میکنیم:
⭕️ پیش از اجرا میبایست آدرس فایل java را در پنجره cmd وارد کنید. برای مثال در اینجا ادرس desktop را وارد کرده ایم. زیرا فایل
———
☕️ @pieceJava
🔆 آرایه args شامل ورودی های خط فرمان (command-line arguments) میشود. در واقع پیش از اجرای برنامه، از طریق پنجره کنسول میتوانید یکسری ورودی ها برای برنامه در نظر بگیرید. این ورودی ها در آرایه args ذخیره میشوند تا در حین اجرای برنامه مورد استفاده قرار گیرند. در واقع این به شما اجازه خواهد داد که بتوانید رفتار برنامه رو در ازای ورودی های متفاوت بررسی کنید.
❌ طول آرایه args از پیش قابل تعیین نیست
❌ هیچ الزامی بر استفاده از اسم args نیست. میتوانید این اسم رو به هرچیز دلخواه تغییر دهید:
String[] a🔰 برای مثال:
String[] parameter
...
public class ITHooloo {
//Telegram: @pieceJava
public static void main(String[] args) {
for(int i = 0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
در این برنامه قرار است ورودی های آرایه args در خروجی چاپ شوند.1️⃣ برای کمپایل و اجرا پنجره cmd را باز میکنیم:
⭕️ پیش از اجرا میبایست آدرس فایل java را در پنجره cmd وارد کنید. برای مثال در اینجا ادرس desktop را وارد کرده ایم. زیرا فایل
ITHooloo.java در این زیرشاخه قرار گرفته است)C:\Users\Status 200>cd Desktop2️⃣ بعد از کمپایل، برنامه رو اجرا میکنیم. اما همانطور که گفتیم پیش از اجرا میتوانید بعد از اسم کلاس یکسری ورودی برای برنامه در نظر بگیرید:
C:\Users\ITHOOLOO\Desktop>javac ITHooloo.java
C:\Users\Status 200\Desktop>java ITHooloo one two threeبعد از اجرای برنامه خواهید دید که بواسطه ی حلقه، خروجی های زیر در پنجره cmd نمایش داده خواهد شد:
one#main #main_method #args
two
three
———
☕️ @pieceJava
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
#ساختمان_داده
نحوه پیمایش میان ترتیب در ساختار درختی و پیاده سازی به زبان جاوا
In order traversal
#dsa
☕️ @piecejava
نحوه پیمایش میان ترتیب در ساختار درختی و پیاده سازی به زبان جاوا
In order traversal
#dsa
☕️ @piecejava
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
#ساختمان_داده
نحوه پیمایش پس ترتیب در ساختار درختی و پیاده سازی به زبان جاوا
Post order traversal
#dsa
☕️ @piecejava
نحوه پیمایش پس ترتیب در ساختار درختی و پیاده سازی به زبان جاوا
Post order traversal
#dsa
☕️ @piecejava
👍5
💎 قرارداد نام گذاری در جاوا (Naming Conventions)
🔆 یکسری قرارداد وجود دارد که میان برنامه نویسان جاوا پذیرفته شده است. مثلا برای نامگذاری کلاس ها، متد ها، متغیر ها و... قرارداد هایی وجود دارد که معمولا بهتر است پذیرفته شود. زیرا به خوانایی کد کمک میکند. البته هیچ الزامی برای پیروی نیست.
🔅 قرارداد نام گذاری پکیج ها (Packages):
- اسم پکیج ها باید با حروف کوچک نوشته شود (lowercase). برای مثال java, lang... اگر اسم شامل چند کلمه میباشد، میبایست کلمات را با دات (.) جدا کرد. برای مثال
- اسم کلاس باید با حرف بزرگ شروع شود
- اسم کلاس باید یک متشکل از اسم (noun) باشد و در حالت ترکیبی با کلمات دیگر حرف اول هر کلمه بصورت کاپیتال باشد. اسم کلاس باید ساده و ویژگی های کلاس را بخوبی توصیف کند. برای مثال:
- اسم اینترفیس ها مانند اسامی کلاس ها باید با حرف بزرگ شروع شود.
- اسامی متد ها باید با حرف کوچک شروع شود. در صورت ترکیب چند کلمه ای، کلمات بعدی باید با حرف بزرگ شروع شوند.
- اسامی متد ها باید از افعال باشد:
- اسامی متغیر ها باید با حرف کوچک نوشته شود (lowercase)
- اسامی متغیر ها نباید با _ یا $ شروع شود هر چند هر دو مورد در اول اسم متغیر خطایی بدنبال نخواهد داشت.
- اسم متغیر ها باید کوتاه و با معنا باشد
- اگر اسم متغیر ترکیبی از دو یا چند کلمه است، کلمات بعدی باید با حرف بزرگ شروع شوند. برای مثال:
- متغیر های ثابت باید با حرف بزرگ نوشته شوند.
- در صورتی که اسامی ثابت ها از چند حرف تشکیل میشود، از "_" برای جدا کردن اسامی باید استفاده شود:
———
☕️ @piecejava
🔆 یکسری قرارداد وجود دارد که میان برنامه نویسان جاوا پذیرفته شده است. مثلا برای نامگذاری کلاس ها، متد ها، متغیر ها و... قرارداد هایی وجود دارد که معمولا بهتر است پذیرفته شود. زیرا به خوانایی کد کمک میکند. البته هیچ الزامی برای پیروی نیست.
🔅 قرارداد نام گذاری پکیج ها (Packages):
- اسم پکیج ها باید با حروف کوچک نوشته شود (lowercase). برای مثال java, lang... اگر اسم شامل چند کلمه میباشد، میبایست کلمات را با دات (.) جدا کرد. برای مثال
java.util
java.lang
💡 اسامی خاص و منحصر بفرد برای مثال دامنه اینترنتی یک سایت یا یک شرکت بعنوان پکیج معمولا به صورت زیر نوشته میشود:com.ithooloo🔅 قرارداد نام گذاری کلاس ها (Class):
com.company
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
- اسم کلاس باید با حرف بزرگ شروع شود
- اسم کلاس باید یک متشکل از اسم (noun) باشد و در حالت ترکیبی با کلمات دیگر حرف اول هر کلمه بصورت کاپیتال باشد. اسم کلاس باید ساده و ویژگی های کلاس را بخوبی توصیف کند. برای مثال:
class Raster
class ImageSprite
class Employee🔅 قرارداد نام گذاری اینترفیس ها (Interfaces):
class String
class StringBuffer
- اسم اینترفیس ها مانند اسامی کلاس ها باید با حرف بزرگ شروع شود.
interface RasterDelegate
interface Storing
💡 البته پیشنهاد میشود اسامی اینترفیس ها (و نه لزوما) به گونه ای تعریف شود که انگار توصیف کننده یک عمل برای کلاس است. برای مثال:interface Runnable🔅 قرارداد نام گذاری متد ها (Methods):
interface Comparable
interface Enumerable
- اسامی متد ها باید با حرف کوچک شروع شود. در صورت ترکیب چند کلمه ای، کلمات بعدی باید با حرف بزرگ شروع شوند.
- اسامی متد ها باید از افعال باشد:
run();🔅 قرارداد نام گذاری متغیر ها (Variables):
runFast();
getBackground();
- اسامی متغیر ها باید با حرف کوچک نوشته شود (lowercase)
- اسامی متغیر ها نباید با _ یا $ شروع شود هر چند هر دو مورد در اول اسم متغیر خطایی بدنبال نخواهد داشت.
- اسم متغیر ها باید کوتاه و با معنا باشد
- اگر اسم متغیر ترکیبی از دو یا چند کلمه است، کلمات بعدی باید با حرف بزرگ شروع شوند. برای مثال:
myName
myAge
💡 اسامی داده های منطقی معمولا با پیشوند is شروع میشود(بصورت سوال کوتاه که فقط دارای پاسخ ترو یا فالس باشد):isAvailabeدر بعضی موارد نیز مخصوصا برای متد های با خروجی boolean میتوان از پیشوند has نیز استفاده کرد. برای مثال:
isFound
hasNextLine()🔅 قرارداد نام گذاری ثابت ها (constants):
hasLisence()
- متغیر های ثابت باید با حرف بزرگ نوشته شوند.
- در صورتی که اسامی ثابت ها از چند حرف تشکیل میشود، از "_" برای جدا کردن اسامی باید استفاده شود:
final int MAX_VALUE = 999;
final int MIN_VALUE = 4;
#naming #name #naming_conventions #convetions #قرارداد ———
☕️ @piecejava
👍9❤1
تیکه پاره های جاوا pinned «💎 کلیدواژه static 🔆 یکی از 57 کلیدواژه رزرو شده در جاوا، کلیدواژه استاتیک static میباشد. 💡 از کلیدواژه های رزرو شده برای اسامی متغیر ها و... نمیتوان استفاده کرد. در اصل کلیدواژه استاتیک برای مدیریت حافظه به کار میرود. در جاوا متغیر ها ، متد ها، بلاک ها…»
💎 کلاس StringBuffer در جاوا
🔆 یک کلاس مشابه String در رابطه با رشته ها کلاس StringBuffer میباشد. کلاس رشته همانطور که پیش تر بررسی کردیم، غیرقابل تغییر(Immutable)، دارای اندازه ثابت و... میباشد در حالی که StringBuffer قابل تغییر میباشد و از لحاظ افزودن دنباله ای کاراکتر ها نیز منعطف عمل میکند.
🔗 درباره کلاس های Immutable و Mutable از اینجا بخوانید.
🔗 درباره Immutable بودن رشته ها از اینجا بخوانید.
✏️ برخی از متد های پرکاربرد کلاس StringBuffer
1️⃣ append()
برای افزودن یک متن به آخر یک رشته استفاده میشود.
2️⃣ length()
طول رشته ی ایجاد شده از طریق کلاس StringBuffer را برمیگرداند
3️⃣ charAt()
کاراکتر موجود در ایندکس موردنظر را برمیگرداند.
4️⃣ delete()
دنباله ای از کاراکتر ها را از شی ایجاد شده (از این کلاس) حذف میکند.
5️⃣ deleteCharAt()
کاراکتر موجود در ایندکس موردنظر را حذف میکند.
6️⃣ insert()
متنی را در یک موقعیت مشخص شده (ایندکس) وارد میکند
7️⃣ reverse()
رشته مورد نظر در وارون میکند.
8️⃣capacity()
یک ظرفیت برای StringBuffer در نظر میگیرد
9️⃣trimToSize()
میزان حافظه مصرفی برای دنباله ای از رشته ها را به اندازه سایز رشته کاهش میدهد
———
🔰در ادامه یک مثال از این کلاس در رابطه با بررسی متد های این کلاس بررسی خواهیم کرد.
⭕️ (خروجی هر متد بصورت کامنت امده است)
⭕️ (برای خوانایی بیشتر، کد رو بصورت تصویر توی کانال قرار میدم)
———
☕️@pieceJava
🔆 یک کلاس مشابه String در رابطه با رشته ها کلاس StringBuffer میباشد. کلاس رشته همانطور که پیش تر بررسی کردیم، غیرقابل تغییر(Immutable)، دارای اندازه ثابت و... میباشد در حالی که StringBuffer قابل تغییر میباشد و از لحاظ افزودن دنباله ای کاراکتر ها نیز منعطف عمل میکند.
🔗 درباره کلاس های Immutable و Mutable از اینجا بخوانید.
🔗 درباره Immutable بودن رشته ها از اینجا بخوانید.
✏️ برخی از متد های پرکاربرد کلاس StringBuffer
1️⃣ append()
برای افزودن یک متن به آخر یک رشته استفاده میشود.
2️⃣ length()
طول رشته ی ایجاد شده از طریق کلاس StringBuffer را برمیگرداند
3️⃣ charAt()
کاراکتر موجود در ایندکس موردنظر را برمیگرداند.
4️⃣ delete()
دنباله ای از کاراکتر ها را از شی ایجاد شده (از این کلاس) حذف میکند.
5️⃣ deleteCharAt()
کاراکتر موجود در ایندکس موردنظر را حذف میکند.
6️⃣ insert()
متنی را در یک موقعیت مشخص شده (ایندکس) وارد میکند
7️⃣ reverse()
رشته مورد نظر در وارون میکند.
8️⃣capacity()
یک ظرفیت برای StringBuffer در نظر میگیرد
9️⃣trimToSize()
میزان حافظه مصرفی برای دنباله ای از رشته ها را به اندازه سایز رشته کاهش میدهد
———
🔰در ادامه یک مثال از این کلاس در رابطه با بررسی متد های این کلاس بررسی خواهیم کرد.
⭕️ (خروجی هر متد بصورت کامنت امده است)
⭕️ (برای خوانایی بیشتر، کد رو بصورت تصویر توی کانال قرار میدم)
public class Main {
public static void main(String[] args) {
//Telegram: @pieceJava
StringBuffer sb = new StringBuffer("ITHOOLOO");
//prints length of String
System.out.println(sb.length());// prints 8
//appends .comi to String
sb.append(".comi");
System.out.println(sb); // prints ITHOOLOO.comi
//removes a character at index sb.length()-1
sb.deleteCharAt(sb.length() - 1); // removes i from IT...com(i)
System.out.println(sb);// prints ITHOOLOO.com
//removes sequence of characters from index 8 to sb.length()
sb.delete(8, sb.length());//removes ".com"
System.out.println(sb);// prints ITHOOLOO
//reverses String
sb.reverse();
System.out.println(sb);// prints OOLOOHTI
//inserts a String at index 0
sb.insert(0, "HELLO FROM ");
System.out.println(sb);//prints hello from OOLOOHTI
}
}
#StringBuffer #Buffer #Mutable #reverse ———
☕️@pieceJava
Telegram
تیکه پاره های جاوا
💎معنی Mutable و Immutable بودن کلاس ها (قابل تغییر و غیر قابل تغییر بودن)
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
👍2❤1
تیکه پاره های جاوا
💎 کلاس 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