جاوا یک زبان استاتیک تایپ و قوی تایپ است، زیرا در جاوا هر نوع دادهای (مانند عدد صحیح، کاراکتر، هگزادسیمال، عدد اعشاری فشرده و غیره) بهطور پیشفرض به عنوان بخشی از زبان برنامهنویسی تعریف شده است و تمام ثابتها یا متغیرهایی که برای یک برنامه خاص تعریف میشوند، باید با یکی از انواع دادههای جاوا توصیف شوند.
انواع دادهها در جاوا اندازهها و مقادیر مختلفی دارند که میتوانند در متغیرهایی ذخیره شوند که برای راحتی و شرایط خاص ایجاد شدهاند تا تمام موارد تست پوشش داده شوند.
جاوا دو دستهبندی دارد که انواع دادهها در آنها تقسیمبندی میشوند:
1. نوع دادههای اولیه (Primitive Data Type): مانندboolean، char، int، short، byte، long، float و double. Boolean با حرف بزرگ B یک کلاس پوششی برای نوع داده اولیه boolean در جاوا است.
2. نوع دادههای غیر اولیه یا نوع داده شیء (Non-Primitive Data Type or Object Data Type): مانند String، Array و غیره.
Example:
// Java Program to demonstrate int data-type
import java.io.*;
class GFG
{
public static void main (String[] args)
{
// declaring two int variables
int a = 10;
int b = 20;
System.out.println( a + b );
}
}
Output
30
حالا بیایید انواع مختلف دادههای اولیه و غیر اولیه را بررسی کنیم.

نوع دادههای اولیه در جاوا
دادههای اولیه تنها شامل مقادیر تک هستند و هیچ قابلیت خاصی ندارند. در جاوا ۸ نوع داده اولیه وجود دارد. این انواع داده در جدول زیر نشان داده شدهاند:

