در این جلسه از آموزش جاوا قصد داریم درباره casting یا تبدیل انواع داده به یکدیگر صحبت کنیم و اطلاعاتی را در اختیار شما قرار دهیم. بهطورکلی ما دو نوع casting در زبان برنامهنویسی جاوا داریم. نوع اول مدلی است که بهصورت خودکار این عملیات را برای ما انجام میدهد و نیازی نیست که درباره آن نگران باشیم. به این نوع از castingها implicit casting گفته میشود. نوع دوم که explicit casting نامیده میشود نوعی است که باید بهصورت مستقیم و دستی خودمان این کار را انجام دهیم. حال در ادامه این مطلب قصد داریم بیشتر درباره این دو نوع casting صحبت کنیم.
implicit casting
implicit casting در زبان برنامهنویسی جاوا
برای آشنایی با این نوع casting در زبان برنامهنویسی جاوا قطعه کد زیر را در نظر بگیرید:
package com.hamed;
public class Main{
public static void main(String[] args){
short x = 2;
int sum = x + 5;
System.out.println(sum);
}
}
اگر قطعه کد بالا را اجرا کنید مشاهده میکنید که مقدار 7 برای شما نمایش داده میشود. حال سوالی که پیش میآید این است که چگونه دو نوع داده متفاوت با یکدیگر جمع میشوند؟ بهطورکلی short نوعی داده است که نیازمند 2 بایت هست، این در حالی است که متغیر int برای ذخیره شدن نیازمند 4 بایت است. حال چون short نیازمند فضای ذخیرهسازی کوچکتری است بهراحتی میتوان آن را داخل یک متغیر از نوع int نیز ذخیره کرد چراکه فضای int بزرگتر از فضای موردنیاز برای short یعنی 2 بایت است؛ بنابراین کامپایلر زمانی که به دستورات ما میرسد یک متغیر جدید در داخل حافظه ایجاد میکند و مقدار short که تعریف کردهایم را داخل آن متغیر ذخیره میکند و حال مقدار 2 که داخل متغیر int قرار گرفته است را با 5 جمع کرده و نتیجه آن را داخل متغیر sum قرار میدهد و سپس عدد 7 را به ما نشان میدهد؛ بنابراین این نوع از castingها بهصورت کاملا خودکار انجام میشوند و نیازی نیست که شما نگرانی زیادی درباره آنها داشته باشید.
بهطورکلی در زبان برنامهنویسی جاوا میتوان گفت که نوع داده بایت بهصورت کاملا خودکار به short تبدیل شده، short به int تبدیل شده و int نیز به long تبدیل میشود. نکته مهم دیگری که در اینجا باید به آن دقت داشته باشید این است که همین کار را میتوان برای اعداد اعشاری نیز انجام داد. بهعنوانمثال به قطعه کد زیر توجه کنید:
package com.hamed;
public class Main{
public static void main(String[] args){
int x = 2;
double sum = x + 5.6;
System.out.println(sum);
}
}
اگر از قطعه کد بالا خروجی بگیرید مشاهده میکنید که نتیجه برابر 7.6 خواهد بود. مجددا در اینجا چون نوع داده int کوچکتر از نوع داده double است یک متغیر ثانویه تعریف شده و مقدار x بهصورت double در حافظه ذخیره شده است و این مقدار اعشاری x با 5.6 جمع شده و نتیجه آن در داخل متغیر sum قرار گرفته است. بهاینترتیب عملیات casting در این کد نیز بهصورت کاملا خودکار رخداده است.
explicit casting
آشنایی با explicit casting در زبان برنامهنویسی جاوا
در این بخش از آموزش جاوا قصد داریم بیشتر درباره explicit casting در این زبان برنامهنویسی صحبت کنیم. گاهی اوقات ممکن است شما نیاز داشته باشید که عکس عملیاتهایی که در بخش قبلی بررسی کردیم را انجام دهید. بهعنوانمثال ممکن است بخواهید مقدار یک double را با یک int جمع کنید. در واقع ما میخواهیم در نهایت فقط عدد صحیح را مشاهده کنیم و مقدار اعشار آن برای ما اهمیتی ندارد. قطعه کد زیر را برای انجام این کار در نظر بگیرید:
package com.hamed;
public class Main{
public static void main(String[] args){
double x = 2.2;
int sum =(int) x + 3;
System.out.println(sum);
}
}
دقت داشته باشید که اگر (int) را قبل از متغیر x قرار ندهید از شما خطا میگیرد و در نتیجه کد شما اجرا نمیشود. در واقع قطعه کد بالا بیانگر این است که ابتدا متغیر x را به یک int تبدیل کن و مقدار اعشاری آن را از بین ببر و سپس آن را با عدد 3 جمع کن و نتیجه را در داخل sum قرار بده؛ بنابراین اگر قطعه کد بالا را اجرا کنید مشاهده میکنید که خروجی عدد 5 را برای شما نمایش میدهد.
ادامه مثال explicit casting
ادامه مثالهای explicit casting در زبان برنامهنویسی جاوا
در این بخش از آموزش جاوا قصد داریم مثال دیگری را درباره explicit casting به شما ارائه دهیم. بهعنوانمثال قطعه کد زیر را در نظر بگیرید:
package com.hamed;
public class Main{
public static void main(String[] args){
long x = 2L;
int sum =(int) x + 3;
System.out.println(sum);
}
}
مجددا در قطعه کد بالا چون مقدار Long بسیار بزرگتر از int است بهصورت مستقیم نمیتوانید از آن استفاده کنید. به همین علت نیز باید پیش از استفاده حتما آن را به int تبدیل کرده و cast کنید و سپس آن را با عدد 3 جمع کرده و نتیجه را داخل متغیر sum قرار دهید.
نکات مهم
نکات بسیار مهم در explicit casting
یک نکته بسیار مهم که باید در این جلسه از آموزش جاوا اسکریپت به آن دقت داشته باشید این است که در زمان explicit casting نوع دادههای شما حتما باید با یکدیگر سازگاری داشته باشند. بهعنوانمثال نوع دادههایی که ما در مثالهای قبلی بررسی کردیم همگی دادههای عددی بودند و به همین علت نیز با یکدیگر سازگاری داشتند. پس بهعنوانمثال شما نمیتوانید یکرشته را به یک عدد cast کنید. مثلا قطعه کد زیر را در نظر بگیرید:
package com.hamed;
public class Main{
public static void main(String[] args){
String x = “1”;
int sum =(int) x + 3;
System.out.println(sum);
}
}
با اجرای این کد شما یک خطا دریافت میکنید و این کد برای شما اجرا نمیشود چراکه رشته x با دادههای عددی سازگاری ندارد و در نتیجه شما نمیتوانید آن را به نوع داده صحیح cast کنید. البته باید به این نکته مهم توجه داشته باشید که برای تبدیل رشته بالا به یک عدد صحیح راهی وجود دارد که در ادامه این روش را بررسی خواهیم کرد. برای تبدیل این رشته به یک عدد ما باید از کلاسهای wrapper استفاده کنیم که در ادامه درباره آنها صحبت خواهیم کرد.
تبدیل رشته به عدد
تبدیل رشته به عدد در زبان برنامهنویسی جاوا
در این بخش از آموزش جاوا قصد داریم درباره تبدیل یک رشته به عدد صحبت کنیم. همانطور که در بخش قبلی نیز بیان کردیم برای انجام این کار باید از wrapperها استفاده کنیم. بهطورکلی میدانیم که در جاوا دو نوع داده مقدماتی یا primitive و reference وجود دارد. برای هریک از انواع داده primitive یک کلاس wrapper ساخته شده است که خود آن نوعی reference type به شمار میآید. بهعبارتدیگر برای هر نوع داده primitive یک نوع داده reference type ایجاد شده است. مثلا برای int کلاس Integer، برای نوع داده long کلاس Long و به همین ترتیب برای هر نوع داده دیگر نیز یک کلاس ایجاد شده است.
یکی از پرکاربردترین متدهایی که در این کلاسها وجود دارد برای تبدیل رشته به عدد است که بهعنوانمثال برای اعداد صحیح int بهصورت زیر انجام میشود:
public class Main{
public static void main(String[] args){
String x = “1”;
int sum = Integer.parseInt(x) + 3;
System.out.println(sum);
}
}
با اجرای قطعه کد بالا مشاهده میکنید که بهسادگی خروجی 4 برای شما چاپ میشود که بیانگر این است که بهدرستی مقدار رشتهای ما به مقدار int تبدیل شده است. نکته بسیار مهم در این بخش این است که شما میتوانید همین متد را برای سایر انواع داده primitive نیز استفاده کنید و هریک از کلاسهای wrapper که برای آنها ایجاد میشوند متدهای اینچنینی را در اختیار شما قرار میدهند. استفاده از این متدها در پروژههای برنامهنویسی مختلف به زبان جاوا میتواند به میزان بسیار زیادی برای شما مفید و کاربردی باشد.
قسمت قبلی آموزش رایگان java :
قسمت بعدی آموزش رایگان java :
یا جهت مشاهده ویدیوهای اموزشی آموزش رایگان جاوا وارد این صفحه شوید.