کلاس های Math String و انواع داده اولیه در جاوا

 

در این قسمت از سری آموزش های برنامه نویسی جاوا، بعد از مبحث کلاس ها در جاوا چند کلاس سودمند که از آن ها می توانید در برنامه های خود استفاده کنید را بررسی خواهیم کرد. بعضی از کلاس ها که در پکیج java.lang وجود دارند، بدون هیچگونه کار اضافه ایی، خود به خود قابل استفاده در برنامه هستند.

اما بعضی از کلاس ها در سایر پکیج ها قرار دارند و برای استفاده از آن ها باید پکیج مربوطه آن ها به برنامه با دستور import صریحا به برنامه اضافه شود.

 

زمانی که شما از یک IDE استفاده می کنید به صورت خودکار ، زمانی که از یک کلاس در برنامه استفاده کنید اگر در پکیجی باشد که آن پکیج به برنامه import نشده باشد، این کار را برای شما انجام می دهد.

حالا به بررسی کلاس ها می پردازیم.

 

کلاس Math در جاوا

در پکیج java.util قرار دارد و به صورت خودکار در هر کلاسی قابل استفاده است.

 

این کلاس دارای متد ها و متغییر های static هستند که برای عملیات ریاضی و یا تعریف مقادیر ریاضی از آن ها استفاده کرد

 

برای مثال این کلاس دو متغییر static به نام های PI (عدد پی) و E (پایه لگاریتم طبیعی) دارد. چون این مقادیر استاتیک هستند بدون نمونه سازی از کلاس Math و با استفاده از نام کلاس قابل دسترس می باشد.

متد ها و ثوابت مختلفی در کلاس Math وجود دارد که به شرح مختصر آن ها می پردازیم.

 

ثابت PI و از نوع double هستند.

 

System.out.println("PI: " + Math.PI + " E: " + Math.E);

 

abs(x)

برای محاسبه قدر مطلق یک عدد استفاده می شود

 

System.out.println(Math.abs(-15));
System.out.println(Math.abs(-13.56));

 

پارامتر این متد می تواند عددی از نوع int، float، double و long باشد.

 

ceil(x)

یک ورودی از نوع عددی double  میگیرد. این متد عدد اعشاری را به بزرگترین عدد صحیح بعدی گرد خواهد کرد. مثال زیر را ببینید

 

System.out.println(Math.ceil(-55.6));
System.out.println(Math.ceil(55.4));

 

خروجی 

 

-55.0
56.0

 

 exp(x)

x از نوع double است. ex را برمی گرداند. مثال زیر را ببینید

 

exp(x) = 20.085

 

 floor(x)

x از نوع double است و خروجی آن یک مقدار double است که بزرگترین صحیح کوچکتر از x است. مثال زیر را ببینید

 

floor (65.78) = 65.0

 

log(x) 

x از نوع double است و خروجی متد از نوع double می باشد که لگاریتم طبیعی x است. مثال زیر را ببینید

 

log (2) = 0.6931

 

log10(x)

x از نوع double و در خروجی متد مقداری از نوع double برگردانده می شود که لگاریتم پایه 10 عدد x است. مثال زیر را ببینید

 

log10 (2) = 0.30102

 

max(x,y)

x می تواند هر نوع عددی باشد و نوع برگشتی متد نیز از همان نوع است. درواقع بزرگترین مقدار X و y برگردانده می شود. مثال زیر را ببینید

 

max (45, 25) = 45

 

min(x,y)

x می تواند هر نوع عددی باشد و نوع برگشتی متد نیز از همان نوع است. درواقع کوچکترین مقدار X و y برگردانده می شود. مثال زیر را ببینید

 

min (45, 25) = 25

 

 pow(x, y)

x و y از نوع double هستند. نوع double را بر میگرداند که برابر با xy است. مثال زیر را ببینید

 

pow (4, 0.5) = 2

 

round(x)

مقداری را بر می گرداند که نزدیک ترین مقدار صحیح به x است. مثال زیر را ببینید

 

round (24.56) = 25
round (18.35) = 18

 

sqrt(x)

x از نوع double است. مقدار double را بر میگرداند که ریشه دوم x است. مثال زیر را ببینید

 

sqrt (4.0) = 2.0

 

cos(x)

X از نوع double است. کسینوس x را بر حسب رادیان بر می گرداند. مثال زیر را ببینید

 

cos (0) = 1.0

 

sin(x)

X از نوع double است. سینوس x را بر حسب رادیان بر می گرداند. مثال زیر را ببینید

 

sin (0) = 0.0

 

tan(x)