داده نوع boolean
نوع داده boolean نمایانگر یک مقدار منطقی است که میتواند یا true یا false باشد. از نظر مفهومی، این نوع داده نمایانگر یک بیت از اطلاعات است، اما اندازه واقعی که توسط ماشین مجازی استفاده میشود بستگی به پیادهسازی آن دارد و معمولاً حداقل یک بایت (هشت بیت) در عمل میباشد. مقادیر نوع boolean بهطور ضمنی یا صریح با استفاده از تبدیل نوعها به هیچ نوع دیگری تبدیل نمیشوند. با این حال، برنامهنویسان میتوانند در صورت نیاز کد تبدیل را بنویسند.
Syntax:
boolean booleanVar;
Size : Virtual machine dependent (typically 1 byte, 8 bits)
داده نوع byte
نوع داده byte یک عدد صحیح ۸ بیتی با مکمل دو است. این نوع داده برای ذخیرهسازی مقادیر در محدوده -128 تا 127 استفاده میشود. نوع داده byte برای صرفهجویی در مصرف حافظه در آرایههای بزرگ مفید است. از آنجا که این نوع داده تنها ۸ بیت فضا میگیرد، برای ذخیرهسازی دادههایی که به فضای زیادی نیاز ندارند، مانند مقادیر کوچک یا دادههایی که در مقیاس بزرگ در آرایهها ذخیره میشوند، کاربرد دارد.
Syntax:
byte byteVar;
Size : 1 byte (8 bits)
داده نوع short
نوع داده short یک عدد صحیح ۱۶ بیتی با مکمل دو است. مشابه با byte، نوع داده short زمانی استفاده میشود که صرفهجویی در حافظه اهمیت داشته باشد، بهویژه در آرایههای بزرگ که فضا محدود است. این نوع داده میتواند مقادیر را در محدوده -32,768 تا 32,767 ذخیره کند و بهطور معمول زمانی که نیاز به فضای کمتر از int باشد، اما همچنان باید اعداد بزرگتری نسبت به byte ذخیره شوند، کاربرد دارد.
Syntax:
short shortVar;
Size : 2 bytes (16 bits)
داده نوع int
نوع داده int یک عدد صحیح ۳۲ بیتی با مکمل دو است. این نوع داده میتواند مقادیر را در محدوده 2,147,483,648- تا 2,147,483,647 ذخیره کند. نوع داده int یکی از پرکاربردترین انواع داده در جاوا است و برای ذخیره اعداد صحیح در اکثر برنامهها استفاده میشود. چون ۳۲ بیت فضا میگیرد، برای مقادیر نسبتاً بزرگ مناسب است و در مواردی که نیاز به دقت بالاتر از short و byte باشد، کاربرد دارد.
Syntax:
int intVar;
Size : 4 bytes ( 32 bits )
داده نوع long
نوع داده long یک عدد صحیح ۶۴ بیتی با مکمل دو است. این نوع داده زمانی استفاده میشود که یک int برای نگهداری مقدار کافی نباشد و به دامنه وسیعتری نیاز باشد. به طور معمول برای ذخیرهسازی اعداد بسیار بزرگ یا برای انجام محاسباتی که نیاز به دقت بالاتر دارند، به کار میرود.
Syntax:
long longVar;
Size : 8 bytes (64 bits)
داده نوع float
نوع داده float یک عدد اعشاری ۳۲ بیتی با دقت تک (single-precision) طبق استاندارد IEEE 754 است. اگر نیاز به ذخیرهسازی اعداد اعشاری در آرایههای بزرگ دارید و به صرفهجویی در حافظه اهمیت میدهید، بهتر است از float به جای double استفاده کنید. اندازه نوع داده float برابر با ۴ بایت (۳۲ بیت) است.
Syntax:
float floatVar;
Size : 4 bytes (32 bits)
داده نوع double
نوع داده double یک عدد اعشاری ۶۴ بیتی با دقت دوگانه (double-precision) طبق استاندارد IEEE 754 است. برای مقادیر اعشاری، این نوع داده معمولاً گزینه پیشفرض است. اندازه نوع داده double برابر با ۸ بایت (۶۴ بیت) است.
این نوع داده برای زمانی مناسب است که نیاز به دقت بالاتر در عملیاتهای اعشاری دارید. در مقایسه با float، double دقت بیشتری دارد و برای ذخیرهسازی اعداد اعشاری بزرگتر و دقیقتر استفاده میشود.
Syntax:
double doubleVar;
Size : 8 bytes (64 bits)
یادآوری:
هر دو نوع داده float و double بهویژه برای محاسبات علمی طراحی شدهاند، جایی که خطاهای تقریب قابل قبول هستند. اگر دقت بالاتر از همه چیز مهمتر باشد، توصیه میشود از این نوع دادهها استفاده نکنید و به جای آن از کلاس BigDecimal استفاده کنید.
همچنین، توصیه میشود که خطاهای مربوط به گرد کردن در جاوا را مطالعه کنید.
داده نوع char
نوع داده char یک کاراکتر یونیکد ۱۶ بیتی است که اندازه آن ۲ بایت (۱۶ بیت) میباشد. این نوع داده برای ذخیره یک کاراکتر (مانند حرف یا نماد) استفاده میشود. در جاوا، هر مقدار char نمایانگر یک کاراکتر یونیکد است که میتواند شامل کاراکترهای متنی مختلف از زبانهای مختلف باشد.
Syntax:
char charVar;
Size : 2 bytes (16 bits)
چرا اندازه char در جاوا ۲ بایت است؟
برخلاف زبانهایی مانند C یا C++ که از مجموعه کاراکتر ASCII استفاده میکنند، جاوا از مجموعه کاراکتر یونیکد (Unicode) برای پشتیبانی از بینالمللی شدن (internationalization) استفاده میکند. یونیکد برای نمایش مجموعه وسیعی از کاراکترها از زبانهای مختلف، از جمله لاتین، یونانی، سیریلیک، چینی، عربی و غیره، به بیش از ۸ بیت نیاز دارد.
در نتیجه، جاوا برای ذخیره یک char از ۲ بایت استفاده میکند تا بتواند هر کاراکتر یونیکد را نمایندگی کند. این طراحی به جاوا این امکان را میدهد که بتواند به راحتی کاراکترهای مختلف از زبانهای مختلف را پشتیبانی کند و فراتر از محدودیتهای مجموعه ASCII برود.
Example:
// Java Program to Demonstrate Char Primitive Data Type
class GFG
{
public static void main(String args[])
{
// Creating and initializing custom character
char a = 'G';
// Integer data type is generally
// used for numeric values
int i = 89;
// use byte and short
// if memory is a constraint
byte b = 4;
// this will give error as number is
// larger than byte range
// byte b1 = 7888888955;
short s = 56;
// this will give error as number is
// larger than short range
// short s1 = 87878787878;
// by default fraction value
// is double in java
double d = 4.355453532;
// for float use 'f' as suffix as standard
float f = 4.7333434f;
// need to hold big range of numbers then we need
// this data type
long l = 12121;
System.out.println("char: " + a);
System.out.println("integer: " + i);
System.out.println("byte: " + b);
System.out.println("short: " + s);
System.out.println("float: " + f);
System.out.println("double: " + d);
System.out.println("long: " + l);
}
}
Output
char: G
integer: 89
byte: 4
short: 56
float: 4.7333436
double: 4.355453532
long: 12121
نوع دادههای غیر اولیه (ارجاعی)
نوع دادههای غیر اولیه (ارجاعی) شامل آدرسهای حافظه مقادیر متغیرها هستند، زیرا انواع ارجاعی مقادیر متغیرها را مستقیماً در حافظه ذخیره نمیکنند. این نوع دادهها شامل رشتهها (Strings)، اشیاء (Objects)، آرایهها (Arrays) و غیره هستند.
1- رشتهها (Strings)
رشتهها به عنوان یک آرایه از کاراکترها تعریف میشوند. تفاوت بین یک آرایه کاراکتری و یک رشته در جاوا این است که رشته برای ذخیرهسازی یک دنباله از کاراکترها در یک متغیر طراحی شده است، در حالی که یک آرایه کاراکتری مجموعهای از موجودیتهای جداگانه از نوع char است. برخلاف زبانهای C/C++، رشتهها در جاوا با یک کاراکتر null خاتمه نمییابند.
در جاوا، رشتهها به عنوان یک شیء از کلاس String پیادهسازی میشوند، که امکانات و متدهای مختلفی را برای کار با متن فراهم میآورد. این ویژگیها شامل جستجو، جایگزینی، و مقایسه رشتهها است.
Syntax: Declaring a string
<String_Type> <string_variable> = “<sequence_of_string>”;
Example:
// Declare String without using new operator
String s = "GeeksforGeeks";
// Declare String using new operator
String s1 = new String("GeeksforGeeks");
2- کلاس (Class)
یک کلاس یک الگوی یا پروتوتایپ تعریفشده توسط کاربر است که از آن اشیاء ایجاد میشود. این کلاس مجموعهای از ویژگیها یا متدهایی را که برای همه اشیاء یک نوع مشترک هستند، نمایان میکند. به طور کلی، اعلامیههای کلاس میتوانند شامل این اجزا باشند:
Modifiers(واژههای اصلاحی): یک کلاس میتواند عمومی (public) باشد یا دسترسی پیشفرض داشته باشد. برای اطلاعات بیشتر به مشخصکنندههای دسترسی برای کلاسها یا رابطها (interfaces) در جاوا مراجعه کنید.
نام کلاس: نام کلاس باید با یک حرف ابتدایی شروع شود (طبق قرارداد بهصورت بزرگ نوشته میشود).
کلاس والد (اگر وجود داشته باشد): نام کلاس والد (superclass)، اگر وجود داشته باشد، که با کلمهکلیدی extends پیش از آن قرار میگیرد. یک کلاس میتواند تنها یک والد داشته باشد.
رابطها (اگر وجود داشته باشند): فهرستی از رابطهایی که کلاس آنها را پیادهسازی میکند، اگر وجود داشته باشند، که با کلمهکلیدی implements پیش از آن قرار میگیرند. یک کلاس میتواند چندین رابط را پیادهسازی کند.
بدنه: بدنه کلاس که با براکتها { } احاطه شده است.
3- شیء (Object)
یک شیء واحد اصلی برنامهنویسی شیگرا است و نمایانگر موجودات دنیای واقعی میباشد. یک برنامه جاوا معمولاً چندین شیء ایجاد میکند که همانطور که میدانید، این اشیاء با فراخوانی متدها با یکدیگر تعامل دارند. یک شیء شامل موارد زیر است:
وضعیت (State): وضعیت شیء با ویژگیهای آن نمایان میشود. این ویژگیها خواص شیء را نشان میدهند.
رفتار (Behavior): رفتار شیء با متدهای آن نمایان میشود. این رفتار همچنین پاسخ شیء به اشیاء دیگر را منعطف میکند.
هویت (Identity): هویت شیء یک نام منحصر به فرد به آن میدهد و اجازه میدهد که یک شیء با سایر اشیاء تعامل داشته باشد.
4- رابط (Interface)
مانند یک کلاس، یک رابط میتواند متدها و متغیرهایی داشته باشد، اما متدهایی که در یک رابط اعلام میشوند به طور پیشفرض انتزاعی هستند (تنها امضای متد وجود دارد و بدنهای برای آنها تعریف نمیشود).
رابطها مشخص میکنند که یک کلاس باید چه کارهایی انجام دهد و نه چطور انجام دهد. رابط نقشه راه کلاس است.
رابطها در مورد قابلیتها هستند، مانند اینکه یک "بازیکن" (Player) ممکن است یک رابط باشد و هر کلاسی که آن را پیادهسازی کند، باید قادر به انجام عملیاتی مانند move() باشد. بنابراین، یک رابط مجموعهای از متدها را مشخص میکند که یک کلاس باید آنها را پیادهسازی کند.
اگر یک کلاس یک رابط را پیادهسازی کند و بدنه متدها را برای تمام توابع مشخصشده در رابط فراهم نکند، آن کلاس باید بهعنوان انتزاعی (abstract) اعلام شود.
یک مثال از یک رابط در کتابخانه جاوا، رابط Comparator است. اگر یک کلاس این رابط را پیادهسازی کند، میتواند برای مرتبسازی یک مجموعه استفاده شود.
5- آرایه (Array)
یک آرایه گروهی از متغیرهای مشابه است که با یک نام مشترک شناخته میشوند. آرایهها در جاوا متفاوت از زبانهای C/C++ عمل میکنند. نکات مهم در مورد آرایهها در جاوا به شرح زیر است:
در جاوا، تمامی آرایهها بهصورت داینامیک تخصیص داده میشوند.
از آنجا که آرایهها در جاوا اشیاء هستند، میتوانیم طول آنها را با استفاده از عضو length پیدا کنیم. این با C/C++ تفاوت دارد که در آن طول با استفاده از size بدست میآید.
یک متغیر آرایه در جاوا میتواند مانند سایر متغیرها با استفاده از [] بعد از نوع داده تعریف شود.
متغیرهای داخل آرایه بهصورت مرتب هستند و هرکدام یک ایندکس دارند که از ۰ شروع میشود.
آرایهها در جاوا میتوانند بهعنوان یک فیلد استاتیک، یک متغیر محلی یا یک پارامتر متد استفاده شوند.
اندازه آرایه باید با یک مقدار از نوع int مشخص شود و نمیتوان از long یا short استفاده کرد.
کلاس والد مستقیم یک نوع داده آرایه، Object است.
هر نوع داده آرایه دو رابط Cloneable و java.io.Serializable را پیادهسازی میکند.
نکات کلیدی برای یادآوری
چککردن نوع داده (Strong Typing): جاوا چککردن دقیق نوع دادهها را در زمان کامپایل اجباری میکند که باعث کاهش خطاهای زمان اجرا میشود.
کارایی حافظه: انتخاب نوع داده صحیح بر اساس محدوده و دقت مورد نیاز به مدیریت مؤثر حافظه کمک میکند.
ثبات رشتهها (Immutability of Strings): رشتهها در جاوا پس از ایجاد شدن قابل تغییر نیستند که این ویژگی امنیت را در محیطهای چندرشتهای (multithreaded) تضمین میکند.
طول آرایهها (Array Length): طول آرایهها در جاوا پس از اعلام ثابت است و میتوان آن را با استفاده از ویژگی length دسترسی داشت.
درک نوعهای داده در جاوا برای برنامهنویسی مؤثر ضروری است. هر نوع داده کاربردها و محدودیتهای خاص خود را دارد که انتخاب نوع صحیح برای هر کار، استفاده بهینه از حافظه و عملکرد برنامه را تضمین میکند، در حالی که سیستم چککردن نوع جاوا میتواند خطاها را در مراحل اولیه توسعه شناسایی کند.
سؤالات متداول – نوع دادهها در جاوا
نوع دادهها در جاوا چیست؟
نوع دادهها در جاوا اندازهها و مقادیر مختلفی دارند که میتوانند در متغیرهایی که بر اساس راحتی و شرایط ساخته میشوند ذخیره شوند تا تمامی حالتهای آزمایشی را پوشش دهند.
۸ نوع داده اصلی که در جاوا استفاده میشود کدامند؟
در جاوا ۸ نوع داده اصلی (primitive) وجود دارد که عبارتند از:
boolean
byte
char
short
int
long
float
double
کدام نوع داده در جاوا نوع اولیه (Primitive) است؟
نوعهای داده اولیه در جاوا انواعی هستند که میتوانند یک مقدار واحد را ذخیره کنند و هیچ قابلیت خاصی ارائه نمیدهند.
چرا در جاوا نوع داده char از ۲ بایت استفاده میکند و \u0000 چیست؟
نوع داده char در جاوا از ۲ بایت استفاده میکند زیرا از سیستم یونیکد (Unicode) به جای سیستم ASCII استفاده میکند. \u0000 کمترین مقدار در سیستم یونیکد است.

جمعبندی
نوعهای داده در جاوا پایه و اساس برنامهنویسی مؤثر را تشکیل میدهند. درک تفاوت بین نوعهای اولیه (Primitive) و غیراولیه (Reference)، انتخاب صحیح دادهها برای بهینهسازی حافظه و عملکرد برنامه را تضمین میکند. از نوعهای عددی گرفته تا رشتهها و کلاسها، هر نوع داده کاربرد خاص خود را دارد و دانستن نحوه استفاده از آنها، مهارت یک برنامهنویس جاوا را به سطح بالاتری میبرد.
حالا نوبت شماست. اگر هنوز سوالی در مورد نوعهای داده در جاوا دارید یا تجربهای جالب از کار با آنها داشتهاید، همین حالا در قسمت کامنتها با ما به اشتراک بگذارید. 😊
نظرات 0
برای ارسال نظر وارد حساب کاربری شوید.
هنوز نظری ثبت نشده؛ اولین نفر باشید.