نحوۀ Cast کردن آبجکت‌ به دیتا تایپ‌ و بالعکس در زبان جاوا


در آموزش گذشته با نحوه کَست کردن دیتا تایپ‌های مختلف به یکدیگر آشنا شدیم و در این آموزش به تشریح نوع دیگری از فرآیند کَستینگ خواهیم پرداخت که در آن مقدار اختصاص‌یافته به یک آبجکت را با دیتا تایپ مورد نظر کَست کرده و بالعکس مقداری از نوع دادۀ مد نظر را به آبجکتی کَست می‌نماییم که برای شروع ابتدا پروژه‌ای جدید تحت عنوان CastingObjects ایجاد کرده سپس کلاسی به نام Casting در آن می‌سازیم.

نکتۀ قابل‌توجه در رابطه با کَستینگ آبجکت‌ها این است که در زبان برنامه‌نویسی جاوا نمی‌توان آبجکتی را به دیتا تایپ مورد نظر و بالعکس کَست نمود بلکه این کار با به‌کارگیری کلاسی از پیش تعریف‌شده و متناظر با هر دیتا تایپ در این زبان امکان‌پذیر می‌باشد. در واقع، هر یک از دیتا تایپ‌های مطرح‌شده در زبان جاوا از کلاسی هم‌نام با دیتا تایپ مربوطه برخوردار است که می‌توان با استفاده از قابلیت‌های این کلاس‌ها عملیات کَست کردن از یک آبجکت به دیتا تایپ مورد نظر و بالعکس را انجام داد.

همان‌طور که در آموزش‌های پیشین توضیح دادیم، در زبان برنامه‌نویسی جاوا هشت نوع دادۀ Primitive Type داریم که عبارتند از double ،float ،int ،short ،long ،byte ،char و boolean که توجه داشته باشیم تمامی آن‌ها با حروف کوچک نوشته‌ شده‌اند. به علاوه، کلاس‌های از پیش تعریف‌شدۀ هم‌نام با آن‌ها نیز در زبان جاوا برای هر یک از این دیتا تایپ‌ها در نظر گرفته شده‌اند با این تفاوت که کلاس‌های مذکور با حرف اول بزرگ نوشته می‌شوند که عبارتند از Double ،Float ،Integer ،Short ،Long ،Byte ،Character و Boolean به طوری که نام دو کلاس Integer و Character به صورت کامل نوشته می‌شوند در حالی که دیتا تایپ متناظر آن‌ها به ترتیب به صورت int و char نام‌گذاری شده‌اند.

اکنون قصد داریم تا یک آبجکت از روی کلاس Integer ایجاد کرده و مقداری به آن اختصاص دهیم (توجه داشته باشیم حرف اول واژۀ Integer به صورت بزرگ نوشته شده است.) که برای این منظور به صورت زیر عمل می‌کنیم:

public class Casting {
    public static void main(String[] args) {
        Integer integerObject = new Integer(123);
    }
}

همان‌طور که ملاحظه می‌کنیم، نحوۀ ساخت یک آبجکت از روی کلاس Integer بدین صورت است که اول نام کلاس مد نظر را نوشته سپس نام آبجکت را نوشته و با استفاده از کیورد new به کامپایلر دستور می‌دهیم که آبجکتی جدید از روی کلاس Integer ساخته و با عملگر = آن را به متغیر مورد نظر منتسب کند و بدین ترتیب در کد فوق آبجکتی تحت عنوان integerObject از روی کلاس Integer ساخته‌ و مقدار 123 از جنس عدد صحیح را بدان منتسب نموده‌ایم.

حال همانند مابقی آبجکت‌ها، می‌توانیم آبجکت ساخته‌شده را در تمامی قسمت‌های برنامه مورد استفاده قرار دهیم مضاف بر اینکه در صورت نیاز به استفاده از آن به عنوان یک مقدار عددی، می‌توانیم با فراخوانی متد تعریف‌شده در کلاس Integer روی آبجکت مد نظر آن را به مقدار عددی تبدیل نماییم به طوری که برای تبدیل آبجکت integerObject به مقداری با دیتا تایپ int به روش زیر عمل می‌کنیم:

public class Casting {
    public static void main(String[] args) {
        Integer integerObject = new Integer(123);
        int newValue = integerObject.intValue();
    }
}

در کد فوق، ابتدا آبجکتی از روی کلاس Integer تحت عنوان integerObject ساخته و مقدار عددی 123 را بدان منتسب کرده‌ایم و در ادامه متغیر دیگری به منظور نگهداری مقدار عددی 123 پس از کَستینگ تعریف کرده و مقدار ریترن‌شده در نتیجۀ فراخوانی متد ()intValue روی آبجکت integerObject را به آن اختصاص داده‌ایم (چنانچه آبجکت ساخته‌شده در مرحلۀ قبل از جنس کلاس Double بود، می‌توانستیم از متد ()doubleValue استفاده کرده و آن را به یک مقدار عددی از جنس double کَست کنیم.)

همچنین یکی از موارد رایج در فرآیند کَستینگ آبجکت به مقداری با دیتا تایپ مورد نظر، تبدیل آبجکت ساخته‌شده از روی کلاس String به مقداری با دیتا تایپ int است که برای روشن شدن این مطلب سناریویی تعریف کرده و آن را پیاده‌سازی می‌نماییم.

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