X از نوع double است. تانژادنت x را بر حسب رادیان بر می گرداند. مثال زیر را ببینید

 

tan (0) = 0.0

 

random()

اعداد تصادفی بین 0.0 و 1.0 تولید می کند

 

toDegrees(x)

x از نوع double است. x بر حسب رادیان است و آن را به درجه تبدیل می کند (تبدیل رادیان به درجه)

 

toRadians(x)

x از نوع double است. x بر حسب درجه است و آن را به رادیان تبدیل می کند (تبدیل درجه به رادیان)

 

acos(x)

x از نوع double است. آرک کسینوس x را محاسبه می کند.

 

asin(x)

x از نوع double است. آرک سینوس x را محاسبه می کند.

 

atan(x)

x از نوع double است. آرک تانژادنت x را محاسبه می کند.

 

 

 

کلاس String

این کلاس در پکیج java.lang تعریف شده و به طور خودکار در هر برنامه ایی قابل استفاده است.

 

این کلاس برای تعریف رشته به کار می رود و شامل متد های متعددی برای کار کردن بر روی رشته ها است، مثل تست و دستکاری رشته ها

 

در ادامه به بررسی متد های این کلاس می پردازیم

 

شی رشته به صورت های زیر تعریف می گردد

 

String s1;
String s2 = new String("Hello");
String s3 = "Hello";

 

 دستور اول، متغیر مرجع s1 را ایجاد می کند که به هیچ شی ایی اشاره نمی کند.

دستور دوم و سوم متغیر مرجع s2 و s3 را ایجاد می کند که درواقع عمل یکسانی هستند و تفاوتی بین آن ها وجود ندارد. هردو متغیر حاوی رشته Hello می باشند.

 

برای تعریف رشته تهی (رشته ایی به طول صفر) به صورت زیر عمل می کنیم

 

 

 

 

String str = "";

 

 نمونه ایی دیگر از اعلان متغیر رشته ایی و مقدار دهی به متغیر

 

String str1;
str1 = "Java Programming";

 

حالا به مرور بعضی از متد های موجود در کلاس String میپردازیم

 

charAt(index)

index از نوع int است. این متد کارامتر موجود در موقعیت index را بر میگرداند. کاراکتر های رشته از 0 شماره گذاری می شوند. حالا مثال زیر را ببینید

 

String str2 = "Programming with Java";
System.out.println(str2.charAt(3));

 

خروجی کد بالا به صورت زیر است

 

g

 

بنابراین برای خواندن یک کاراکتر در جاوا باید از این متد استفاده کنید

 

تمرین: برنامه ایی بنویسید که یک کارکتر از ورودی بخواند و در خروجی چاپ کند

 

indexOf(str)

اندیس اولین وقوع کاراکتر ch را در رشته بر می گرداند. اگر چنین کاراکتری در رشته یافت نشد -1 را بر می گرداند. مثال زیر را ببینید

 

"Programming with Java"
str.indexOf('j') = 17

 

indexOf(str, pos)

str از نوع رشته و pos از نوع int است. رشته str را با شروع از موقعیت pos در رشته شروع می کند. اگر str پیدا نشود -1 برگردانده خواهد شد. مثال زیر را ببینید

 

"Programming with Java"
str.indexOf("pr", 10) = -1

 

concat(str)

str از نوع رشته است. رشته ایی را بر میگرداند که str با آن الحاق شده است. یعنی رشته str به انتهای آن الحاق می شود. مثال زیر را ببینید

 

 

String myString = "Programming with Java";
myString.concat(" is fun.");
System.out.println(myString);

 

خروجی به صورت زیر می باشد

 

Programming with Java is fun.

 

length()

طول رشته را بر می گرداند. مثال زیر را ببینید

 

String str = "Java Programming";
System.out.println(str.length());

 

خروجی به صورت زیر می باشد

 

16

 

replace(ch1, ch2)

ch1 و ch2 کاراکتری هستند. رشته ایی را بر میگرداند که در آن جای کاراکتر ch1 کاراکتر ch2 قرار گرفته است. مثال زیر را ببینید

 

String str = "Programming with Java";
str.concat('a', '*');
System.out.println(str);

 

خروجی به صورت زیر می باشد

 

Progr*mming with J*v*

 

 substring(beg)

beg از نوع صحیح است. رشته ایی را برمیگرداند که زیر رشته ای از این رشته است و از کاراکتر beg تا انتهای رشته می باشد. مثال زیر را ببینید

 

String str = "Programming with Java";
System.out.println(str.substring(12));

 

 خروجی به صورت زیر می باشد

 

