انواع دادهها در جاوا
انواع دادهها در جاوا نوع و محدوده مقادیر دادهای را برای متغیرهای مختلف، ثابتها، پارامترهای متد، انواع بازگشتی و غیره تعریف میکنند. نوع داده به کامپایلر میگوید که چه نوع دادهای باید ذخیره شود و حافظه مورد نیاز برای آن را تعیین میکند. برای ذخیره و دستکاری انواع مختلف دادهها، همه متغیرها باید نوع داده مشخصی داشته باشند.
براساس نوع داده یک متغیر، سیستمعامل حافظه اختصاص داده و تصمیم میگیرد که چه چیزی میتواند در حافظه رزرو شده ذخیره شود. بنابراین، با اختصاص انواع دادههای مختلف به متغیرها، میتوانید اعداد صحیح، اعشاری یا کاراکترها را در این متغیرها ذخیره کنید.
انواع دادههای جاوا به دو دسته اصلی تقسیم میشوند:
- انواع دادههای اولیه (Primitive Data Types)
- انواع دادههای مرجع/شیء (Reference/Object Data Types)
انواع دادههای اولیه جاوا
انواع دادههای اولیه توسط زبان تعریف شده و با استفاده از کلمهکلیدی مشخص میشوند. جاوا هشت نوع داده اولیه را پشتیبانی میکند. در زیر فهرستی از انواع دادههای اولیه آمده است:
- byte
- short
- int
- long
- float
- double
- boolean
نوع داده byte
نوع داده byte یک عدد صحیح 8 بیتی با علامت و مکمل دو است که حداقل مقدار آن -128 (-2^7) و حداکثر مقدار آن 127 (شامل) (2^7 -1) است.
مقدار پیشفرض یک متغیر byte برابر با 0 است که برای صرفهجویی در فضا در آرایههای بزرگ استفاده میشود. این بیشتر برای اعداد صحیح مفید است چون یک byte چهار برابر کوچکتر از یک عدد صحیح (integer) است.
مثال
byte a = 100; byte b = -50;
نوع داده short
نوع داده short یک عدد صحیح 16 بیتی با علامت و مکمل دو است که محدوده مقادیر آن از -32,768 (-2^15) تا 32,767 (شامل) (2^15 -1) است. مانند نوع داده byte، نوع داده short نیز برای صرفهجویی در حافظه مفید است، زیرا فضای کمتری را نسبت به یک عدد صحیح (integer) اشغال میکند و فقط نصف اندازه آن است.
مقدار پیشفرض یک متغیر short برابر با 0 است.
مثال
short s = 10000; short r = -20000;
نوع داده int
نوع داده int یک عدد صحیح 32 بیتی با علامت و مکمل دو است که محدوده مقادیر آن از -2,147,483,648 (-2^31) تا 2,147,483,647 (شامل) (2^31 -1) است. در اینجا، عدد صحیح معمولاً به عنوان نوع داده پیشفرض برای مقادیر صحیح استفاده میشود مگر اینکه نگرانی در مورد حافظه وجود داشته باشد.
مقدار پیشفرض یک متغیر int برابر با 0 است.
مثال
int a = 100000; int b = -200000;
نوع دادهای long
نوع دادهای long یک عدد صحیح ۶۴ بیتی با علامت (signed) و با قالب مکمل دو (two’s complement) است که قادر به نمایش دامنه وسیعی از مقادیر از -9,223,372,036,854,775,808 (-2⁶³) تا 9,223,372,036,854,775,807 (شامل) (2⁶³ – 1) میباشد. این نوع داده زمانی استفاده میشود که دامنهای وسیعتر از int مورد نیاز باشد. مقدار پیشفرض آن 0L است.
مثال
long a = 100000L; long b = -200000L;
نوع دادهای float
نوع دادهای float یک نمایش عدد اعشاری با دقت واحد (single-precision) و به صورت ۳۲ بیتی مطابق با استاندارد IEEE 754 است. این نوع داده بهویژه برای صرفهجویی در حافظه در آرایههای بزرگ از اعداد اعشاری کاربرد دارد. مقدار پیشفرض آن 0.0f است. با این حال، مهم است بدانید که نوع دادهای float برای مقادیر دقیق مانند ارز مناسب نیست، زیرا ممکن است در محاسبات اعشاری خطای گرد کردن رخ دهد.
مثال
float f1 = 234.5f;
نوع دادهای double
نوع دادهای double یک نمایش عدد اعشاری با دقت دو برابر (double-precision) و به صورت ۶۴ بیتی مطابق با استاندارد IEEE 754 است. این نوع داده معمولاً بهعنوان نوع پیشفرض برای مقادیر اعشاری استفاده میشود و بهطور کلی انتخاب پیشفرض است. نوع دادهای double نباید هرگز برای مقادیر دقیق مانند ارز مورد استفاده قرار گیرد، زیرا دقت لازم را ندارد. مقدار پیشفرض آن 0.0d است.
مثال
double d1 = 123.4;
نوع دادهای boolean
نوع دادهای boolean نمایانگر یک بیت اطلاعات است و میتواند یکی از دو مقدار ممکن را نگه دارد: true (درست) یا false (نادرست). این نوع داده برای پرچمهای سادهای استفاده میشود که وضعیتهای درست یا نادرست (true/false) را دنبال میکنند. مقدار پیشفرض آن false است.
مثال
boolean one = true;
نوع دادهای char
نوع دادهای char یک نویسه ۱۶ بیتی یونیکد (Unicode) است که قادر به نمایش دامنه وسیعی از نویسهها از زبانها و نمادهای مختلف میباشد. دامنه آن از ‘\u0000’ (یا 0) تا ‘\uffff’ (یا 65,535 شامل) است. این نوع داده عمدتاً برای ذخیره نویسههای منفرد استفاده میشود.
مثال
char letterA = 'A'
مثالهایی از انواع دادهای اولیه
مثالهای زیر نحوه استفاده از انواع دادهای اولیهای که در بالا مورد بحث قرار گرفتند را نشان میدهند. ما از عملگر جمع برای انواع دادهای عددی استفاده کردهایم، در حالیکه متغیرهای boolean و char به همان صورت چاپ شدهاند.
public class JavaTester { public static void main(String args[]) { byte byteValue1 = 2; byte byteValue2 = 4; byte byteResult = (byte)(byteValue1 + byteValue2); System.out.println("Byte: " + byteResult); short shortValue1 = 2; short shortValue2 = 4; short shortResult = (short)(shortValue1 + shortValue2); System.out.println("Short: " + shortResult); int intValue1 = 2; int intValue2 = 4; int intResult = intValue1 + intValue2; System.out.println("Int: " + intResult); long longValue1 = 2L; long longValue2 = 4L; long longResult = longValue1 + longValue2; System.out.println("Long: " + longResult); float floatValue1 = 2.0f; float floatValue2 = 4.0f; float floatResult = floatValue1 + floatValue2; System.out.println("Float: " + floatResult); double doubleValue1 = 2.0; double doubleValue2 = 4.0; double doubleResult = doubleValue1 + doubleValue2; System.out.println("Double: " + doubleResult); boolean booleanValue = true; System.out.println("Boolean: " + booleanValue); char charValue = 'A'; System.out.println("Char: " + charValue); } }
خروجی
Byte: 6 Short: 6 Int: 6 Long: 6 Float: 6.0 Double: 6.0 Boolean: true Char: A
انواع دادهای غیر اولیه (مرجع/شیء) در جاوا
انواع دادهای غیر اولیه در جاوا از پیش تعریفشده نیستند. این نوع دادهها با استفاده از سازندههای تعریفشده (constructors) در کلاسها ساخته میشوند. آنها برای دسترسی به اشیاء مورد استفاده قرار میگیرند. این متغیرها برای یک نوع مشخص تعریف میشوند و نوع آنها قابل تغییر نیست. برای مثال: Employee
، Puppy
و غیره.
انواع دادهای غیر اولیه (مرجع/شیء) شامل موارد زیر هستند:
- String: رشته (String) یک کلاس در جاوا است و دنبالهای از نویسهها را نمایش میدهد.
- آرایهها (Arrays): آرایهها با کمک انواع دادهای اولیه ساخته میشوند و چندین مقدار از یک نوع را ذخیره میکنند.
- کلاسها (Classes): کلاسها نوع دادهای تعریفشده توسط کاربر هستند و شامل متغیرها و متدها میباشند.
- رابطها (Interfaces): رابطها نوعهای انتزاعی هستند که مجموعهای از متدها را مشخص میکنند.
مقدار پیشفرض هر متغیر مرجع (reference variable)، مقدار null
است. یک متغیر مرجع میتواند به هر شیء از نوع اعلامشده یا نوعهای سازگار با آن اشاره کند.
مثال
مثال زیر استفاده از انواع دادهای مرجع (یا شیء) را نشان میدهد.
// Creating an object of 'Animal' class Animal animal = new Animal("giraffe"); // Creating an object of 'String' class String myString = new String("Hello, World!");