در این آموزش به بررسی نحوۀ ساخت آبجکت از روی کلاس‌های متناظرِ هر یک از دیتا تایپ‌های زبان برنامه‌نویسی جاوا پرداختیم و در ادامه مثالی کاربردی را پیاده‌سازی نمودیم تا ببینیم که چگونه می‌توان در صورت نیاز با فراخوانی برخی متدهای تعریف‌شده در کلاس مربوطه آن‌ها را به مقداری با دیتا تایپ مورد نظر کَست نمود.

دانلود فایل‌های تمرین


بهزاد مرادی

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
alone rango
alone rango اندکی پایتون بلدم و در حال یادگیری جاوا برای اندروید
۱۳۹۷/۱۰/۳۰
یکم برام گیج کننده بود.
در اینجا ما یک شی از کلاس اینتجر ساختیم که مقدارش 123 بود

Integer integerObject = new integer(123); M

حرکت بعدی شما این بود

int newValue = new Integer(123); M

درواقع اگر اشتباه نفهمیده باشم شما ابتدا از روی یک کلاس یک شی ساختید سپس شی رو تبدیل به یک متغیر کردید.

نکته: اون M برای این هست که ترکیب حروف انگلیسی بهم نخوره.
کاربر میهمان
میلادمن یک کاربر مهمان هستم
۱۳۹۵/۰۵/۱۲
سلام، با تشکر از آموزش های با حوصله و عالیتون.
من میخوام اسمی که کاربر وارد میکنه، وقتی برنامه میخواد تو کنسول نمایش بده، اولین حرفش رو بزرگ نشون بده. یعنی مثلا کاربر وارد میکنه behzad ولی تو کنسول به صورت Behzad نمایش بده.
چی کار کنم؟
ممنون.
saba
saba
۱۳۹۵/۰۳/۱۴
سلام. نمی شد از اولش هم به جای اینکه سال تولد رو string دریافت کنیم، همون int می گرفتیم؟
حسین
حسین
۱۳۹۴/۱۱/۰۴
فکر کنم فهمیدم. متد .intValue برای کست شی از متغیر هم جنس بکار میرود و پارس کردن برای کست شی از متغیر غیر هم جنس.
در هر صورت ممنون.
کاربر میهمان
حسینمن یک کاربر مهمان هستم
۱۳۹۴/۱۰/۳۰
با سلام و خسته نباشید. آموزش هاتون واقعا عالیه و مباحث پیچیده رو با حوصله و مثال تشریح میکنید . بسیار ممنون.
در ابتدا برای تبدیل شی به متغیر ، متد intValue را معرفی کردید. آیا میشه بجای:
int dateValueToInt = Integer.parseInt(date);
برای تبدیل شی به این شکل نوشت...
int dateValueToInt = Date.intValue();
کاربر میهمان
ali aryaمن یک کاربر مهمان هستم
۱۳۹۴/۱۰/۱۵
سلام واقعا خسته نباشید اموزشهای جامع و کاملی دارید.
لطفا اگه میشه درباره متد pares بیشتر توضیح بدید که دقیقا کارش چیه. ممنون میشم.
کاربر میهمان
alanaمن یک کاربر مهمان هستم
۱۳۹۴/۱۰/۱۲
سلام بر شما! خدا قوت! اگه به سوال زیر پاسخ بدین ممنون میشم:
یک سوال مهم برام پیش اومد و اونم اینه که خب چرا ما از همون اول متغیر data رو از نوع int نگرفتیم که بعد بتونیم اون رو از سال 1392 براحتی تفریق کنیم؟ بعبارتی به جای ;() String date = keyboardInput.next نمیشد بنویسیم :
int date=keyboardInput.nextInt و دیگه نیازی به استفاده از متد parse int نباشه؟؟
ApA
ApA
۱۳۹۴/۱۰/۰۸
باسلام و تشکر فراوان از اموزش های بی نظیرتان
من تا آخر این فصل(فصل 9) را به طور کامل و دقیق خوانده ام ,آیا حالا می توانم شروع به خواندن برنامه نویسی اندروید کنم و در کنارش هم بقیه فصل های جاوا را ادامه دهم؟(منظورم این است که آیا در برنامه نویسی اندروید به مشکلی بر نمی خورم؟)
لطفا زود پاسخم را بدهید,بازهم تشکر
کاربر میهمان
وحیدمن یک کاربر مهمان هستم
۱۳۹۴/۰۹/۲۹
سلام یه سوال داشتم..چه زمانی از این نوع cast کردن استفاده میشه چون در درس قبلی cast کردن اسانتر انجام میشد..
Mojtaba
Mojtaba
۱۳۹۴/۰۹/۲۴
ابتدا تشکر میکنم ازتون .خیلی زیبا مباحث تشریح میکنین و این شیوه اموزش و توضیحات نتیجش این شده که علاقم به برنامه نویسی بیشتر شده. ممنون.
و یه سوال .
در این برنامه که تو این قسمت شرح دادین . در قسمت () String name = keyboardInput.next زمانی که عدد هم وارد میکنیم سیستم دریافت میکنه و نمایش میده.که قاعدتا با تو جه با معرفی String این عمل انجام میشه . چیکار کنیم که فقط کارکتر بگیره و زمانی که عدد وارد میشه اجرا نشه؟