مفاهیم بنیادین کاراکتر ها و رشته ها
کاراکتر ها بلوک های اصلی در ساخت برنامه ها در جاوا هستند. هر برنامه ترکیبی متوالی از کاراکتر ها است و هنگامی که با یکدیگر به کار گرفته شوند توسط کامپیوتر به دنباله ای از دستورات تبدیل شده و یک وظیفه خاص را انجام میدهند.
یک برنامه میتواند حاوی کاراکتر های لیترال هم باشد. کاراکتر لیترال یک مقدار صحیح است که بصورت یک کاراکتر در میان نقل قول ارایه میشود . مقدار یک کاراکتر لیترال, مقدار صحیح کاراکتر در مجموعه کاراکتری unicode است. برای کسب اطلاعات کامل در ارتباط با unicode از سایت www.unicode.com بازدید کنید
رشته . دنباله ای از کاراکتر های در کنار هم قرار گرفته است که مانند یک واحد عمل میکنند.. یک رشته ممکن است شامل حروف ارقام و انواع کاراکتر های خاص مانند +, -,*,/,$ و غیره باشد. رشته یک شی از کلاس String بوده و به صورت کاراکتر های متوالی است که در یک جفت علامت نقل قول قرار گرفته اند , نوشته میشود:
"@this_java"
اعلانی به فرم زیر میتواند رشته ای را به مراجعه String تخصیص دهد :
String color = "blue";
در این عبارت رشته blue به مراجعه از نوع رشته بنام color تخصیص میابد
کاراکتر ها بلوک های اصلی در ساخت برنامه ها در جاوا هستند. هر برنامه ترکیبی متوالی از کاراکتر ها است و هنگامی که با یکدیگر به کار گرفته شوند توسط کامپیوتر به دنباله ای از دستورات تبدیل شده و یک وظیفه خاص را انجام میدهند.
یک برنامه میتواند حاوی کاراکتر های لیترال هم باشد. کاراکتر لیترال یک مقدار صحیح است که بصورت یک کاراکتر در میان نقل قول ارایه میشود . مقدار یک کاراکتر لیترال, مقدار صحیح کاراکتر در مجموعه کاراکتری unicode است. برای کسب اطلاعات کامل در ارتباط با unicode از سایت www.unicode.com بازدید کنید
رشته . دنباله ای از کاراکتر های در کنار هم قرار گرفته است که مانند یک واحد عمل میکنند.. یک رشته ممکن است شامل حروف ارقام و انواع کاراکتر های خاص مانند +, -,*,/,$ و غیره باشد. رشته یک شی از کلاس String بوده و به صورت کاراکتر های متوالی است که در یک جفت علامت نقل قول قرار گرفته اند , نوشته میشود:
"@this_java"
اعلانی به فرم زیر میتواند رشته ای را به مراجعه String تخصیص دهد :
String color = "blue";
در این عبارت رشته blue به مراجعه از نوع رشته بنام color تخصیص میابد
توابع بازگشتی (تابع Recursion)
الگوریتم بازگشتی زمانی اتفاق می افتد که یک متد خود را به کرات صدا بزند. به متدی که خود را فراخوانی می کند، در اصطلاح تابع recursive یا بازگشتی گویند.
این الگوریتم اگرچه سبب کوتاه تر (فشرده تر) شدن کد می شود، با این وجود به پیچیدگی آن نیز افزوده و خوانایی و فهم آن را دشوارتر می نماید.
نکته : در پیاده سازی توابع باز گشتی باید حواسمان باشد که فراخوانی تابع یکجایی با استفاده از if به پایان برسد تا حلقه ی بی نهایت ایجاد نشود
مثال محاسبه ی فاکتوریل با تابع بازگشتی :
public long fact(int n) {
if (n != 0) {
return n * fact (n-1);
}
return 1;
}
@this_java
الگوریتم بازگشتی زمانی اتفاق می افتد که یک متد خود را به کرات صدا بزند. به متدی که خود را فراخوانی می کند، در اصطلاح تابع recursive یا بازگشتی گویند.
این الگوریتم اگرچه سبب کوتاه تر (فشرده تر) شدن کد می شود، با این وجود به پیچیدگی آن نیز افزوده و خوانایی و فهم آن را دشوارتر می نماید.
نکته : در پیاده سازی توابع باز گشتی باید حواسمان باشد که فراخوانی تابع یکجایی با استفاده از if به پایان برسد تا حلقه ی بی نهایت ایجاد نشود
مثال محاسبه ی فاکتوریل با تابع بازگشتی :
public long fact(int n) {
if (n != 0) {
return n * fact (n-1);
}
return 1;
}
@this_java
در جاوا Garbage Collection چه کاری انجام میدهد؟
یکی از ویژگی هایی که در زبان های سطح بالا بالاخص Java و C# باعث شده است که کار با این زبان ها ساده تر شود و نگرانی های برنامه نویسان بیشتر روی مسایل سطح بالاتر متمرکز شود اتوماتیک شده مدیریت حافظه توسط هسته خود زبان می باشد که به آن مکانیزم Garbage Collection گفته می شود.
بخاظر وجود همین ویژگی هست که ما در داخل جاوا مشکل dandling reference و space leaks نداریم چون memory management توسط jvm انجام میشه و garbage collection از روی root gc میاد و object های غیر قابل استفاده و بدون reference رو از روی حافظه collect میکنه.
مشکل dandling reference به این معناست که شما مثلا توی یه زبان سطح پایین می یاین و بخشی از حافظه را deallocate می کنین بی خبر از اینکه refrence ی به آن بخش حافظه توسط object دیگر وجود دارد که این مسیله مشکلات و پیامدهای بسیار بدی را در بر دارد.
@this_java
یکی از ویژگی هایی که در زبان های سطح بالا بالاخص Java و C# باعث شده است که کار با این زبان ها ساده تر شود و نگرانی های برنامه نویسان بیشتر روی مسایل سطح بالاتر متمرکز شود اتوماتیک شده مدیریت حافظه توسط هسته خود زبان می باشد که به آن مکانیزم Garbage Collection گفته می شود.
بخاظر وجود همین ویژگی هست که ما در داخل جاوا مشکل dandling reference و space leaks نداریم چون memory management توسط jvm انجام میشه و garbage collection از روی root gc میاد و object های غیر قابل استفاده و بدون reference رو از روی حافظه collect میکنه.
مشکل dandling reference به این معناست که شما مثلا توی یه زبان سطح پایین می یاین و بخشی از حافظه را deallocate می کنین بی خبر از اینکه refrence ی به آن بخش حافظه توسط object دیگر وجود دارد که این مسیله مشکلات و پیامدهای بسیار بدی را در بر دارد.
@this_java
استریم ها
معمولا ورودی و خروجی توسط استریم ها انجام میشوند, که توالی از بایت ها هستند. در عملیات ورودی , بایت ها از یک دستگاه(مثل صفحه کلید) به سمت حافظه اصلی جریان دارند. در عملیات خروجی , بایت ها از حافظه اصلی به سمت یک دستگاه (همانند صفحه نمایش) حریان دارند.
زمانیکه برنامه شروع به اجرا میکند سه استریم بصورت اتوماتیک به برنامه متصل میشوند.
معمولا استریم ورودی استاندارد به صفحه کلید و استریم خروجی استاندارد به صفحه نمایش متصل میشوند. استریم سوم..استریم خطای استاندارد (System.err) عموما به صفحه نمایش متصل شده و برای چاپ پیغام های خطا در دستگاه بکار گرفته میشود
@this_java
معمولا ورودی و خروجی توسط استریم ها انجام میشوند, که توالی از بایت ها هستند. در عملیات ورودی , بایت ها از یک دستگاه(مثل صفحه کلید) به سمت حافظه اصلی جریان دارند. در عملیات خروجی , بایت ها از حافظه اصلی به سمت یک دستگاه (همانند صفحه نمایش) حریان دارند.
زمانیکه برنامه شروع به اجرا میکند سه استریم بصورت اتوماتیک به برنامه متصل میشوند.
معمولا استریم ورودی استاندارد به صفحه کلید و استریم خروجی استاندارد به صفحه نمایش متصل میشوند. استریم سوم..استریم خطای استاندارد (System.err) عموما به صفحه نمایش متصل شده و برای چاپ پیغام های خطا در دستگاه بکار گرفته میشود
@this_java
PostFix.zip
3.2 KB
تبدیل عبارت پستفیکس به اینفیکس و برعکس
حل عبارت پستفیکس و اینفیکس
(به همراه پیاده سازی کلاس Stack جاوا)
@this_java
حل عبارت پستفیکس و اینفیکس
(به همراه پیاده سازی کلاس Stack جاوا)
@this_java
کلاس StringBuilder
کلاس StringBuilder برای ایجاد دستکاری کردن دینامیکی اطلاعات رشته(رشته های قابل تغییر) استفاده میشود
هر کلاس StringBuilder میتواند تعداد مشخصی از کاراکتر هارا با توجه به ظرفیت خود ذخیره سازد. در صورت تجاوز از ظرفیت یک StringBuilder ظرفیت ان با توجه به کاراکتر های اضافی افزایش می یابد.
@this_java
کلاس StringBuilder برای ایجاد دستکاری کردن دینامیکی اطلاعات رشته(رشته های قابل تغییر) استفاده میشود
هر کلاس StringBuilder میتواند تعداد مشخصی از کاراکتر هارا با توجه به ظرفیت خود ذخیره سازد. در صورت تجاوز از ظرفیت یک StringBuilder ظرفیت ان با توجه به کاراکتر های اضافی افزایش می یابد.
@this_java
تفاوت میان دو متد toString و valueOf
هر شی در جاوا دارای یک متد toString است که به برنامه امکان می دهد تا رشته معرفی کننده ان شی را بدست اورد. متاسفانه این تکنینک نمیتواند همراه با نوع های بنیادین (flot,int.long,double,char,byte,short,)به کار گرفته شود چرا که انها متدی ندارند...
البته میتوان از کلاس های type-wrapper استفاده نمود اما تنها زمانی از این کلاس ها استفاده میشود که نیاز به دستکاری مقادیر با نوع های اصلی به صورت شی را داشته باشید.
کلاس String متد استاتیکی در نظر گرفته است که یک ارگومان از هر نوع دریافت کرده و آنرا به یک شی رشته تبدیل میکند.
یاداوری کلاس های type-wrapper:
type-wrapper (https://t.me/this_java/581)
@this_java
هر شی در جاوا دارای یک متد toString است که به برنامه امکان می دهد تا رشته معرفی کننده ان شی را بدست اورد. متاسفانه این تکنینک نمیتواند همراه با نوع های بنیادین (flot,int.long,double,char,byte,short,)به کار گرفته شود چرا که انها متدی ندارند...
البته میتوان از کلاس های type-wrapper استفاده نمود اما تنها زمانی از این کلاس ها استفاده میشود که نیاز به دستکاری مقادیر با نوع های اصلی به صورت شی را داشته باشید.
کلاس String متد استاتیکی در نظر گرفته است که یک ارگومان از هر نوع دریافت کرده و آنرا به یک شی رشته تبدیل میکند.
یاداوری کلاس های type-wrapper:
type-wrapper (https://t.me/this_java/581)
@this_java
Telegram
Learn Java
کلاس های type-wrapper
هرنوع اصلی یا بنیادین دارای یک کلاس type-wrapper متناظر است (در پکیج java.lang) این کلاس ها عبارتند از Long , Integer, Float, Double,Character,Byte,Boolean,Short هر کلاس پوشاننده به شما امکان میدهد تا مقادیر با نوع های اصلی را بصورت…
هرنوع اصلی یا بنیادین دارای یک کلاس type-wrapper متناظر است (در پکیج java.lang) این کلاس ها عبارتند از Long , Integer, Float, Double,Character,Byte,Boolean,Short هر کلاس پوشاننده به شما امکان میدهد تا مقادیر با نوع های اصلی را بصورت…
خطای کامپایل incompatiable types (نوع های ناسازگار) در چه صورت رخ میدهد؟
این خطا بر این نکته دلالت دارد که مبادرت به تخصیص مراجعه شی سوپر کلاس به متغیر زیر کلاس انجام شده است که اجازه اینکار وجود ندارد و کامپایلر از این تخصیص ممانعت میکند چرا که رابطه ی is-a تنها میان زیر کلاس و سوپر کلاس برقرار است نه میان سوپر کلاس و زیر کلاس!
@this_java
این خطا بر این نکته دلالت دارد که مبادرت به تخصیص مراجعه شی سوپر کلاس به متغیر زیر کلاس انجام شده است که اجازه اینکار وجود ندارد و کامپایلر از این تخصیص ممانعت میکند چرا که رابطه ی is-a تنها میان زیر کلاس و سوپر کلاس برقرار است نه میان سوپر کلاس و زیر کلاس!
@this_java
اجتناب از خطای کامپایل تبدیل نوع
درقسمت قبل گفتیم در صورتی که یک سوپر کلاس را به طور مستقیم به یک زیر کلاس تخصیص دهید خطای کامپایل نوع های ناسازگار رخ میدهد... اما چاره چیست؟
میتوان از روش تبدیل نوع (downcasting) استفاده کرد :
Circle c = (Circle) new Shape()
(در مثال بالا فرض بر این است که Circle از کلاس Shape ارث بری داشته است)
@this_java
درقسمت قبل گفتیم در صورتی که یک سوپر کلاس را به طور مستقیم به یک زیر کلاس تخصیص دهید خطای کامپایل نوع های ناسازگار رخ میدهد... اما چاره چیست؟
میتوان از روش تبدیل نوع (downcasting) استفاده کرد :
Circle c = (Circle) new Shape()
(در مثال بالا فرض بر این است که Circle از کلاس Shape ارث بری داشته است)
@this_java
واسط های تابعی
در جاوا SE 8 هر واسطی که فقط حاوی یک متد abstract باشد بعنوان یک واسط تابعی شناخته میشود.
مثال : اینترفیس Runnable
واسط های تابعی کاربرد گسترده ای در قابلیت های جدید lambda در جاوا SE 8 دارند
@this_java
در جاوا SE 8 هر واسطی که فقط حاوی یک متد abstract باشد بعنوان یک واسط تابعی شناخته میشود.
مثال : اینترفیس Runnable
واسط های تابعی کاربرد گسترده ای در قابلیت های جدید lambda در جاوا SE 8 دارند
@this_java
فایل ها و استریم ها
نگاه جاوا به هر فایل بفرم یک استریم (stream) متوالی از بایت ها است. انتهای هر فایل با یک نماد پایان فایل (eof) یا به تعداد بایت های مشخص شده که در سیستم مدیریت نگهداری ساختار به ثبت رسیده , تعیین میشود. یک برنامه پردازش استریمی از بایت ها در جاوا , به هنگام رسیدن برنامه به انتهای استریم , یک مشخصه از سیستم عامل دریافت میکند-برنامه نیازی ندارد که از نحوه عرضه فایل یا استریم در لایه های زیرین پلتفرم چچیزی بداند. در برخی از موارد , مشخصه انتهای فایل بصورت یک استثنا رخ میدهد. در سایر موارد , مشخصه انتهای فایل , بصورت یک مقدار برگشتی از سوی یک متد معلوم میگردد
@this_java
نگاه جاوا به هر فایل بفرم یک استریم (stream) متوالی از بایت ها است. انتهای هر فایل با یک نماد پایان فایل (eof) یا به تعداد بایت های مشخص شده که در سیستم مدیریت نگهداری ساختار به ثبت رسیده , تعیین میشود. یک برنامه پردازش استریمی از بایت ها در جاوا , به هنگام رسیدن برنامه به انتهای استریم , یک مشخصه از سیستم عامل دریافت میکند-برنامه نیازی ندارد که از نحوه عرضه فایل یا استریم در لایه های زیرین پلتفرم چچیزی بداند. در برخی از موارد , مشخصه انتهای فایل بصورت یک استثنا رخ میدهد. در سایر موارد , مشخصه انتهای فایل , بصورت یک مقدار برگشتی از سوی یک متد معلوم میگردد
@this_java
برنامه ی کامپیوتری چیست ؟(Computer Program):
دستور العمل هایی که بیانگر راه حل قدم به قدم برای حل یک مسعله یا نشانگر ترتیب توالی انجام مراحل یک عمل یا رویداد می باشند , برنامه ی کامپیوتری نامیده میشود
هر برنامه کامپیوتری به حل یک مسعله خاص یا انجام یک عمل ویژه اختصاص دارد, مانند محاسبه و تعیین نمرات, تجزیه و تحلیل داده های بازاریابی و غیره.
در حقیقت وقتی یک نفر برنامه ای مینویسد مانند این است که مسعله ای را حل میکند یا طرز عمل کاری را ارایه میدهد. مسلما حل یک مسعله یا بیان طرز اجرای دقیق یک عمل, نیازمند قدرت منطق است تا راه حلی مناسب و دقیق جهت حل مسعله یا روش صحیح و دقیق انجام مراحل یک کار ارایه شود
@this_java
دستور العمل هایی که بیانگر راه حل قدم به قدم برای حل یک مسعله یا نشانگر ترتیب توالی انجام مراحل یک عمل یا رویداد می باشند , برنامه ی کامپیوتری نامیده میشود
هر برنامه کامپیوتری به حل یک مسعله خاص یا انجام یک عمل ویژه اختصاص دارد, مانند محاسبه و تعیین نمرات, تجزیه و تحلیل داده های بازاریابی و غیره.
در حقیقت وقتی یک نفر برنامه ای مینویسد مانند این است که مسعله ای را حل میکند یا طرز عمل کاری را ارایه میدهد. مسلما حل یک مسعله یا بیان طرز اجرای دقیق یک عمل, نیازمند قدرت منطق است تا راه حلی مناسب و دقیق جهت حل مسعله یا روش صحیح و دقیق انجام مراحل یک کار ارایه شود
@this_java
بدست اوردن ب م م دو عدد در جاوا :
import javax.swing.JOptionPane;
class BMM {
public static int bmm(int m, int n) {
int r = m % n;
if (r == 0) {
return n;
}
return bmm(n, r);
}
public static void main(String[] args) {
int m = Integer.valueOf(JOptionPane.showInputDialog(null, "عدد بزرگتر را وارد کنید"));
int n = Integer.valueOf(JOptionPane.showInputDialog(null, "عدد کوچکتر را وارد کنید"));
JOptionPane.showMessageDialog(null, bmm(m, n));
}
}
@this_java
import javax.swing.JOptionPane;
class BMM {
public static int bmm(int m, int n) {
int r = m % n;
if (r == 0) {
return n;
}
return bmm(n, r);
}
public static void main(String[] args) {
int m = Integer.valueOf(JOptionPane.showInputDialog(null, "عدد بزرگتر را وارد کنید"));
int n = Integer.valueOf(JOptionPane.showInputDialog(null, "عدد کوچکتر را وارد کنید"));
JOptionPane.showMessageDialog(null, bmm(m, n));
}
}
@this_java
مفهوم type casting در جاوا چیست؟
در توسعه نرمافزار برخی مواقع نیاز داریم تا دیتا تایپ دادههای مورد استفاده در برنامۀ خود را تغییر دهیم که به فرآیند تغییر نوع دادهای به نوع دادۀ دیگر اصطلاحاً Casting گفته میشود (به طور مثال، فرض کنیم که در برنامهای نیاز داریم تا دادهای با دیتا تایپ int را به دادهای از نوع double تبدیل کرده سپس در برنامۀ خود مورد استفاده قرار دهیم.)
نکته قابلتوجه در ارتباط با کَست کردن این است که پس از تغییر دیتا تایپ دادهای به دیتا تایپی دیگر، دیتای جدید که نوع آن تغییر یافته جایگزین دیتای قبلی نمیشود بلکه دادهای با دیتا تایپ جدید تولید میشود. همچنین از میان تمامی دیتا تایپهای زبان برنامهنویسی جاوا نوع دادۀ boolean قابلیت کَست کردن ندارد.
نکته : در فرآیند کَستینگ دادۀ اولیهای که قصد تغییر دیتا تایپ آن را داریم تحت عنوان دیتای Source و داده تولیدشده در نتیجه این فرآیند نیز دیتای Destination نامیده میشود. نکته حائز اهمیت در این مورد این است که چنانچه دیتای Destination از دیتای Source از لحاظ میزان حافظه مورد نیاز برای ذخیرهسازی بزرگتر باشد، فرایند کَست شدن با ضریب خطای به مراتب کمتری انجام میشود
@this_java
در توسعه نرمافزار برخی مواقع نیاز داریم تا دیتا تایپ دادههای مورد استفاده در برنامۀ خود را تغییر دهیم که به فرآیند تغییر نوع دادهای به نوع دادۀ دیگر اصطلاحاً Casting گفته میشود (به طور مثال، فرض کنیم که در برنامهای نیاز داریم تا دادهای با دیتا تایپ int را به دادهای از نوع double تبدیل کرده سپس در برنامۀ خود مورد استفاده قرار دهیم.)
نکته قابلتوجه در ارتباط با کَست کردن این است که پس از تغییر دیتا تایپ دادهای به دیتا تایپی دیگر، دیتای جدید که نوع آن تغییر یافته جایگزین دیتای قبلی نمیشود بلکه دادهای با دیتا تایپ جدید تولید میشود. همچنین از میان تمامی دیتا تایپهای زبان برنامهنویسی جاوا نوع دادۀ boolean قابلیت کَست کردن ندارد.
نکته : در فرآیند کَستینگ دادۀ اولیهای که قصد تغییر دیتا تایپ آن را داریم تحت عنوان دیتای Source و داده تولیدشده در نتیجه این فرآیند نیز دیتای Destination نامیده میشود. نکته حائز اهمیت در این مورد این است که چنانچه دیتای Destination از دیتای Source از لحاظ میزان حافظه مورد نیاز برای ذخیرهسازی بزرگتر باشد، فرایند کَست شدن با ضریب خطای به مراتب کمتری انجام میشود
@this_java
مقایسه دو رشته با متد equals:
متد equals مبادرت به تست هر دو شی برای تعیین برابری میکند(بررسی میکند که ایا محتویات در دو شی یکسان هستند یا خیر). اگر هر دو شی برابر باشند متد مقدار true و در غیر این صورت false برگشت میدهد. متد equals از روش مقایسه lexicographical استفاده میکند , که در ان مقادیر صحیح unicode که هر یک نشاندهنده یک کاراکتر در رشته مقایسه شوند است استفاده میشود. متد equals مقادیر صحیح unicode را که نشاندهنده کاراکتر های موجود در هر رشته می باشند , مقایسه میکند.
@this_java
متد equals مبادرت به تست هر دو شی برای تعیین برابری میکند(بررسی میکند که ایا محتویات در دو شی یکسان هستند یا خیر). اگر هر دو شی برابر باشند متد مقدار true و در غیر این صورت false برگشت میدهد. متد equals از روش مقایسه lexicographical استفاده میکند , که در ان مقادیر صحیح unicode که هر یک نشاندهنده یک کاراکتر در رشته مقایسه شوند است استفاده میشود. متد equals مقادیر صحیح unicode را که نشاندهنده کاراکتر های موجود در هر رشته می باشند , مقایسه میکند.
@this_java
مقایسه دو رشته با متد compareTo:
این متد در واسط Comparable اعلان شده و در کلاس String پیاده شده است. .. اگر رشته ها باهم برابر باشند این متد مقدار 0 و اگر رشته ای که متد compareTo را فراخوانی کرده کوچکتر از رشته ای باشد که به عنوان ارگومان به مقدار ارسال شده, -1 و اگر رشته ای که متد compareTo را فراخوانی کرده بزرگتر از رشته ای باشد که بعنوان ارگومان به مت ارسال شده, مقدار 1 برگرشت میدهد... متد compareTo از مقایسه lexicographical استفاده میکند
https://t.me/this_java/332
@this_java
این متد در واسط Comparable اعلان شده و در کلاس String پیاده شده است. .. اگر رشته ها باهم برابر باشند این متد مقدار 0 و اگر رشته ای که متد compareTo را فراخوانی کرده کوچکتر از رشته ای باشد که به عنوان ارگومان به مقدار ارسال شده, -1 و اگر رشته ای که متد compareTo را فراخوانی کرده بزرگتر از رشته ای باشد که بعنوان ارگومان به مت ارسال شده, مقدار 1 برگرشت میدهد... متد compareTo از مقایسه lexicographical استفاده میکند
https://t.me/this_java/332
@this_java
Telegram
Learn Java
جاوا به زبان ساده 29
متد ()compareToIgnoreCase شبیه متد ()compareTo یک String(رشته( را از نظر لغوی مقایسه
می کند. تنها تفاوت آنها این است که متد ()compareToIgnoreCase هنگام مقایسه دو String(رشته(
حروف بزرگ)uppercase )یا کوچک)lowercase )را نادیده می گیرد.…
متد ()compareToIgnoreCase شبیه متد ()compareTo یک String(رشته( را از نظر لغوی مقایسه
می کند. تنها تفاوت آنها این است که متد ()compareToIgnoreCase هنگام مقایسه دو String(رشته(
حروف بزرگ)uppercase )یا کوچک)lowercase )را نادیده می گیرد.…
یافتن مکان کاراکتر ها و زیر رشته ها
در بسیاری از برنامه جستجو برای یافتن یک کاراکتر یا مجموعه ای از کاراکتر ها در یک رشته ضروری است. برای مثال , برنامه نویس یک برنامه پردازشگر لغت ایجاد میکند و مایل است تا این برنامه از ویژگی جستجو در میان مستندات برخوردار باشد.برای پیاده سازی جستجو در کاراکتر های مشخص شده یا زیر رشته ها در درون یک رشته میتوانید از متد های indexOf و lastIndexOf که هردو متد های کلاس String هستند استفاده کنید
مثال :
اگر indexOf کاراکتر را پیدا کند, شاخص ان کاراکتر را در رشته باز میگرداند , در غیر اینصورت -۱ برگشت میدهد
@this_java
در بسیاری از برنامه جستجو برای یافتن یک کاراکتر یا مجموعه ای از کاراکتر ها در یک رشته ضروری است. برای مثال , برنامه نویس یک برنامه پردازشگر لغت ایجاد میکند و مایل است تا این برنامه از ویژگی جستجو در میان مستندات برخوردار باشد.برای پیاده سازی جستجو در کاراکتر های مشخص شده یا زیر رشته ها در درون یک رشته میتوانید از متد های indexOf و lastIndexOf که هردو متد های کلاس String هستند استفاده کنید
مثال :
String letters ="abcdefg";خروجی :
System.out.println("LastIndexOf: "letters.lastIndexOf('c'));
System.out.println("IndexOf: "letters.indexOf("def"));
LastIndexOf 2متد lastIndexOf عمل جستجو را از انتهای رشته شروع و به سمت ابتدای ان حرکت میکند. اگر متد موفق به یافتن کاراکتر شود شاخص انرا باز میگرداند در غیر اینصورت مقدار -۱ برگشت داده میشود
IndexOf: 3
اگر indexOf کاراکتر را پیدا کند, شاخص ان کاراکتر را در رشته باز میگرداند , در غیر اینصورت -۱ برگشت میدهد
@this_java
سلسه مراتب توارث
رابطه توارث را میتوان به فرم یک سلسه مراتب درختی تصور کرد. موجودیت یک کلاس در رابطه توارث با زیر کلاس های ان مشخص میگردد. اگرچه کلاس ها میتوانند موجودیت های مستقلی داشته باشند اما زمانیکه در ترتیبات توارثی بکار گرفته میشوند, با کلاس های دیگر مرتبط میگردند .
@this_java
رابطه توارث را میتوان به فرم یک سلسه مراتب درختی تصور کرد. موجودیت یک کلاس در رابطه توارث با زیر کلاس های ان مشخص میگردد. اگرچه کلاس ها میتوانند موجودیت های مستقلی داشته باشند اما زمانیکه در ترتیبات توارثی بکار گرفته میشوند, با کلاس های دیگر مرتبط میگردند .
@this_java
متد های مسند
یکی دیگر از کاربردهای رایج در استفاده از متد های accsessor (متد های get به متد های accessor یا query معروف هستند)تست برقرار بودن یا نبودن یک شرط است- غالبا به این متد ها , متد های مسند یا predicate میگویند.مثالی از یک متد مسند میتواند متد isEmpty برای یک کلاس حامل باشد- کلاسی با قابلیت نگهداری تعدادی شی همانند یک لیست پیوندی,پشته یا صف. برنامه میتواند قبل از اقدام به خواندن ایتم دیگری از یک شی حامل از متد isEmpty استفاده کند. همچنین برنامه میتواند از متد isFull نیز استفاده کند, قبل ازینکه اقدامی در جهت افزودن یک ایتم دیگر به یک شی حامل داشته باشد.
@this_java
یکی دیگر از کاربردهای رایج در استفاده از متد های accsessor (متد های get به متد های accessor یا query معروف هستند)تست برقرار بودن یا نبودن یک شرط است- غالبا به این متد ها , متد های مسند یا predicate میگویند.مثالی از یک متد مسند میتواند متد isEmpty برای یک کلاس حامل باشد- کلاسی با قابلیت نگهداری تعدادی شی همانند یک لیست پیوندی,پشته یا صف. برنامه میتواند قبل از اقدام به خواندن ایتم دیگری از یک شی حامل از متد isEmpty استفاده کند. همچنین برنامه میتواند از متد isFull نیز استفاده کند, قبل ازینکه اقدامی در جهت افزودن یک ایتم دیگر به یک شی حامل داشته باشد.
@this_java