في برمجة Java ، لا يمكن تعلم بعض المعرفة إلا من خلال مواصفات اللغة أو مستندات API القياسية. هذا المقال يسردها لك.
1. الإدراك
1. الآن يساوي ()
فئة شخص {اسم السلسلة ؛ int عيد ميلاد بايت [] الخام ؛ منطقية عامة تساوي (كائن obj) {if (! obj مثيل الشخص) إرجاع خطأ ؛ شخص آخر = (شخص) OBJ ؛ return name.equals (other.name) && pirthyyear == Other.Birthyear && arrays.equals (Raw ، other.raw) ؛ } public int hashcode () {...}} 2. Hashcode ()
الفئة شخص {string a ؛ الكائن ب ؛ بايت ج ؛ int [] d ؛ public int hashcode () {return A.HashCode () + B.HashCode () + c + arrays.hashCode (d) ؛ } منطقية عامة متساوية (كائن O) {...}}3. تنفيذ المقارنة ()
شخص الفئة ينفذ <profern> {String FirstName ؛ سلسلة العائلة ؛ عيد ميلاد // قارن بواسطة FirstName ، Break Ries by LastName ، أخيراً ، كسر العلاقات من قبل PrinctDate Public int compareto (الشخص الآخر) {if (firstName.compareto (other.firstName)! = 0) return firstname.compareto (other.firstName) ؛ آخر if (lastName.compareto (other.lastname)! = 0) return lastName.comPareto (other.lastname) ؛ وإلا وإلا عودة أخرى 0 ؛ }} قم دائمًا بتنفيذ الإصدار العام مقارنةً بدلا من النوع البدائي. لأن هذا يمكن أن يحفظ حجم الرمز ويقلل من المتاعب غير الضرورية.
ما عليك سوى الاهتمام بالعلامات (السلبية/الصفر/الإيجابية) التي تُرجع النتيجة ، لا يهم حجمها.
تشبه تنفيذ Comparator.compare () هذا واحد.
4. تنفيذ استنساخ ()
قيم الفئة تنفذ استنساخ {string abc ؛ مزدوج فو int [] أشرطة ؛ تاريخ التعاقد ؛ القيم العامة clone () {try {dorder result = (values) super.clone () ؛ result.bars = result.bars.clone () ؛ result.hired = result.hired.clone () ؛ نتيجة العودة } catch (clonenotsupportedException e) {// مستحيل رمي تأكيد جديد (e) ؛ }}}2. الاختبار الوقائي
1. قيمة التحقق الدفاعية
int factorial (int n) {if (n <0) رمي غير alfictalargumentException جديد ("غير محدد") ؛ وإلا آخر إذا (n == 0) العودة 1 ؛ عودة أخرى n * factorial (n - 1) ؛} 2. كائنات الاختبار الوقائي
int findIndEx (list <string> list ، string target) {if (list == null || target == null) رمي nullpointerxception () ؛ ...}3. مؤشر صفيف الكشف الوقائي
void frob (byte [] b ، int index) {if (b == null) رمي nullpointerxception () ؛ if (index <0 || index> = B.Length) رمي indexoutofboundsexception () ؛ ...}لا تعتقد أن مؤشر الصفيف المعطى لن يعبر الحدود. للكشف عنها بشكل صريح.
4. فاصل صفيف الكشف الوقائي
void frob (byte [] b ، int of ، int len) {if (b == null) رمي nullpointerxception () ؛ if (OFF <0 || OFF> B.Length || len <0 || ...}لا تعتقد أن الفاصل الزمني للمصفوفة المعطى (على سبيل المثال ، بدءًا من إيقاف عناصر LEN) لن يتجاوز الحدود. للكشف عنها بشكل صريح.
3. صفيف
1. ملء عناصر الصفيف
باستخدام الحلقات:
// املأ كل عنصر من عناصر الصفيف 'a' مع 123byte [] a = (...) ؛ لـ (int i = 0 ؛ i <a.length ؛ i ++) a [i] = 123 ؛ (تفضيلية) طرق لاستخدام المكتبة القياسية: Arrays.Fill (A ، (Byte) 123) ؛
2. انسخ عنصر صفيف في نطاق
باستخدام الحلقات:
// نسخ 8 عناصر من Array 'A' ابتداء من الإزاحة 3 // إلى صفيف 'B' بدءًا من الإزاحة 6 ، // على افتراض "A" و "B" صفان متميزان [] A = (...) ؛ Byte [] B = (...) ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) b [6 + i] = a [3 + i] ؛ (تفضيلية) طرق لاستخدام المكتبة القياسية: System.arrayCopy (A ، 3 ، B ، 6 ، 8) ؛
3. اضبط حجم الصفيف
استخدم الحلقات (التحجيم):
// اجعل الصفيف 'a' أكبر إلى newlenbyte [] a = (...) ؛ byte [] b = new byte [newlen] ؛ for (int i = 0 ؛ i <a.length ؛ i ++) // يسير إلى طول b [i] = a [i] ؛ a = b ؛
استخدم الحلقات (تقليل الحجم):
// اصنع صفيف "A 'أصغر إلى newlenbyte [] a = (...) ؛ byte [] b = new byte [newlen] ؛ for (int i = 0 ؛ i <b.length ؛ i ++) // يسير إلى طول b b [i] = a [i] ؛ a = b ؛
(تفضيلية) طرق لاستخدام المكتبة القياسية:
1a = arrays.copyof (a ، newlen) ؛
4. التعبئة 4 بايت في int
int packbigendian (byte [] b) {return (b [0] & 0xff) << 24 | (B [1] & 0xff) << 16 | (B [2] & 0xff) << 8 | (B [3] & 0xff) << 0 ؛} int packlittleendian (byte [] b) {return (b [0] & 0xff) << 0 | (B [1] & 0xff) << 8 | (B [2] & 0xff) << 16 | (B [3] & 0xff) << 24 ؛}5. تحلل int إلى 4 بايت
byte [] unpackbigendian (int x) {return new byte [] {(byte) (x >>> 24) ، (byte) (x >>> 16) ، (byte) (x >>> 8) ، (byte) (x >>> 0)} ؛} byte [] (بايت) (x >>> 8) ، (بايت) (x >>> 16) ، (بايت) (x >>> 24)} ؛}استخدم دائمًا مشغل التحول الأيمن غير الموقّع (>>>) للف البتات ، لا تستخدم مشغل التحول الأيمن (>>).
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.