with Java

 

 substring(beg, end)

beg و end از نوع صحیح هستند. رشته ایی را بر می گرداند که زیر رشته ای از این رشته است و از beg شروع می شود و تا end-1 ادامه دارد. مثال زیر را ببینید

 

String str = "Programming with Java";
System.out.println(str.substring(0,11));

 

 

خروجی به صورت زیر می باشد

 

Programming

 

toLowerCase()

رشته ایی را بر میگرداند که تمامی حروف آن کوچک هستند. مثال زیر را ببینید

 

String str = "Programming with Java";
System.out.println(str.toLowerCase());

  

خروجی به صورت زیر می باشد

 

programming with java

 

toUpperCase()

رشته ایی را بر میگرداند که تمامی حروف آن بزرگ هستند. مثال زیر را ببینید

 

String str = "Programming with Java";
System.out.println(str.toUpperCase());

  

خروجی به صورت زیر می باشد

 

PROGRAMMING WITH JAVA

 

equals(object)

object شی ای است که باید مورد مقایسه انجام گیرد. اگر با هم برابر باشند، true وگرنه false برگردانده می شود. مثال زیر را ببینید

 

String str1 = "It3du";
String str2 = "It3du";
System.out.println(str1.equals(str2));

  

خروجی به صورت زیر می باشد

 

true

 

equalsIgnoreCase(object)

این متد همانند متد equals است. با این تفاوت که بین حروف بزرگ و کوچک تفاوت قائل نمی شود. مثال زیر را ببینید

 

String str1 = "It3du";
String str2 = "It3DU";
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str2));

  

خروجی به صورت زیر می باشد

 

false
true

 

compareTo(str)

str رشته ایی است که باید مقایسه شود. اگر این دو رشته با هم برابر باشند این متد مقدار صفر بر میگرداند ، اگر str از آن رشته بزرگ تر باشد مقدار منفی و اگر str از آن کوچک تر باشد، مقداری مثبت بر میگرداند. مثال زیر را ببینید

 

String str1 = "It3du";
String str2 = "It3du";
System.out.println(str1.compareTo(str2));

 

خروجی به صورت زیر می باشد

 

0

 

 compareToIgnoreCase(str)

همانند متد compareTo می باشد. با این تفاوت که بین حروف بزرگ و کوچک تفاوتی قائل نمی شود. مثال زیر را ببینید

 

String str = "H";
System.out.println(str.compareTo("h"));
System.out.println(str.compareToIgnoreCase("h"));

 

 خروجی متد به صورت زیر می باشد

 

-32
0

 

 isEmpty()

اگر رشته تهی باشد مقدار true وگرنه مقدار false را بر می گرداند.

 

lastIndexOf(ch)

شبیه متد indexOf است با این تفاوت که جستجو از آخر صورت می گیرد

 

lastIndexOf(str, pos)

شبیه indexOf با دو پارامتر در ورودی است . با این تفاوت که جستجو از آخر صورت می گیرد

 

valueOf(x)

x می تواند int، double، float، long یا char باشد. مقادیری از نوع آرگومان را به رشته تبدیل می کند. مثال زیر را ببنید. آرگومان ورودی از نوع صحیح است که تبدیل به رشته می شود

 

String intValueString = String.valueOf(169);

 

 

 

مقایسه رشته ها در جاوا

یکی از متداول ترین کار ها در مورد رشته ها، مقایسه آن ها است.

 

منظور از مقایسه رشته ها چیست؟  رشته ها به صورت کاراکتر به کاراکتر با هم مقایسه می شوند. بدیهی هست که دو رشته وقتی با هم یکسان هستند که اولا طول آن ها و ثانیا کارکتر های متناظر آن ها با هم یکسان باشند.

 

دستورات زیر را در نظر بگیرید

 

System.out.println(aName.equals(anotherName));
System.out.println(aName.equalsIgnoreCase(anotherName));
System.out.println(aName.equals("Ali"));
System.out.println(anotherName.equalsIgnoreCase("ali"));

 

خروجی به صورت زیر است

 

false
true
true
true

 

همچنین از متد های compareTo و compareToIgnoreCase می توانید استفاده کنید

 

با ادامه قسمت های آموزشی جاوا همراه ما باشید.

 

می توانید انتشار قسمت ها جدید آموزش برنامه نویسی و به روز رسانی های جدید سایت را از کانال تلگرام ما دنبال کنید  و یا از قسمت انتهایی سایت ، آدرس it3du را در سایر شبکه های اجتماعی پیدا کنید

 

 

منبع: it3du