مفهوم الأعداد في جافا
أعداد: تعني numbers في اللغة الإنجليزية, و نحن عادةً ما نستخدم أنواع البيانات البدائية ( Primitive Data Types ) لتخزين الأعداد.
أي لتعريف متغير بهدف تخزين عدد, نقوم بتعريفه كـ int أو float أو double إلخ..
مثال
int a = 10; short b = 50; float c = 10.5f; double d = 37.002;
أحياناً يضطر المبرمج أن يستخدم الكائن للنوع و ليس الشكل البدائي للنوع.
من أجل ذلك, جافا تقدم لنا wrapper classes.
ما معنى wrapper classes ؟
كل نوع بيانات بدائي في جافا له كلاس يمثله, و يكون من نفس إسمه, أمثلة:
النوع
intيمكن تمثيله بالكلاسInteger.النوع
floatيمكن تمثيله بالكلاسFloat.النوع
byteيمكن تمثيله بالكلاسByte.النوع
doubleيمكن تمثيله بالكلاسDouble.النوع
shortيمكن تمثيله بالكلاسShort.النوع
longيمكن تمثيله بالكلاسLong.
إذاً الـ wrapper classes هم كل الكلاسات التي تمثل أنواع البيانات البدائية.
هذه الصورة تظهر لك جميع الكلاسات التي تمثل الأعداد.
ما هي فائدة الـ wrapper classes ؟
فكرة الـ wrapper classes جعلنا قادرين على معاملة هذه الأنواع ككائنات و بناء دوال خاصة لهم و لكن المبرمج العادي قد لا يتعامل بتاتاً مع الـ wrapper classes لأنه نادراً ما يحتاج لهم.
مصطلحات هامة
عملية تحويل النوع البدائي لكائن من نفس النوع تسمى boxing.
عملية إرجاع قيمة الكائن إلى النوع البدائي لهذا الكائن تسمى unboxing.
مثال
Integer a = 10; // int و ليس Integer هنا ستكون a لأن نوع القيمة التي خزنها المتغير boxing هذه العملية تسمى int b = a + 15; // 15 قبل إضافتها على int لأنه سيتم تحويل قيمته للنوع a بالنسبة للمتغير unboxing هذه العملية تسمى
شرح الكود
Integer a = 10:
aيمثل كائن نوعهIntegerقيمته 10.int b = a + 15:
هنا سيتم تحويل قيمة الكائنaإلى النوعintثم إضافة 15 عليها و تخزين الناتج في المتغيرb.
دوال الكلاس Math في جافا
إنتبه
ستلاحظ أن جميع الدوال المذكورة في الجدول تتعامل مع أعداد نوعها double و ترجع قيم نوعها double أيضاً.
السبب في ذلك أن النوع double يجعلك قادر على تمرير أي عدد سواء كان نوعه int, long أو float بدون الحاجة إلى تحويله.
الكلاس Math هو كلاس جاهز في جافا, يحتوي على دوال تتعلق بالرياضيات, ذكرنا بعضها في هذا الجدول.
| إسم الدالة مع تعريفها | |
|---|---|
public static double abs(double d)
ترجع القيمة المطلقة للعدد الذي نمرره لها مكان البارامتير d.تابع القراءة » |
|
public static double ceil(double d)
ترجع العدد الصحيح الأكبر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double floor(double d)
ترجع العدد الصحيح الأصغر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double rint(double d)
ترجع أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static long round(double d)
ترجع أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double max(double a, double b)
ترجع العدد الأكبر بين العددين اللذين نمررهما لها مكان الباراميترين a و b.تابع القراءة » |
|
public static double min(double a, double b)
ترجع العدد الأصغر بين العددين اللذين نمررهما لها مكان الباراميترين a و b.تابع القراءة » |
|
public static double exp(double d)
ترجع قيمة الـ exponential للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double log(double d)
ترجع قيمة الـ logarithm للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double pow(double a, double b)
تضاعف قيمة الباراميتر a بقيمة الباراميتر b ثم ترجع الناتج.تابع القراءة » |
|
public static double sqrt(double d)
ترجع قيمة الجزر التربيعي (square root) للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double sin(double d)
ترجع قيمة الـ sine للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double cos(double d)
ترجع قيمة الـ cosine للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double tan(double d)
ترجع قيمة الـ tangent للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double asin(double d)
ترجع قيمة الـ arc sine للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double acos(double d)
ترجع قيمة الـ arc cosine للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double atan(double d)
ترجع قيمة الـ arc tangent للعدد الذي نمرره لها مكان الباراميتر d.تابع القراءة » |
|
public static double toDegrees(double d)
تحول قيمة العدد الذي نمرره لها مكان الباراميتر d لـ Degrees ثم ترجع الناتج.تابع القراءة » |
|
public static double toRadians(double d)
تحول قيمة العدد الذي نمرره لها مكان الباراميتر d لـ Radians ثم ترجع الناتج.تابع القراءة » |
|
public static double random()
ترجع عدد عشوائي بين 0 و 1.تابع القراءة » |
|
ثوابت الكلاس Math في جافا
الكلاس Math يحتوي أيضاً على الثوابت التالية التي تتعلق بالرياضيات.
| إسم الثابت | تعريفه |
|---|---|
E
| يحتوي على قيمة الـ Exponential. |
PI
| يحتوي على قيمة الـ PI. |
دوال الأعداد في جافا التي تستخدم مع كائنات الـ wrapper classes
ذكرنا بعض الدوال التي تستخدم مع الـ wrapper classes في هذا الجدول.
| إسم الدالة مع تعريفها | |
|---|---|
public ... xxxValue()
عبارة عن مجموعة دوال تستخدم لتحويل قيمة الكائن ( الذي يمثل عدد ) لقيمة بدائية تحددها الدالة التي تم إستدعاءها من الكائن و ترجعها.تابع القراءة » |
|
public int compareTo(T o)
تقارن قيمة الكائن الذي قام باستدعائها و الذي يمثل عدد ما مع قيمة الكائن التي نمررها لها مكان الباراميتر o.ترجع 0 إن كانت قيمتهما متساوية, و ترجع 1 إن كانت قيمة الكائن الذي إستدعاها أكبر, و ترجع 1- إن كانت قيمة الكائن الذي إستدعاها أصغر. تابع القراءة » |
|
public boolean equals(Object o)
تقارن قيمة الكائن الذي قام باستدعائها و الذي يمثل عدد ما مع قيمة الكائن التي نمررها لها مكان الباراميتر o.ترجع true إن كانت قيمتهما متساوية, و ترجع false إن لم تكن كذلك.تابع القراءة » |
|
public static Integer valueOf(String s)
تحول قيمة الكائن s التي نمررها لها و التي تمثل عدد في الأساس لقيمة نوعها Integer.تابع القراءة » |
|
public String toString()
ترجع قيمة الكائن الذي قام باستدعائها و الذي يمثل عدد ما كـ String.ملاحظة: تحويل القيمة العددية لقيمة نصية مفيد جداً في بعض الحالات و يجعل المبرمج يستفيد من دوال هي في الأصل ليست للتعامل مع الأعداد. تابع القراءة » |
|
public ... parseXxx(String s)
عبارة عن مجموعة دوال تستخدم للحصول على القيمة البدائية لعدد مخزن كـ String.تابع القراءة » |
|
Java الدالة abs()
تعريفها
ترجع القيمة المطلقة للعدد الذي نمرره لها كـ argument عند إستدعائها.
بناؤها
هناك أربع أشكال من هذه الدالة. أي يمكن إستدعاءها بأربع طرق مختلفة.
// الشكل الأول public static double abs(double d) // الشكل الثاني public static float abs(float f) // الشكل الثالث public static int abs(int i) // الشكل الرابع public static long abs(long lng)
باراميترات
تقبل أي نوع من الأعداد البدائية كـ argument.
قيمة الإرجاع
ترجع القيمة المطلقة للعدد الذي نضعه لها كـ argument و ترجعها من نفس نوعه.
أي إذا مررت لها قيمة نوعها double فأنت بذلك تستدعي الدالة الأولى التي ترجع قيمة مطلقة نوعها double.
مثال
public class Main {
public static void main(String[] args) {
int i = -130;
double b = -0.15;
Integer I = -5;
System.out.println( Math.abs(i) );
System.out.println( Math.abs(b) );
System.out.println( Math.abs(I) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
130 0.15 5
Java الدالة ceil()
تعريفها
ترجع العدد الصحيح الأكبر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double ceil(double d)
باراميترات
العدد الذي نمرره لها مكان الباراميتر d سيتم إرجاع قيمة جديدة بناءاً على قيمته.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل العدد الصحيح الأكبر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double d = 20.955;
float f = 10.14f;
System.out.println( Math.ceil(d) );
System.out.println( Math.ceil(f) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
21.0 11.0
Java الدالة floor()
تعريفها
ترجع العدد الصحيح الأصغر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double floor(double d)
باراميترات
العدد الذي نمرره لها مكان الباراميتر d سيتم إرجاع قيمة جديدة بناءاً على قيمته.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل العدد الصحيح الأصغر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double d = 20.955;
float f = 10.14f;
System.out.println( Math.floor(d) );
System.out.println( Math.floor(f) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
20.0 10.0
Java الدالة rint()
تعريفها
ترجع أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double rint(double d)
باراميترات
العدد الذي نمرره لها مكان الباراميتر d سيتم إرجاع قيمة جديدة بناءاً على قيمته.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double d1 = -20.375;
double d2 = -9.5;
double d3 = 4.9;
double d4 = 99.77;
System.out.println( Math.rint(d1) );
System.out.println( Math.rint(d2) );
System.out.println( Math.rint(d3) );
System.out.println( Math.rint(d4) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
-20.0 -10.0 5.0 100.0
Java الدالة round()
تعريفها
ترجع أقرب عدد صحيح للعدد الذي نضعه لها كـ argument عند إستدعاءها.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public static long round(double d) // الشكل الثاني public static int round(float f)
باراميترات
تقبل النوع double أو float كـ argument.
قيمة الإرجاع
إذا مررت لها قيمة نوعها
doubleفأنت بذلك تستدعي الدالة الأولى التي ترجع أقرب عدد صحيح لهذه القيمة كـlong.إذا مررت لها قيمة نوعها
floatفأنت بذلك تستدعي الدالة الثاني التي ترجع أقرب عدد صحيح لهذه القيمة كـint.
مثال
public class Main {
public static void main(String[] args) {
double d1 = 20.375;
double d2 = 9.6;
float f1 = 120.123f;
float f2 = 99.77f;
System.out.println( Math.round(d1) );
System.out.println( Math.round(d2) );
System.out.println( Math.round(f1) );
System.out.println( Math.round(f2) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
20 10 120 100
Java الدالة max()
تعريفها
ترجع العدد الأكبر بين العددين اللذين نمررهما لها مكان الباراميترين a و b.
بناؤها
هناك أربع أشكال من هذه الدالة. أي يمكن إستدعاءها بأربع طرق مختلفة.
// الشكل الأول public static double max(double a, double b) // الشكل الثاني public static float max(float a, float b) // الشكل الثالث public static int max(int a, int b) // الشكل الرابع public static long max(long a, long b)
باراميترات
يمكن تمرير عددين من أي نوع لها عند إستدعائها مكان الباراميترين a و b و سيقوم مترجم لغة جافا بإستدعاء الدالة المناسبة لنوع القيم التي قمت بتمريرها.
قيمة الإرجاع
إذا مررت لها قيمتين نوعهما
doubleفأنت بذلك تستدعي الدالة الأولى التي ترجع أكبر عدد بينهما كـdouble.إذا مررت لها قيمتين نوعهما
floatفأنت بذلك تستدعي الدالة الثانية التي ترجع أكبر عدد بينهما كـfloat.إذا مررت لها قيمتين نوعهما
intفأنت بذلك تستدعي الدالة الثالثة التي ترجع أكبر عدد بينهما كـint.إذا مررت لها قيمتين نوعهما
longفأنت بذلك تستدعي الدالة الرابعة التي ترجع أكبر عدد بينهما كـlong.
مثال
public class Main {
public static void main(String[] args) {
System.out.println( Math.max(10, 20) );
System.out.println( Math.max(7.5, 3.2) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
20 7.5
Java الدالة min()
تعريفها
ترجع العدد الأصغر بين العددين اللذين نمررهما لها مكان الباراميترين a و b.
بناؤها
هناك أربع أشكال من هذه الدالة. أي يمكن إستدعاءها بأربع طرق مختلفة.
// الشكل الأول public static double min(double a, double b) // الشكل الثاني public static float min(float a, float b) // الشكل الثالث public static int min(int a, int b) // الشكل الرابع public static long min(long a, long b)
باراميترات
يمكن تمرير عددين من أي نوع لها عند إستدعائها مكان الباراميترين a و b و سيقوم مترجم لغة جافا بإستدعاء الدالة المناسبة لنوع القيم التي قمت بتمريرها.
قيمة الإرجاع
إذا مررت لها قيمتين نوعهما
doubleفأنت بذلك تستدعي الدالة الأولى التي ترجع أصغر عدد بينهما كـdouble.إذا مررت لها قيمتين نوعهما
floatفأنت بذلك تستدعي الدالة الثانية التي ترجع أصغر عدد بينهما كـfloat.إذا مررت لها قيمتين نوعهما
intفأنت بذلك تستدعي الدالة الثالثة التي ترجع أصغر عدد بينهما كـint.إذا مررت لها قيمتين نوعهما
longفأنت بذلك تستدعي الدالة الرابعة التي ترجع أصغر عدد بينهما كـlong.
مثال
public class Main {
public static void main(String[] args) {
System.out.println( Math.min(10, 20) );
System.out.println( Math.min(7.5, 3.2) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
10 3.2
Java الدالة exp()
تعريفها
ترجع قيمة الـ exponential للعدد الذي نمرره لها مكان الباراميتر d.
في الرياضيات يرمز للـ exponential بالحرف e, و قيمته تساوي 2.718281828459045 و يمكننا الحصول عليها من الكلاس Math هكذا Math.E.
بناؤها
public static double exp(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ exponential للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double d = 10.55;
System.out.println( Math.exp(d) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
38177.43831180172
Java الدالة log()
تعريفها
ترجع قيمة الـ logarithm للعدد الذي نمرره لها مكان الباراميتر d.
يرمز لها بـ log في الرياضيات.
بناؤها
public static double log(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ logarithm للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double d = 10.55;
System.out.println( Math.log(d) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
2.3561258599220753
Java الدالة pow()
تعريفها
تضاعف قيمة الباراميتر a بقيمة الباراميتر b ثم ترجع الناتج.
بناؤها
public static double pow(double a, double b)
باراميترات
مكان الباراميترين a و b نمرر لها قيمتين من النوع double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل ناتج عملية مضاعفة قيمة الباراميتر a بقيمة الباراميتر b.
مثال
public class Main {
public static void main(String[] args) {
double a = 5;
double b = 2;
System.out.println( a + " ^ " + b + " = " + Math.pow(a, b) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
5 ^ 2 = 25.0
Java الدالة sqrt()
تعريفها
ترجع قيمة الجزر التربيعي (square root) للعدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double sqrt(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الجزر التربيعي للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 25;
System.out.println( Math.sqrt(a) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
5.0
Java الدالة sin()
تعريفها
ترجع قيمة الـ sine للعدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double sin(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ sine للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 25;
System.out.println( Math.sin(a) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
-0.13235175009777303
Java الدالة cos()
تعريفها
ترجع قيمة الـ cosine للعدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double cos(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ cosine للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 25;
System.out.println( Math.cos(a) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
0.9912028118634736
Java الدالة tan()
تعريفها
ترجع قيمة الـ tangent للعدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double tan(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ tangent للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 25;
System.out.println( Math.tan(a) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
-0.13352640702153587
Java الدالة asin()
تعريفها
ترجع قيمة الـ arc sine للعدد الذي نمرره لها مكان الباراميتر d.
القيمة التي نضعها يجب أن تكون بين 1- و 1 أو سيعطينا NaN.
بناؤها
public static double asin(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ arc sine للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 0.5;
double b = 4;
System.out.println( Math.asin(a) );
System.out.println( Math.asin(b) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
0.5235987755982989 NaN
Java الدالة acos()
تعريفها
ترجع قيمة الـ arc cosine للعدد الذي نمرره لها مكان الباراميتر d.
القيمة التي نضعها يجب أن تكون بين 1- و 1 أو سيعطينا NaN.
بناؤها
public static double acos(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ arc cosine للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 0.5;
double b = 4;
System.out.println( Math.acos(a) );
System.out.println( Math.acos(b) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
1.0471975511965979 NaN
Java الدالة atan()
تعريفها
ترجع قيمة الـ arc tangent للعدد الذي نمرره لها مكان الباراميتر d.
بناؤها
public static double atan(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ arc tangent للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 40.5;
System.out.println( Math.atan(a) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
1.5461099847392972
Java الدالة toDegrees()
تعريفها
تحول قيمة العدد الذي نمرره لها مكان الباراميتر d لـ Degrees ثم ترجع الناتج.
بناؤها
public static double toDegrees(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ degrees للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 15.0;
System.out.println( Math.toDegrees(a) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
859.4366926962349
Java الدالة toRadians()
تعريفها
تحول قيمة العدد الذي نمرره لها مكان الباراميتر d لـ Radians ثم ترجع الناتج.
بناؤها
public static double toRadians(double d)
باراميترات
مكان الباراميتر d نمرر لها عدد نوعه double.
قيمة الإرجاع
ترجع قيمة نوعها double تمثل قيمة الـ Radians للعدد الذي نمرره لها مكان الباراميتر d.
مثال
public class Main {
public static void main(String[] args) {
double a = 15.0;
System.out.println( Math.toRadians(a) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
0.2617993877991494
Java الدالة random()
تعريفها
هذه الدالة تستخدم لتوليد عدد عشوائي بين 0.0 و 1.0.
إذاً, نطاق الأعداد التي ترجعها هو: 0.0 <= Math.random() < 1.0.
بناؤها
public static double random()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع عدد عشوائي نوعه double و قيمته بين 0.0 و 1.0
المثال الأول
public class Main {
public static void main(String[] args) {
System.out.println( Math.random() );
System.out.println( Math.random() );
System.out.println( Math.random() );
}
}
•سنحصل على أي نتيجة عشوائية بين 0.0 و 1.0 عند التشغيل كالتالي.
0.8630498170020632 0.7316381331323908 0.9113637080594214
ملاحظة
يمكننا تغيير نطاق الأعداد التي يمكن أن ترجعها الدالة باستخدام العمليات الحسابية.
فمثلاً بكل بساطة نستطيع ضرب العدد الذي ترجعه الدالة بـ 10 فيصبح النطاق بين 0.0 <= Math.random() < 10.0.
المثال التالي يعلمك كيف تستطيع تكبير النطاق الذي ترجعه الدالة random().
المثال الثاني
public class Main {
public static void main(String[] args) {
System.out.println( Math.random()*10 );
System.out.println( Math.random()*10 );
System.out.println( Math.random()*10 );
}
}
•سنحصل على أي نتيجة عشوائية بين 0.0 و 10.0 عند التشغيل كالتالي.
7.086263300934275 2.0961565338384425 4.140472473471983
Java ثوابت الكلاس Math
ثوابت الكلاس Math
الثوابت هي متغيرات تحتوي على قيم ثابتة لا يمكن تغيير قيمها. ستتعرف على الثوابت في دروس لاحقة.
الكلاس Math يحتوي على الثوابت التالية:
الثابت
PIيحتوي على قيمة الـ PI و التي تساوي3.141592653589793.الثابت
Eيحتوي على قيمة الـ Exponential و التي تساوي2.718281828459045.
مثال
public class Main {
public static void main(String[] args) {
// PI هنا قمنا بعرض قيمة الثابت
System.out.println( "PI = " + Math.PI );
// E هنا قمنا بعرض قيمة الثابت
System.out.println( "E = " + Math.E );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
PI = 3.141592653589793 E = 2.718281828459045
Java الدالة xxxValue()
تعريفها
عبارة عن مجموعة دوال لهم نفس العمل و هو تحويل قيمة العدد المتمثلة بكائن لقيمة بدائية تحددها الدالة التي تم إستدعاءها من الكائن و ترجعها.
بناؤها
// الدالة الأولى public byte byteValue() // الدالة الثانية public short shortValue() // الدالة الثالثة public int intValue() // الدالة الرابعة public long longValue() // الدالة الخامسة public float floatValue() // الدالة السادسة public double doubleValue()
باراميترات
لا يقبلون أي باراميتر.
قيمة الإرجاع
يرجعون القيم البدائية للكائنات.
مثال
public class Main {
public static void main(String[] args) {
Integer a = 10;
System.out.println( a.byteValue() ); // byte هنا سيتم تحويل قيمة المتغير للنوع
System.out.println( a.shortValue() ); // short هنا سيتم تحويل قيمة المتغير للنوع
System.out.println( a.intValue() ); // int هنا سيتم تحويل قيمة المتغير للنوع
System.out.println( a.longValue() ); // long هنا سيتم تحويل قيمة المتغير للنوع
System.out.println( a.floatValue() ); // float هنا سيتم تحويل قيمة المتغير للنوع
System.out.println( a.doubleValue() ); // double هنا سيتم تحويل قيمة المتغير للنوع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
10 10 10 10 10.0 10.0
Java الدالة compareTo()
تعريفها
تقارن قيمة الكائن الذي قام باستدعائها و الذي يمثل عدد ما مع قيمة الكائن التي نمررها لها مكان الباراميتر o.
يمكن إستخدام هذه الدالة لمقارنة أي نوع من أنواع البيانات المرجعية (Object Data Types) التي تمثل أعداد مثل: Integer - Float - Double إلخ..
ملاحظة: الكائن الذي يستدعيها و الكائن الذي نمرره لها يجب أن يكونا من نفس النوع.
بناؤها
public int compareTo(T o)
باراميترات
نضع لها كائن يمثل عدد كباراميتر.
قيمة الإرجاع
ترجع 0 إذا كانت قيمة الكائن الذي قام باستدعائها تساوي قيمة الكائن الذي نمرره لها مكان الباراميتر
o.ترجع 1 إذا كانت قيمة الكائن الذي قام باستدعائها أكبر من قيمة الكائن الذي نمرره لها مكان الباراميتر
o.ترجع 1- إذا كانت قيمة الكائن الذي قام باستدعائها أصغر من قيمة الكائن الذي نمرره لها مكان الباراميتر
o.
مثال
public class Main {
public static void main(String[] args) {
Integer a = 10;
Integer b = 20;
Integer c = 5;
Integer d = 10;
System.out.println( a.compareTo(b) ); // b أصغر من a هنا سترجع 1- لأن
System.out.println( a.compareTo(c) ); // c أكبر من a هنا سترجع 1 لأن
System.out.println( a.compareTo(d) ); // d تساوي من a هنا سترجع 0 لأن
}
}
•سنحصل على النتيجة التالية عند التشغيل.
-1 1 0
Java الدالة equals()
تعريفها
تقارن قيمة الكائن الذي قام باستدعائها و الذي يمثل عدد ما مع قيمة الكائن التي نمررها لها مكان الباراميتر o.
يمكن إستخدام هذه الدالة لمقارنة أي نوع من أنواع البيانات المرجعية (Object Data Types) التي تمثل أعداد مثل: Integer - Float - Double إلخ..
ملاحظة: الكائن الذي يستدعيها و الكائن الذي نمرره لها يجب أن يكونا من نفس النوع.
بناؤها
public boolean equals(Object o)
باراميترات
نضع لها كائن من نفس النوع كباراميتر.
قيمة الإرجاع
ترجع
trueإذا كانت قيمة الكائن الذي قام باستدعائها تساوي قيمة الكائن التي نمررها لها مكان الباراميترo.ترجع
falseإذا كانت قيمة الكائن الذي قام باستدعائها لا تساوي قيمة الكائن التي نمررها لها مكان الباراميترo.
مثال
public class Main {
public static void main(String[] args) {
Integer a = 10;
Integer b = 10;
Integer c = 50;
System.out.println( a.equals(b) ); // b تساوي قيمة a لأن قيمة true هنا سترجع
System.out.println( a.equals(c) ); // c لا تساوي قيمة a لأن قيمة false هنا سترجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true false
Java الدالة Integer valueOf()
تعريفها
تحول القيمة التي نمررها لها عند إستدعائها كقيمة نوعها Integer و ترجعها.
القيمة التي نمررها لها يمكن أن يكون نوعها int أو String.
بناؤها
هناك ثلاث أشكال من هذه الدالة. أي يمكن إستدعاءها بثلاث طرق مختلفة.
// الشكل الأول public static Integer valueOf(int i) // الشكل الثاني public static Integer valueOf(String s) // الشكل الثالث public static Integer valueOf(String s, int radix)
باراميترات
الباراميتر
iنوعهintو يمثل العدد الذي سيتم إرجاعه ككائن من الكلاسInteger.الباراميتر
sنوعهStringو يمثل العدد ( كنص ) الذي سيتم إرجاعه ككائن من الكلاسInteger.الباراميتر
radixنوعهintو هو عدد عادي يستخدم لتحديد طريقة تحويل قيمة الباراميترsلكائن من الكلاسInteger.
ملاحظة: عند إضافة radix فإن قيمة الباراميترsالتي نمررها تمثل عدد binary أو octal أو decimal أو hexadecimal.
الـradixيمكن أن يكون 2 أو 8 أو 10 أو 16 بالترتيب كما فوق.
قيمة الإرجاع
valueOf(int i): ترجع قيمة العدد التي نمررها مكان المتغيرiككائن نوعهInteger.valueOf(String s): ترجع قيمة العدد التي نمررها كنص مكان الكائنsككائن نوعهInteger.valueOf(String s, int radix): ترجع قيمة العدد التي نمررها كنص مكان الكائنsككائن نوعهIntegerعلى حسب قيمة المتغيرradix.
مثال
public class Main {
public static void main(String[] args) {
// a و خزنها في الكائن Integer لقيمة نوعها int هنا قمنا بتحويل القيمة 14 التي تعتبر من النوع
Integer a = Integer.valueOf(14);
// b و خزنها في الكائن Integer لقيمة نوعها String هنا قمنا بتحويل القيمة 80 التي تعتبر من النوع
Integer b = Integer.valueOf("80");
// b و خزنها في الكائن Integer لقيمة نوعها Hexadecimal و تمثل عدد مكتوب بالوحدة String هنا قمنا بتحويل القيمة 80 التي تعتبر من النوع
Integer c = Integer.valueOf("80", 16);
// c و b و a هنا قمنا بطابعة القيم التي تم تخزينها في الكائنات
System.out.println( a );
System.out.println( b );
System.out.println( c );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
14 80 128
Java الدالة toString()
تعريفها
ترجع قيمة الكائن الذي قام باستدعائها و الذي يمثل عدد ما كـ String.
أي تجعلك قادر على معاملة الكائن (الذي يمثل عدد) كنص و هذا الشيء مهم جداً و سترى فائدته في الأمثلة.
بناؤها
public String toString()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع قيمة الكائن الذي قام باستدعائها و الذي يمثل عدد ما كـ String.
المثال الأول
public class Main {
public static void main(String[] args) {
Integer a = 1000;
// ثم قمنا بعرضها String لقيمة نوعها a هنا قمنا بتحويل قيمة الكائن
System.out.println( a.toString() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
1000
الآن, بما أن القيمة التي ترجعها الدالة toString() عبارة عن قيمة نصية String نستطيع إستخدام جميع الدوال الخاصة بالـString على هذا القيمة.
في المثال التالي سنستخدم الدالة length() على النص الذي سترجعه الدالة toString() لمعرفة عدد الأحرف التي يتألف منها هذا الـ String.
المثال الثاني
public class Main {
public static void main(String[] args) {
Integer a = 1000;
// من هذا الكائن الجديد و طبعنا ما أرجعتهlength() ثم قمنا باستدعاء الدالة String لقيمة نوعها a هنا قمنا بتحويل قيمة الكائن
// سترجع عدد أحرف هذا النص length() سترجع نص و الدالة toString() إذاً الدالة
System.out.println( a.toString().length() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
4
•إذاً إستطعنا معرفة حجم هذا العدد بكل سهولة بواسطة الدالة toString() التي سمحت بمعاملة العدد كنص.
Java الدالة parseXxx()
تعريفها
عبارة عن مجموعة دوال تستخدم للحصول على القيمة البدائية لعدد مخزن كـ String.
static تأخذ argument واحد أو اثنين.
بناؤها
ذكرنها هنا بعض الدوال مع الإشارة إلى أنه يوجد دوال أخرى لتحويل الأعداد المخزنة كـ String لنوع بدائي.
public static int parseInt(String s) public static int parseInt(String s, int radix) public static long parseLong(String s) public static long parseLong(String s, int radix) public static float parseFloat(String s) public static float parseFloat(String s, int radix) public static double parseDouble(String s) public static double parseDouble(String s, int radix)
باراميترات
في كل الدوال نلاحظ أنه يوجد باراميتر إسمه
sنوعهString. قيمة هذا الباراميتر يجب أن تكون موافقة للنوع الذي سترجعه الدالة كالتالي:في الدالة
parseInt()يجب أن تكون قيمة الباراميترsتمثل عدد نوعهint, أي عدد صحيح.في الدالة
parseLong()يجب أن تكون قيمة الباراميترsتمثل عدد نوعهlong, أي عدد صحيح.في الدالة
parseDouble()يجب أن تكون قيمة الباراميترsتمثل عدد نوعهfloat, أي عدد عشري.في الدالة
parseDouble()يجب أن تكون قيمة الباراميترsتمثل عدد نوعهdouble, أي عدد عشري.في بعض الدوال نلاحظ أنه يوجد باراميتر إسمه
radixنوعهint.
الـradixعبارة عن عدد عادي يستخدم لتحديد طريقة تحويل قيمة الباراميترsلقيمة بدائية.
ملاحظة: عند إضافة radix فإن قيمة الباراميترsالتي نمررها تمثل عدد binary أو octal أو decimal أو hexadecimal.
الـradixيمكن أن يكون 2 أو 8 أو 10 أو 16 بالترتيب كما فوق.
قيمة الإرجاع
parseInt(String s): ترجع النصSكعدد صحيح نوعهint, أي عدد لا يحتوي على فاصلة عشرية.parseInt(String s, int radix): ترجع النصSكعدد صحيح نوعهint, أي عدد لا يحتوي على فاصلة عشرية.parseLong(String s): ترجع النصSكعدد صحيح نوعهlong, أي عدد لا يحتوي على فاصلة عشرية.parseLong(String s, int radix): ترجع النصSكعدد صحيح نوعهlong, أي عدد لا يحتوي على فاصلة عشرية.parseFloat(String s): ترجع النصSكعدد عشري نوعهfloat, أي عدد يحتوي على فاصلة عشرية.parseFloat(String s, int radix): ترجع النصSكعدد عشري نوعهint, أي عدد يحتوي على فاصلة عشرية.parseDouble(String s): ترجع النصSكعدد عشري نوعهdouble, أي عدد يحتوي على فاصلة عشرية.parseDouble(String s, int radix): ترجع النصSكعدد عشري نوعهint, أي عدد يحتوي على فاصلة عشرية.
مثال
public class Main {
public static void main(String[] args) {
System.out.println( Integer.parseInt("20") );
System.out.println( Integer.parseInt("20", 8) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
20 16
معرفة التاريخ و الوقت الحالي في جافا
معرفة التاريخ و الوقت الحالي سهلة جداً في جافا. كل ما عليك فعله هو إنشاء كائن من الكلاس Date, ثم عرض قيمة هذا الكائن.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// date هنا قمنا بإنشاء تاريخ و وضعناه في الكائن
Date date = new Date();
// date هنا قمنا بعرض التاريخ الذي تم تخزينه في الكائن
System.out.println( date );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Tue Dec 22 11:20:42 EET 2015
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
الكلاس Date في جافا
الكلاس Date هو كلاس جاهز في جافا يستخدم لمعرفة التاريخ و الوقت. و يحتوي على عدة دوال للتعامل مع الوقت سواء لمقارنة وقت مع وقت أو لمعرفة وقت معين إلخ..
الكلاس Date يحتوي على إثنين كونستركتور ذكرناهما في الجدول التالي.
| الكونستركتور مع تعريفه | |
|---|---|
public Date()
هذا الكونستركتور يمهد الكائن الذي قام باستدعائه, بالوقت الحالي. |
|
public Date(long millisec)
هذا الكونستركتور يستخدم لتمهيد الكائن الذي يمثل الوقت بعدد بالـ milliseconds ( أي كل ثانية واحدة تساوي 1000 ).العدد الذي نضعه يمثل عدد الـ milliseconds الذي سيضاف على هذا التاريخ 1/1/1970 00:00:00 GMTأي إذا وضعت 0 ستحصل على هذا التاريخ كما هو. و إذا وضعت 1000 ستضيف ثانية على هذا التاريخ. و إذا وضعت 2000 ستضيف ثانيتين على هذا التاريخ و هكذا. |
|
دوال الكلاس Date في جافا
| إسم الدالة مع تعريفها | |
|---|---|
public boolean after(Date when)
ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على تاريخ أحدث من تاريخ الـ Date الذي نضعه كـ argument.تابع القراءة » |
|
public boolean before(Date when)
ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على تاريخ أقدم من تاريخ الـ Date الذي نضعه كـ argument.تابع القراءة » |
|
public Object clone()
ترجع نسخة ثانية من كائن الـ Date الذي قام باستدعائها.تابع القراءة » |
|
public int compareTo(Date anotherDate)
تقارن كائن الـ Date الذي قام باستدعائها مع كائن الـ Date الذي نضعه كـ argument.تابع القراءة » |
|
public boolean equals(Object obj)
ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على نفس قيمة الكائن الذي نضعه كـ argument.تابع القراءة » |
|
public long getTime()
ترجع عدد الـ milliseconds من تاريخ 1/1/1970 إلى تاريخ الوقت الذي تم به استدعاء هذه الدالة.تابع القراءة » |
|
public void setTime(long millisec)
تستخدم لتحديد الوقت إعتباراً من تاريخ 1/1/1970, العدد الذي نضعه يمثل عدد الثواني بالـ milliseconds.تابع القراءة » |
|
public int hashCode()
ترجع hash code لكائن الـ Date الذي قام باستدعائها.تابع القراءة » |
|
public String toString()
تحول قيمة الـ Date لقيمة نوعها String و ترجعها.تابع القراءة » |
|
الكلاس SimpleDateFormat في جافا
الكلاس SimpleDateFormat يستخدم للحصول على التاريخ و الوقت بالشكل الذي تريده, بمعنى أنه يسمح لك بتخصيص طريقة ظهور التاريخ و الوقت.
يتم تحديد شكل التاريخ و الوقت في كونستركتور الـ SimpleDateFormat بواسطة الأحرف الأبجدية. هنا يقال لهذه الأحرف user-defined patterns.
عند تعاملك مع الكلاس SimpleDateFormat يمكنك إستخدام جميع الأحرف من a ← z و من A ← Z.
عندما تقوم بتحديد طريقة ظهور التاريخ و الوقت فأنت بذلك تقوم بتحديد الـ format للتاريخ و الوقت.
بمعنى آخر الأحرف التي تضعها في كونستركتور الـ SimpleDateFormat مع بعضها تشكل الـ format.
هذا الجدول يحتوي على جميع الأحرف المستخدمة لتحديد الـ format في الكلاس SimpleDateFormat.
| الحرف | إستخدامه | مثال |
|---|---|---|
G |
لإظهار عصر التسمية | AD |
Y |
لإظهار السنة, وتكون مؤلفة من أربع أرقام | 2005 |
M |
لإظهار رقم الشهر من السنة | 07 |
d |
لإظهار رقم اليوم من الشهر | 9 |
h |
لإظهار الساعة, بنظام 12 ساعة (1~12) A.M./P.M. |
12 |
H |
لإظهار الساعة في اليوم بنظام 24 ساعة (0~23) |
23 |
m |
لإظهار الدقائق في الساعة | 45 |
s |
لإظهار الثواني في الدقيقة | 36 |
S |
لإظهار الأجزاء في الثانية Millisecond | 458 |
E |
لإظهار إسم اليوم في الأسبوع | Saturday |
D |
لإظهار رقم اليوم في السنة | 360 |
F |
لإظهار عدد تكرار اليوم في الشهر | 3 (third Mon. in May) |
w |
لإظهار رقم الأسبوع في السنة | 34 |
W |
لإظهار رقم الأسبوع في الشهر | 1 |
a |
لإظهار إذا كان الوقت الآن A.M/P.M |
AM |
k |
لإظهار الساعة في اليوم بنظام 24 ساعة (1~24) |
23 |
K |
لإظهار الساعة في اليوم بنظام 12 ساعة (0~11) |
9 |
z |
لإظهار المنطقة الزمنية | EET |
' ' |
لإظهار أي نص | Current Date |
مثال
•سنقوم الآن بإنشاء format جديدة لعرض الوقت.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// date هنا قمنا بإنشاء تاريخ و وضعناه في الكائن
Date date = new Date();
// جديدة لإظهار الوقت format هنا قمنا بإنشاء
SimpleDateFormat sdf = new SimpleDateFormat("'Current Date:' dd/MM/yy 'Current Time:' hh:mm:ss a");
// ثم قمنا بعرض النتيجة format من خلال الدالة date على الـ format هنا قمنا بتطبيق الـ
System.out.println( sdf.format(date) );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Current Date: 22/12/15 Current Time: 07:46:05 PM
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
من خلال الجدول السابق يمكنك معرفة أن الكلاس Date يستخدم إفتراضياً الـ format التالية لعرض التاريخ و الوقت: E MMM d hh:mm:ss zzz Y
مثال
•سنقوم الآن بعرض التاريخ مرتين,الأولى بدون هذه الـ format, و الثانية مع هذه الـ format و لاحظ كيف سنحصل على نفس النتيجة.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// date هنا قمنا بإنشاء تاريخ و وضعناه في الكائن
Date date = new Date();
// إفتراضياً Date التي يستخدمها الكلاس format جديدة لإظهار الوقت و لكننا إستخدمنا الـ format هنا قمنا بإنشاء
SimpleDateFormat sdf = new SimpleDateFormat("E MMM d hh:mm:ss zzz Y");
System.out.println( date ); // عليه format بدون أن نطبق أي Date هنا قمنا بعرض الـ
System.out.println( sdf.format(date) ); // عليه format مع تطبيق الـ Date هنا قمنا بعرض الـ
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Wed Dec 23 07:36:44 EET 2015 Wed Dec 23 07:36:44 EET 2015
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك, لكن التاريخ الأول سيكون نفس التاريخ الثاني دائماً.
تحديد الـ format بواسطة الدالة printf() في جافا
يمكنك أيضاً إستخدام الدالة printf() لتعرض التاريخ و الوقت بالشكل الذي تريده.
كل ما عليك فعله هو وضع %t ثم وضع حرف من الأحرف الموجودة في الجدول التالي.
| الحرف | إستخدامه | مثال |
|---|---|---|
c |
لإظهار التاريخ و الوقت بشكل كامل | Thu Dec 24 13:39:33 EET 2015 |
F |
لإظهار التاريخ بنظام ISO 8601 | 2015-12-24 |
D |
لإظهار التاريخ بنظام U.S. أي month/day/year |
12/24/15 |
T |
لإظهار الوقت بنظام 24 ساعة | 13:40:43 |
r |
لإظهار الوقت بنظام 12 ساعة | 01:40:43 PM |
R |
لإظهار الوقت بنظام 24 ساعة, و بدون إظهار الثواني | 13:40 |
Y |
لإظهار السنة, وتكون مؤلفة من أربع أرقام ( مع إبقاء الأصفار الموجودة على اليسار ) | 2015 |
y |
لإظهار آخر رقمين من السنة ( مع إبقاء الأصفار الموجودة على اليسار ) | 15 |
C |
لإظهار أول رقمين من السنة ( مع إبقاء الأصفار الموجودة على اليسار ) | 20 |
B |
لإظهار إسم الشهر كاملاَ | December |
b |
لإظهار إسم الشهر بشكل مختصر | Dec |
m |
لإظهار الشهر بشكل رقمين ( مع إبقاء الأصفار الموجودة على اليسار ) | 02 |
d |
لإظهار اليوم بشكل رقمين ( مع إبقاء الأصفار الموجودة على اليسار ) | 12 |
e |
لإظهار اليوم بشكل رقمين ( مع إزالة الأصفار الموجودة على اليسار ) | 24 |
A |
لإظهار إسم اليوم بشكل كامل | Thursday |
a |
لإظهار إسم اليوم بشكل مختصر | Thu |
j |
لإظهار رقم اليوم في السنة ( مع إبقاء الأصفار الموجودة على اليسار ) | 358 |
H |
لإظهار الساعة بنظام 24 ساعة ( مع إبقاء الأصفار الموجودة على اليسار ), الرقم يكون بين 00 و 23 | 13 |
k |
لإظهار الساعة بنظام 24 ساعة ( مع إزالة الأصفار الموجودة على اليسار ), الرقم يكون بين 0 و 23 | 13 |
I |
لإظهار الساعة بنظام 12 ساعة ( مع إبقاء الأصفار الموجودة على اليسار ), الرقم يكون بين 01 و 12 | 01 |
l |
لإظهار الساعة بنظام 12 ساعة ( مع إزالة الأصفار الموجودة على اليسار ), الرقم يكون بين 1 و 12 | 1 |
M |
لإظهار الدقائق ( مع إبقاء الأصفار الموجودة على اليسار ) | 02 |
S |
لإظهار الثواني ( مع إبقاء الأصفار الموجودة على اليسار ) | 09 |
L |
لإظهار الثواني بشكل ثلاث أرقام بالـ milliseconds ( مع إبقاء الأصفار الموجودة على اليسار ) | 959 |
N |
لإظهار الثواني بشكل تسعة أرقام بالـ nanoseconds ( مع إبقاء الأصفار الموجودة على اليسار ) | 959000000 |
p |
لإظهار إذا كان الوقت قبل الظهر أو بعد الظهر بأحرف صغيرة | pm |
z |
لإظهار الفارق بين وقت الجهاز و الوقت GMT |
+0200 |
Z |
لإظهار المنطقة الزمنية | EET |
s |
لإظهار عدد الثواني منذ 1970/01/01 00:00:00 GMT |
1450958247 |
Q |
لإظهار عدد الثواني بالـ milliseconds منذ 1970/01/01 00:00:00 GMT |
1450958247680 |
يمكنك أن تعرض التاريخ و الوقت بطرق كثيرة جداً و بعدة أساليب.
المثال الأول
•سنقوم الآن بعرض التاريخ و الوقت بعدة أشكال بـ format نحددها بالدالة printf().
import java.util.Date;
public class Main {
public static void main(String[] args) {
// date هنا قمنا بإنشاء تاريخ و وضعناه في الكائن
Date date = new Date();
// هنا قمنا بعرض التاريخ والوقت
System.out.printf( "Current Date/time: %tc", date );
// هنا قمنا بعرض التاريخ فقط
System.out.printf( "\nCurrent Date: %tF", date );
// هنا قمنا بعرض الوقت فقط
System.out.printf( "\nCurrent time: %tr", date );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Current Date/time: Thu Dec 24 19:03:58 EET 2015 Current Date: 2015-12-24 Current time: 07:03:58 PM
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
المثال الثاني
•سنقوم الآن بعرض الوقت بـ format تتألف من ثلاث أحرف H و M و S.
•أولاً سنقوم بوضع الأحرف الثلاثة ( الأول يشير للساعة, الثاني يشير للدقائق, و الثالث يشير للثواني ).
•ثانياً سنقوم بوضع كائن الـ Date لكل حرف منهم.
•يجب وضع فاصلة قبل كل كائن, و هكذا سيفهم المترجم أن الحرف الأول سيظهر لنا الساعة الموجودة في الكائن الأول, و الحرف الثاني سيظهر لنا الدقائق الموجودة في الكائن الثاني, و الحرف الثالث سيظهر لنا الثواني الموجودة في الكائن الثالث.
import java.util.Date;
public class Main {
public static void main(String[] args) {
// date هنا قمنا بإنشاء تاريخ و وضعناه في الكائن
Date date = new Date();
// هنا قمنا بعرض الوقت فقط
System.out.printf( "Current time: %tH:%tM:%tS", date, date, date );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Current time: 19:03:58
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
لست مضطراً أن تضع الكائن Date لكل حرف كما فعلنا في المثال السابق.
يمكنك وضع أرقام index للأحرف التي ستستخدمها لإنشاء format معينة و هكذا سيصبح حجم الـ format أصغر أيضاً.
يجب وضع الأحرف المستخدمة في الـ format بترتيب معين بحيث تشير للـ Date و الـ String و أي شيء آخر تضعه في هذه الدالة كـ arguments.
رقم الـ index يتم إضافته مباشرةً بعد الرمز % و نضع بعده الرمز $, ثم الحرف t, ثم الحرف الذي نريده من الأحرف الموجودة في الجدول السابق.
أمثلة
إذا كنا نضع index لـ
Dateنعتمد هذا الشكل: % index $ t format
مثال:%2$tAإذا كنا نضع index لـ
Stringنعتمد هذا الشكل: % index $ s
مثال:%1$s
المثال الثالث
•سنقوم الآن بعرض التاريخ الحالي.
•سنقوم بوضع قيمة String في الـ index رقم 1.
•سنقوم بوضع كائن الـ Date في الـ index رقم 2.
•يجب وضع فاصلة قبل كل argument, و هكذا سيتم إعطاء كل argument منهم رقم index.
import java.util.Date;
public class Main {
public static void main(String[] args) {
// date هنا قمنا بإنشاء تاريخ و وضعناه في الكائن
Date date = new Date();
// هنا قمنا بعرض التاريخ فقط
System.out.printf( "%1$s %2$tA %2$te-%2$tm-%2$tY", "Today is:", date );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Today is: Friday 25-12-2015
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
يمكنك أيضاً إستخدام المؤشر < بدل إستخدام index.
المؤشر < يعني أن الـ argument الذي تم استخدامه سابقاً سيعاد استخدامه من جديد.
المثال الرابع
•سنقوم الآن بتنفيذ نفس المثال السابق و لكننا سنستخدم المؤشر < بدل إستخدام index.
import java.util.Date;
public class Main {
public static void main(String[] args) {
// date هنا قمنا بإنشاء تاريخ و وضعناه في الكائن
Date date = new Date();
// هنا قمنا بعرض التاريخ فقط
System.out.printf( "%s %tA %<te-%<tm-%<tY", "Today is:", date );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Today is: Friday 25-12-2015
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
تذكر أن هناك طرق كثيرة يمكنك إعتمادها لطباعة التاريخ و الوقت بالشكل الذي تريده, و هناك العديد من الكلاسات الجاهزة في جافا تمكنك من التعامل مع التاريخ و الوقت.
Javaكونستركتورات الكلاس Date في جافا
تعريفه
الكونستركتور Date يرجع كائن من الكلاس Date يحتوي على التاريخ و الوقت.
يمكنك إستدعائه بطريقتين:
إستداعائه بدون وضع قيمة له كـ argument فيعطيك الوقت الحالي, أي يعطيك نفس الوقت الموجود على جهازك.
إستداعائه مع وضع قيمة له كـ argument, هنا سيعطيك وقت يبدأ من تاريخ
1/1/1970 00:00:00 GMT.
بناؤه
// يمكننا إستدعائه هكذا public Date() // أو هكذا public Date(long millisec)
باراميترات
الـ
millisecيمثل عدد الـ milliseconds الذي سيضاف على هذا التاريخ1/1/1970 00:00:00 GMT.
أي إذا وضعت 0 ستحصل على هذا التاريخ كما هو.
و إذا وضعت 1000 ستضيف ثانية على هذا التاريخ.
و إذا وضعت 2000 ستضيف ثانيتين على هذا التاريخ و هكذا..
قيمة الإرجاع
يرجع كائن من الكلاس Date.
مثال
public class Main {
public static void main(String[] args) {
// هنا قمنا بتخزين الوقت الحالي للجهاز
Date currentDate = new Date();
System.out.println( "Current Date: " + currentDate );
// هنا أضفنا 5 ثواني على التاريخ 00:00:00 1/1/1970
Date specialDate = new Date(5000);
System.out.println( "Special Date: " + specialDate );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Current Date: Sun Dec 20 09:46:01 EET 2015 Special Date: Thu Jan 01 02:00:05 EET 1970
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
Javaالدالة after()
تعريفها
هذه الدالة ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على تاريخ أحدث من تاريخ الـ Date الذي نضعه كـ argument.
بناؤها
public boolean after(Date when)
باراميترات
الـ
whenهو الـDateالذي سيتم مقارنته مع الـDateالذي قام باستدعاء الدالة.
قيمة الإرجاع
ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على تاريخ أحدث من تاريخ الـ Date الذي نضعه كـ argument.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// هنا قمنا بإنشاء تاريخين
Date date1 = new Date(20000);
Date date2 = new Date(40000);
// date2 أحدث من تاريخ الـ date1 هنا سنفحص إذا كان تاريخ الـ
boolean check = date1.after(date2);
System.out.println( "date1 is after date2: " + check ); // هنا قمنا بعرض نتيجة المقارنة
// date1 أحدث من تاريخ الـ date2 هنا سنفحص إذا كان تاريخ الـ
check = date2.after(date1);
System.out.println( "date2 is after date1: " + check ); // هنا قمنا بعرض نتيجة المقارنة
}
}
•سنحصل على النتيجة التالية عند التشغيل.
date1 is after date2: false date2 is after date1: true
Javaالدالة before()
تعريفها
هذه الدالة ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على تاريخ أقدم من تاريخ الـ Date الذي نضعه كـ argument.
بناؤها
public boolean before(Date when)
باراميترات
الـ
whenهو الـDateالذي سيتم مقارنته مع الـDateالذي قام باستدعاء الدالة.
قيمة الإرجاع
ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على تاريخ أقدم من تاريخ الـ Date الذي نضعه كـ argument.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// هنا قمنا بإنشاء تاريخين
Date date1 = new Date(20000);
Date date2 = new Date(40000);
// date2 أقدم من تاريخ الـ date1 هنا سنفحص إذا كان تاريخ الـ
boolean check = date1.before(date2);
System.out.println( "date1 is before date2: " + check ); // هنا قمنا بعرض نتيجة المقارنة
// date1 أقدم من تاريخ الـ date2 هنا سنفحص إذا كان تاريخ الـ
check = date2.before(date1);
System.out.println( "date2 is before date1: " + check ); // هنا قمنا بعرض نتيجة المقارنة
}
}
•سنحصل على النتيجة التالية عند التشغيل.
date1 is before date2: true date2 is before date1: false
Javaالدالة clone()
تعريفها
هذه الدالة ترجعة نسخة ثانية من كائن الـ Date الذي قام باستدعائها.
بناؤها
public Object clone()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع كائن من الكلاس Date.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// Date هنا قمنا بإنشاء كائن نوعه
Date date1 = new Date();
// هنا قمنا بإنشاء نسخة عنه
Object date2 = date1.clone();
System.out.println( "Original Date: " + date1 ); // هنا قمنا بعرض الكائن الأصلي
System.out.println( "Cloned Date: " + date2 ); // هنا قمنا بعرض النسخة من هذا الكائن
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Original Date: Mon Dec 21 20:26:14 EET 2015 Cloned Date: Mon Dec 21 20:26:14 EET 2015
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
Javaالدالة compareTo()
تعريفها
هذه الدالة تقارن كائن الـ Date الذي قام باستدعائها مع كائن الـ Date الذي نضعه كـ argument.
بناؤها
public int compareTo(Date anotherDate)
باراميترات
الـ
anotherDateهو الـdateالذي سيتم مقارنته مع الـdateالذي قام باستدعاء الدالة.
قيمة الإرجاع
ترجع 0 إذا كانت قيمة الـ
Dateالذي قام باستدعائها تساوي قيمة التاريخ التي نضعها كـ argument.ترجع 1 إذا كانت قيمة الـ
Dateالذي قام باستدعائها أحدث من قيمة التاريخ التي نضعها كـ argument.ترجع 1- إذا كانت قيمة الـ
Dateالذي قام باستدعائها أقدم من قيمة التاريخ التي نضعها كـ argument.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// Date هنا قمنا بإنشاء ثلاث كائنات نوعهم
Date date1 = new Date(0);
Date date2 = new Date(5000);
Date date3 = date1;
int comparison1 = date1.compareTo(date2); // date2 مع date1 هنا قمنا بمقارنة
int comparison2 = date2.compareTo(date1); // date1 مع date2 هنا قمنا بمقارنة
int comparison3 = date1.compareTo(date3); // date1 مع date3 هنا قمنا بمقارنة
// هنا قمنا بعرض نتائج المقارنات الثلالثة
System.out.println( "Comparison1 result: " + comparison1 );
System.out.println( "Comparison2 result: " + comparison2 );
System.out.println( "Comparison3 result: " + comparison3 );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
Comparison1 result: -1 Comparison2 result: 1 Comparison3 result: 0
Javaالدالة equals()
تعريفها
هذه الدالة ترجع true إذا كان كائن الـ Date الذي قام باستدعائها يحتوي على نفس قيمة الكائن الذي نضعه كـ argument.
بناؤها
public boolean equals(Object obj)
باراميترات
الـ
objهو الكائن الذي نريد مقارنته مع الـdateالذي قام باستدعاء الدالة.
قيمة الإرجاع
ترجع
trueإذا كان كائن الـDateالذي قام باستدعائها يحتوي على نفس قيمة الكائن الذي نضعه كـ argument.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// Date هنا قمنا بإنشاء ثلاثة كائنات نوعهم
Date date1 = new Date(0);
Date date2 = new Date(5000);
Date date3 = date1;
boolean check1 = date1.equals(date2); // date2 لا تساوي date1 لأن false هنا سترجع
boolean check2 = date1.equals(date3); // date3 تساوي date1 لأن true هنا سترجع
// هنا قمنا بعرض نتائج الإختبارات
System.out.println( "check1 result: " + check1 );
System.out.println( "check2 result: " + check2 );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
check1 result: false check2 result: true
Javaالدالة getTime()
تعريفها
هذه الدالة ترجع عدد الـ milliseconds من تاريخ 1/1/1970 إلى تاريخ الوقت الذي تم به استدعائها.
بناؤها
public long getTime()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع عدد الـ milliseconds من تاريخ 1/1/1970 إلى تاريخ الوقت الذي تم به استدعاء هذه الدالة.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// هنا قمنا بإنشاء تاريخ
Date date = new Date();
// date هنا قمنا بتخزين عدد الثواني بين 1/1/1970 و بين التاريخ المخزن في
long secondsPassed = date.getTime();
// هنا قمنا بعرض عدد الثواني الموجود بين التاريخين
System.out.println( "The number of seconds from 1/1/1970 to " +date+ " is: " +secondsPassed );
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
The number of seconds from 1/1/1970 to Tue Dec 22 09:41:37 EET 2015 is: 1450770097706
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
Javaالدالة setTime()
تعريفها
هذه الدالة تستخدم لتحديد الوقت إعتباراً من تاريخ 1/1/1970, العدد الذي نضعه يمثل عدد الثواني بالـ milliseconds.
ملاحظة: بمجرد إستخدام هذه الدالة ستتحول قيمة التاريخ و الوقت الذي قام باستدعائها إلى1/1/1970 00:00:00 GMT.
بناؤها
public void setTime(long millisec)
باراميترات
الـ
millisecيمثل عدد الـ milliseconds الذي سيضاف على التاريخ1/1/1970 00:00:00 GMT.
قيمة الإرجاع
لا ترجع قيمة.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
// هنا قمنا بإنشاء تاريخ
Date date = new Date();
// هنا أضفنا 10 ثواني على التاريخ 1/1/1970
date.setTime(10000);
// هنا قمنا بعرض قيمة التاريخ
System.out.println( "Time after setting: " +date );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
Time after setting: Thu Jan 01 02:00:10 EET 1970
Javaالدالة hashCode()
تعريفها
هذه الدالة ترجع hash code للـ Date الذي قام باستدعائها.
بناؤها
public int hashCode()
باراميترات
هذه الدالة الإفتراضية و هي لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع قيمة الـ hash code للـ Date الذي قام باستدعائها.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date currentDate = new Date(); // هنا قمنا بتخزين الوقت الحالي للجهاز
long hash = currentDate.toString().hashCode(); // hashcode هنا قمنا بتحويل قيمة الوقت لنص ثم قمنا بتحويلها لـ
System.out.println( "Current Date: " + currentDate ); // هنا قمنا بعرض الوقت الحالي
System.out.println( "Current Date in hashcode: " + hash ); // للوقت الحالي hashcode هنا قمنا بعرض قيمة الـ
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Current Date: Mon Dec 21 12:50:07 EET 2015 Current Date in hashcode: 1833992306
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.
Javaالدالة toString()
تعريفها
هذه الدالة تحول قيمة الـ Date لقيمة نوعها String و ترجعها.
الأمر الذي سيسمح لنا بمعاملة الوقت كنص و الإستفادة من دوال الكلاس String.
بناؤها
public String toString()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع كائن نوعه String.
مثال
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date currentDate = new Date(); // هنا قمنا بتخزين الوقت الحالي للجهاز
String s = currentDate.toString(); // s هنا قمنا بتخزين الوقت كنص في
System.out.println( "Current Date: " + s ); // s هنا قمنا بعرض قيمة الـ
}
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Current Date: Sun Dec 20 14:05:15 EET 2015
•هذه النتيجة تتغير حسب الوقت الحالي لجهازك.


